《大数据存储:MongoDB实战指南》一1.6 MongoDB特点

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

本节书摘来异步社区《大数据存储:MongoDB实战指南》一书中的第1章,第1.6节,作者: 郭远威 , 彭文波 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.6 MongoDB特点

大数据存储:MongoDB实战指南
它的存储模型与关系数据库的比较如表1-1所示。


1_1


关系数据库中最基本的单元是行,而MongoDB中最基本存储单元是document,典型结构如下所示。

{
"_id" : ObjectId("51e0c391820fdb628ad4635a"),
"author" : { "name" : "Jordan","email" : "Jordan@123.com" },
"postcontent" : "jordan is the god of basketball",
"comments" : [ 
             {"user" : "xiaoming", "text" : "great player"},
             { "user" : "xiaoliang", "text" : "nice action" }
           ]
}

它用与JSON格式类似的键值对来存储(在MongoDB中叫BSON对象),其中值的数据类型有常见的字符串、数字、日期,还可以是BSON对象、数组以及数组的元素,也可以是BSON对象,通过这种嵌套的方式,使MongoDB的数据类型变得相当丰富。

MongoDB与传统关系数据库还有一个重大区别就是:可扩展的表结构。也就是说collection(表)中的document(一行记录)所拥有的字段(列)是可以变化的,下面文档对象document(一行记录)比上面列出的文档对象document(一行记录)多一个time字段,但它们可以共存在同一个collection(表)中。

{
"_id" : ObjectId("51e0c391820fdb628ad4635a"),
"author" : { "name" : "Jordan","email" : "Jordan@123.com" },
"postcontent" : "jordan is the god of basketball",
"comments" : [
             {"user" : "xiaoming", "text" : "great player"},
             { "user" : "xiaoliang", "text" : "nice action" }
           ],
"time": "2013-07-13"
}

MongoDB查询语句不是按照SQL的标准来开发的,它围绕JSON这种特殊格式的文档型存储模型开发了一套自己的查询体系,这就是现在非常流行的NoSQL体系。关系数据库中常用的SQL语句在MongoDB中都有对应的解决方案。当然也有例外,MongoDB不支持JOIN语句。我们知道传统关系数据库中JOIN操作可能会产生笛卡尔积的虚拟表,消耗较多系统资源,而MongoDB的文档对象集合collection可以是任何结构,我们可以通过设计较好的数据模型尽量避开这样的操作需求。如果真的需要从多个collection(表)中检索数据,那我们可以通过多次查询得到。

在关系数据库中经常用到的group by等分组聚集函数,在MongoDB中也有,而且MongoDB提供了更加强大的MapReduce方案(GOOGLE提出的并行编程),为海量数据的统计、分析提供了便利。

MongoDB支持日志功能Journaling,对数据库的增、删、改操作会记录在日志文件中。MongoDB每100ms将内存中的数据刷到磁盘上,如果意外停机,在数据库重新启动时,MongoDB能通过Journaling日志功能恢复。

MongoDB支持复制集(Replset),一个复制集在生产环境中最少需要3台独立的机器(测试的时候为了方便可能都部署在一台机器上),一台作主节点(primary),一台作次节点(secondary),一台作仲裁节点(只负责选出主节点),备份、自动故障转移,这些特性都是复制集支持的。

MongoDB支持自动分片Sharding,分片的功能实现海量数据的分布式存储,分片通常与复制集配合起来使用,实现读写分离、负载均衡,当然如何选择片键是实现分片功能的关键。如何实现读写分离我们后面会详细分析。

