MongoDB目前核心优势
『灵活模式』+ 『高可用性』 + 『可扩展性』
通过json文档来实现灵活模式
通过复制集来保证高可用
通过Sharded cluster来保证可扩展性
BSON
1.在JSON中,要跳过一个文档进行数据读取,需要对此文档进行扫描才行,需要进行麻烦的数据结构匹配,遍历比较慢
BSON针对JSON的一大改进就是将JSON的每一个元素的长度存在元素的头部,这样你只需要读取到元素长度就能直接seek到指定的点上进行读取了。
2.MongoDB优化:
(1) 由于内存与数据文件的映射
(2) 在更新或者获取Document的某一个字段时,如果需要先读取其前面的所有字段,会导致物理内存由于读操作被加载到不必要的字段上,导致资源的不合理分配。
(3) 而采用BSON只需要读到相应的位置然后跨过无用内容读取需要内容即可。
3. MongoDB=JSON + Indexes
MongoDB支持json格式的文档进行bson优化
和关系型数据库对比
参数参考
架构
1.复制集和主从
强烈建议使用副本集模式(哪怕是单机副本集)
启用副本集在参数中添加:
sharding:
#configsvr or shardsvr
clusterRole: shardsvr
方便未来使之成为集群环境
2. 集群
(1) 分片适用场景
a. 服务器磁盘不够用
b.单个mongod不能满足日益频繁写请求
c.将大量数据存放于内存中提高性能
比如,如下集合
(2) 集群架构
Mongodb不适用场景
高度事务性系统,比如银行系统。传统的关系型数据库眼下还是更适用于大量原子性复杂事务的应用程序;
商业智能应用,针对特定问题BI,产生高度优化的查询方式,对于此类应用,数据仓库可能是更合适的选择;
复杂的跨表级联查询(多表join)。
MongoDB适用场景
非事务并且关联性集合不