大数跨境
0
0

MongoDB特性

MongoDB特性 云容灾备份安全治理
2018-12-12
2

MongoDB数据存储格式

JSON格式

  JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。MongoDB 使用JSON(JavaScript ObjectNotation)文档存储记录。JSON数据库语句可以容易被解析。Web 应用大量使用,NAME-VALUE 配对

 BSON格式

  BSON是由10gen开发的一个数据格式,目前主要用于MongoDB中,是MongoDB的数据存储格式。BSON基于JSON格式,选择JSON进行改造的原因主要是JSON的通用性及JSON的schemaless的特性。 二进制的JSON,JSON文档的二进制编码存储格式。BSON有JSON没有的Date和BinData。MongoDB中document以BSON形式存放

例如:

> db.meeting.insert({meeting:“M1 June",Date:"2018-01-06"});

MongoDB的优势

    📢 MongoDB是开源产品

    📢 On GitHub Url:https://github.com/mongodb

    📢  Licensed under the AGPL,有开源的社区版本

    📢 起源& 赞助by MongoDB公司,提供商业版licenses 许可

     这些优势造就mongodb的丰富的功能:JSON 文档模型、动态的数据模式、二级索引强大、查询功能、自动分片、水平扩展、自动复制、高可用、文本搜索、企业级安全、聚合框架MapReduce、大文件存储GridFS

高可用的复制集群

自动复制和故障切换

多数据中心支持滚动维护无需关机支持最多50个成员

水平扩展

这种方式是目前构架上的主流形式,指的是通过增加服务器数量来对系统扩容。在这样的构架下,单台服务器的配置并不会很高,可能是配置比较低、很廉价的 PC,每台机器承载着系统的一个子集,所有机器服务器组成的集群会比单体服务器提供更强大、高效的系统容载量。

 这样的问题是系统构架会比单体服务器复杂,搭建、维护都要求更高的技术背景。分片集群架构如下图所示:

各存储引擎的对比


MySQL InnoDB

MySQL NDB

Oracle

MongoDB MAPI

MongoDB WiredTiger

事务

YES

YES

ES

NO

NO

锁粒度

ROW-level

ROW-level

ROW-level

Collection-level

Document-level

Geospatial

YES

YES

YES

YES

YES

MVCC

YES

NO

YES

NO

NO

Replication

YES

YES

YES

YES

YES

外键

YES

YES(From 7.3)

YES

NO

NO

数据库集群

NO

YES

YES

YES

YES

B-TREE索引

YES

YES

YES

YES

YES

全文检索

YES

NO

YES

YES

YES

数据压缩

YES

NO

YES

NO

YES

存储限制

64TB

384EB

NO

NO

NO

表分区

YES

YES

YES

YES (分片)

YES (分片)

数据库功能和性能对比

由下图可以看出MongoDB数据库的性能扩展能力及功能都较好,都能够在数据库中,站立一足之地。

  MongoDB适用场景

  网站数据、缓存等大尺寸、低价值的数据

  在高伸缩性的场景,用于对象及JSON数据的存储。

 MongoDB 慎用场景

慎用场景

原因

PB 数据持久存储大数据分析数据湖

HadoopSpark提供更多分析运算功能和工具,并行计算能力更强

MongoDB + Hadoop/Spark

搜索场景:文档有几十个字段,需要按照任意字段搜索并排序限制等

不建索引查询太慢,索引太多影响写入及更新操作

ERPCRM或者类似复杂应用,几十上百个对象互相关联

关联支持较弱,事务较弱

需要参与远程事务,或者需要跨表,跨文档原子性更新的

MongoDB  事务支持仅限于本机的单文档事务

100% 写可用:任何时间写入不能停

MongoDB换主节点时候会有短暂的不可写设计所限

什么时候该MongDB 

应用特征

Yes/No?

我的数据量是有亿万级或者需要不断扩容


需要2000-3000以上的读写每秒


新应用,需求会变,数据模型无法确定


我需要整合多个外部数据源


我的系统需要99.999%高可用


我的系统需要大量的地理位置查询


我的系统需要提供最小的latency


我要管理的主要数据对象<10


在上面的表格中进行选择,但有1个yes的时候:可以考虑MongoDB;当有2个以上yes的时候:不会后悔的选择!


【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读5.3k
粉丝0
内容2.2k