1. MongoDB数据库定位
* OLTP数据库
* 原则上Oracle和MySQL能做得事情,MongoDB都能做(包括ACID事务)
* 优点:横向扩展能力,数据量或并发量增加时候可以自动扩展
* 优点:灵活模型,适合迭代开发,数据模型多变场景
* 优点:JSON数据结构,适合微服务/REST API
2. 基于功能选择MongoDB

| | MongoDB | 关系型数据库 |
|-------------------|--------------|------------------------------------|
| 亿级别以上数据量 | 轻松支持 | 要努力一下,分库分表 |
| 灵活表结构 | 轻松支持 | Entity Key/Value表,关联查询比较痛苦 |
| 高并发读 | 轻松支持 | 需要优化 |
| 高并发写 | 轻松支持 | 需要优化 |
| 跨地区集群 | 轻松支持 | 需要定制方案 |
| 分片集群 | 轻松支持 | 需要中间件 |
| 地理位置查询 | 比较完整的地理位置 | PG还可以,其他数据库略麻烦 |
| 聚合计算 | 功能强大 | 使用Group By,能力有限 |
| 异构数据 | 轻松支持 | 使用EKV属性表 |
| 大宽表 | 轻松支持 | 性能受限 |

3. 基于场景选择MongoDB
* 移动APP、小程序、电商、内容管理、物联网、SaaS应用、主机分流、实时分析、关系型迁移
4. 移动应用
* 场景特点
* 基于REST API / JSON
* 快速迭代,数据结构变化频繁
* 地理位置功能
* 爆发增长可能性
* 高可用
* MongoDB选型考量
* 文档模型可以支持不同的结构
* 原生地理位置功能
* 横向扩展能力支撑爆发增长
* 复制集机制快速提供高可用
* 膜拜单车/Keep/ADP
5. 商品信息
* 场景特点
* 商品信息包罗万象
* 商品的属性不同品类差异很大
* 数据库模式设计困难
* MongoDB选型考量
* 文档模型可以集成不同商品属性
* 可变模型适合迭代
* 京东商城 / 小红书 / GAP
6. 内容管理
* 场景特点
* 内容数据多样,文本,图片,视频
* 扩展困难,数据量爆发增长
* MongoDB选型考量
* JSON结构可以支持非结构化数据
* 分片架构可以解决扩展问题
* Adobe AEM / Sitecore
7. 物联网
* 场景特点
* 传感器的数据结构往往半结构化
* 传感器数量很大,采集频繁
* 数据量很容易增长到数亿到百亿
* MongoDB选型考量
* JSON结构可以支持半结构化数据
* 使用分片能力支撑海量数据
* JSON数据更加容易和其他系统通过REST API进行集成
* 华为 / Bosch / Mindsphere
8. SaaS应用
* 场景特点
* 多租户模式,需要服务很多客户
* 需求多变,迭代压力大
* 数据增长快
* MongoDB选项考量
* 无模式数据库,适合快速迭代
* 水平扩展能力可以支撑大量用户增长
* ADP / Teambition
9. 主机分流
* 场景特点
* 金融行业传统采用IBM或小型机
* 传统瀑布开发流程长成本高
* 结构不易变,难于适应新需求
* 根据某银行的统计,99%的数据库操作为读流量
* 基于MIPS付费,读流量成本高
* MongoDB选型考量
* 使用实时同步机制,将数据同步出来到MongoDB
* 使用MongoDB的高性能查询能力来支撑业务的读操作
* 相比于关系型数据库,更加容易迁入数据并构建成JSON模型进行API服务
10. 实时分析
* 场景特点
* 流数据计算
* 快速计算,秒级返回
* MongoDB选型考量
* 使用MongoDB缓存机制,可以利用内存计算加速
* 使用MongoDB聚合框架,实现分析功能
* 使用微分片架构的并发计算来大量缩减计算时间
11. 关系型数据库替换
* 场景特点
* 基于Oracle / MySQL / SQLServer的历史应用
* 数据量增长或者使用者变多以后性能变慢
* 分库分表需要应用配合
* 结构死板,增加新需求复杂困难
* MongoDB选型考量
* 高性能高并发的数据库性能
* 无需应用分库分表,集群自动解决扩容问题
* 动态模型适合快速开发
* 头条 / 网易 / 百度 / 东航 / 中国银行

