zoukankan      html  css  js  c++  java
  • MongoDB应用场景及选型

    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选型考量
    * 高性能高并发的数据库性能
    * 无需应用分库分表,集群自动解决扩容问题
    * 动态模型适合快速开发
    * 头条 / 网易 / 百度 / 东航 / 中国银行
  • 相关阅读:
    UVa OJ 148 Anagram checker (回文构词检测)
    UVa OJ 134 LoglanA Logical Language (Loglan逻辑语言)
    平面内两条线段的位置关系(相交)判定与交点求解
    UVa OJ 130 Roman Roulette (罗马轮盘赌)
    UVa OJ 135 No Rectangles (没有矩形)
    混合函数继承方式构造函数
    html5基础(第一天)
    js中substr,substring,indexOf,lastIndexOf,split等的用法
    css的textindent属性实现段落第一行缩进
    普通的css普通的描边字
  • 原文地址:https://www.cnblogs.com/w3liu/p/13028172.html
Copyright © 2011-2022 走看看