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选型考量
    * 高性能高并发的数据库性能
    * 无需应用分库分表,集群自动解决扩容问题
    * 动态模型适合快速开发
    * 头条 / 网易 / 百度 / 东航 / 中国银行
  • 相关阅读:
    那些陌生的C++关键字
    从实现装饰者模式中思考C++指针和引用的选择
    单例模式(Singleton)
    命令模式(Command)
    抽象工厂模式(Abstract Factory)
    《Effective C++》读书摘要
    桥接模式(Bridge)
    适配器模式(Adapter)
    设计模式学习心得
    黑客常用WinAPI函数整理
  • 原文地址:https://www.cnblogs.com/w3liu/p/13028172.html
Copyright © 2011-2022 走看看