MongoDB应用场景及选型的更多相关文章

  1. mongodb 使用场景和不使用场景

    1.mongodb介绍 MongoDB (名称来自"humongous") 是一个可扩展的高性能,开源,模式自由,面向文档的数据库.它使用C++编写.MongoDB特点: a.面向 ...

  2. MongoDB应用场景

    数据记录如下 /* 1 */ { "_id" : ObjectId("5b56dd19a171d7e9bfb03ac1"), "name" ...

  3. MongoDB使用场景和局限 (转)

    MongoDB的使用场景: 1.Web应用程序.文档能表示丰富的数据结构,建模相同数据库所需的集合数量通常会比使用完全正规化关系型数据库的数据表数量要少.动态查询和二级索引能让你轻松的实现SQL开发者 ...

  4. mongodb使用场景及与mysql区别

    MySQL是关系型数据库. 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺 ...

  5. mongodb入门-关系型RDMS数据库对比及适用场景

    引言 最近工作接触到了mongodb数据库,记录下个人对其的理解和使用情况.虽然mongodb 出来的时间已经不短,但是相对mysql mssql oracle 这样传统的关系型数据库来说还是比较年轻 ...

  6. Redis和MongoDB的区别以及应用场景

    Redis和MongoDB的区别以及应用场景 项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB. 最近又想起为什么用MongoDB ...

  7. MongoDB、Hbase、Redis等NoSQL优劣势、应用场景

    NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻.在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数 ...

  8. MongoDB 比较适用哪些业务场景?

      在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨的技术话题,有近5000人关注了该话题讨论,这里就 MongoDB 的使用场景做个简单的总结,谈谈什么场景该用 MongoDB ...

  9. 谈谈mongodb,mysql的区别和具体应用场景

    最近对数据库比较感兴趣,于是就去研究了下部分相关热门的数据库. MySQL 关系型数据库. 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数 ...

随机推荐

  1. Vue API 3 (模板语法 ,指令)

    条件 v-if v-if 指令用于条件性地渲染一块内容.这块内容只会在指令的表达式返回 truthy 值的时候被渲染. v-show v-show 指令也是用于根据条件展示一块内容.v-show 只是 ...

  2. mysql之join浅析

    1.可以使用join吗?使用join有什么问题呢?-- >超过3个表不使用join,笛卡尔积问题 -->这些问题是怎么造成的呢? 如果可以使用 Index Nested-Loop Join ...

  3. 访问Github速度很慢以及解决方法(系统通用)

    原因分析1,CDN,Content Distribute Network,可以直译成内容分发网络,CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数据时,不需要直接从源站获取,通过CD ...

  4. 【dva】model中effects函数的解析

    结构 effects: { *pageQuery({ payload = {} }, { select, call, put }) { const res = yield call(pageQuery ...

  5. ciscn_2019_s_3

    拿到题目例行检查 64位程序开启了nx保护,将程序放入ida 看到没有system函数第一时间想到的就是泄露libc来做,后来才知道是我学识尚浅,需要用execve函数来做 进入main发现跳转到vu ...

  6. SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置

      SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...

  7. LuoguB2078 含 k 个 3 的数 题解

    Content 给定一个数 \(n\),判断其数位中是否恰好有 \(k\) 个 \(3\). 数据范围:\(1<n\leqslant 10^{15}\),\(1<k\leqslant 15 ...

  8. java 数据类型:Stream流 对象转换为集合collect(Collectors.toList()) ;常用方法count,limit,skip,concat,max,min

    集合对象.stream() 获取流对象,对元素批处理(不改变原集合) 集合元素循环除了用for循环取出,还有更优雅的方式.forEach 示例List集合获取Stream对象进行元素批处理 impor ...

  9. Java面向对象之 接口: [修饰符] interface 接口名 {...};子接口:[修饰符] interface 接口名 extends 父接口,父接口2...{...}

    1.什么是接口? 类比抽象类,把功能或者特性类似的一类 抽象的更彻底,可以提炼出更加特殊的"抽象类"----接口 2.如何定义接口 语法:  [修饰符] interface 接口名 ...

  10. 权限设计的idea

    1.角色增加两个字段,一级部门(如钻井事业部),党组织角色(或者团委在线角色)当然或者是其他的团委在线角色 2.增加一张表,标示在线模块(如党组织在线,团委在线,工会在线,纪检在线), 3.菜单(栏目 ...