总之,MongoDB最吸引人的地方应该就是自由的表结构、MapReduce、分片、复制集,通过这些功能实现海量数据的存储、高效地读写以及数据的分析。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
6月前
|
监控 NoSQL 大数据
【MongoDB】Replica 频繁插入大数据的问题
【4月更文挑战第2天】【MongoDB】Replica 频繁插入大数据的问题
|
3月前
|
运维 监控 NoSQL
【MongoDB 复制集秘籍】Secondary 同步慢怎么办?深度解析与实战指南,让你的数据库飞速同步!
【8月更文挑战第24天】本文通过一个具体案例探讨了MongoDB复制集中Secondary成员同步缓慢的问题。现象表现为数据延迟增加,影响业务运行。经分析,可能的原因包括硬件资源不足、网络状况不佳、复制日志错误等。解决策略涵盖优化硬件(如增加内存、升级CPU)、调整网络配置以减少延迟以及优化MongoDB配置(例如调整`oplogSize`、启用压缩)。通过这些方法可有效提升同步效率,保证系统的稳定性和性能。
85 4
|
3月前
|
JSON NoSQL MongoDB
MongoDB Schema设计实战指南:优化数据结构,提升查询性能与数据一致性
【8月更文挑战第24天】MongoDB是一款领先的NoSQL数据库,其灵活的文档模型突破了传统关系型数据库的限制。它允许自定义数据结构,适应多样化的数据需求。设计MongoDB的Schema时需考虑数据访问模式、一致性需求及性能因素。设计原则强调简洁性、查询优化与合理使用索引。例如,在构建博客系统时,可以通过精心设计文章和用户的集合结构来提高查询效率并确保数据一致性。正确设计能够充分发挥MongoDB的优势,实现高效的数据管理。
56 3
|
3月前
|
监控 NoSQL 大数据
【MongoDB复制集瓶颈】高频大数据写入引发的灾难,如何破局?
【8月更文挑战第24天】在MongoDB复制集中,主节点处理所有写请求,从节点通过复制保持数据一致性。但在大量高频数据插入场景中,会出现数据延迟增加、系统资源过度消耗、复制队列积压及从节点性能不足等问题,影响集群性能与稳定性。本文分析这些问题,并提出包括优化写入操作、调整写入关注级别、采用分片技术、提升从节点性能以及持续监控调优在内的解决方案,以确保MongoDB复制集高效稳定运行。
64 2
|
3月前
|
安全 C# 数据安全/隐私保护
WPF安全加固全攻略:从数据绑定到网络通信,多维度防范让你的应用固若金汤,抵御各类攻击
【8月更文挑战第31天】安全性是WPF应用程序开发中不可或缺的一部分。本文从技术角度探讨了WPF应用面临的多种安全威胁及防护措施。通过严格验证绑定数据、限制资源加载来源、实施基于角色的权限管理和使用加密技术保障网络通信安全,可有效提升应用安全性,增强用户信任。例如,使用HTML编码防止XSS攻击、检查资源签名确保其可信度、定义安全策略限制文件访问权限,以及采用HTTPS和加密算法保护数据传输。这些措施有助于全面保障WPF应用的安全性。
51 0
|
3月前
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
79 0
|
3月前
|
C# UED 开发者
WPF与性能优化:掌握这些核心技巧,让你的应用从卡顿到丝滑,彻底告别延迟,实现响应速度质的飞跃——从布局到动画全面剖析与实例演示
【8月更文挑战第31天】本文通过对比优化前后的方法,详细探讨了提升WPF应用响应速度的策略。文章首先分析了常见的性能瓶颈,如复杂的XAML布局、耗时的事件处理、不当的数据绑定及繁重的动画效果。接着,通过具体示例展示了如何简化XAML结构、使用后台线程处理事件、调整数据绑定设置以及利用DirectX优化动画,从而有效提升应用性能。通过这些优化措施,WPF应用将更加流畅,用户体验也将得到显著改善。
187 0
|
5月前
|
分布式计算 DataWorks NoSQL
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决
|
6月前
|
存储 NoSQL 大数据
【MongoDB 专栏】MongoDB 在大数据场景下的应用
【5月更文挑战第11天】MongoDB,适用于大数据时代,以其灵活数据模型、高可扩展性和快速性能在大数据场景中脱颖而出。它处理海量、多类型数据,支持高并发,并在数据分析、日志处理、内容管理和物联网应用中广泛应用。电商和互联网公司的案例展示了其在扩展性和业务适应性上的优势,但同时也面临数据一致性、资源管理、数据安全和性能优化的挑战。
632 1
【MongoDB 专栏】MongoDB 在大数据场景下的应用
|
5月前
|
存储 数据采集 NoSQL
DTS在迁移大数据量的MongoDB数据库时如何保证数据的准确性和完整性?
【6月更文挑战第4天】DTS在迁移大数据量的MongoDB数据库时如何保证数据的准确性和完整性?
139 1