蒙哥达 ,最流行的NoSQL数据库,是一个开源的面向文档的数据库。术语“NoSQL”的意思是“非关系型”。这意味着MongoDB不是基于类似表的关系数据库结构,而是提供了一种完全不同的数据存储和检索机制。这种存储格式称为BSON(类似于JSON格式)。
一个简单的MongoDB文档结构:
{ title: 'Geeksforgeeks', by: 'Harshit Gupta', url: 'https://www.geeksforgeeks.org', type: 'NoSQL'}
SQL数据库以表格格式存储数据。这些数据存储在预定义的数据模型中,对于当今高度增长的实际应用程序来说,该模型不是很灵活。 现代应用程序比以往任何时候都更加网络化、社交化和互动化 .应用程序正在存储越来越多的数据,并以更高的速率访问数据。
关系数据库管理系统(RDBMS)i 在凭借其设计处理大数据时,这不是正确的选择,因为它们不具有横向可扩展性 。如果数据库在单个服务器上运行,则它将达到扩展限制。NoSQL数据库更具可扩展性,并提供优异的性能。MongoDB就是这样一个NoSQL数据库,它通过添加越来越多的服务器进行扩展,并通过其灵活的文档模型提高生产效率。
RDBMS vs MongoDB :
- RDBMS有一个典型的模式设计,显示表的数量和这些表之间的关系,而MongoDB是面向文档的。没有模式或关系的概念。
- MongoDB不支持复杂事务,因为复杂的连接操作不可用。
- MongoDB允许高度灵活和可扩展的文档结构。例如,MongoDB中一个集合的一个数据文档可以有两个字段,而同一集合中的另一个文档可以有四个字段。
- 由于高效的索引和存储技术,MongoDB比RDBMS更快。
- 两个数据库中都有一些相关的术语。RDBMS中的表在MongoDB中称为集合。类似地,元组称为文档,列称为字段。MongoDB提供了一个默认的“_id”(如果没有明确提供),这是一个12字节的十六进制数,可以确保每个文档的唯一性。它类似于RDBMS中的主键。
MongoDB的特点:
- 面向文档 :MongoDB将主要主题存储在最少数量的文档中,而不是将其分解为多个关系结构,如RDBMS。例如,它将计算机的所有信息存储在一个名为computer的文档中,而不是存储在CPU、RAM、硬盘等不同的关系结构中。
- 索引 :如果没有索引,数据库将不得不扫描集合中的每个文档,以选择与查询匹配的文档,这将是低效的。因此,为了高效搜索,索引是必须的,MongoDB使用它在非常短的时间内处理大量数据。
- 可扩展性 :MongoDB使用分片(在不同服务器之间对数据进行分区)水平扩展。使用shard键将数据划分为多个数据块,这些数据块均匀分布在多个物理服务器上的多个数据块上。此外,还可以将新机器添加到正在运行的数据库中。
- 复制和高可用性 :MongoDB通过在不同服务器上提供多个数据副本来提高数据可用性。通过提供冗余,它可以保护数据库免受硬件故障的影响。如果一台服务器宕机,可以轻松地从其他活动服务器检索数据,这些服务器上也存储了数据。
- 聚集 :聚合操作处理数据记录并返回计算结果。它类似于SQL中的GROUPBY子句。一些聚合表达式是sum、avg、min、max等
我们在哪里使用MongoDB?
在以下情况下,MongoDB优于RDBMS:
- 大数据 :如果要在表中存储大量数据,请先考虑MongoDB,然后再考虑RDBMS数据库。MongoDB有内置的数据库分区和分片解决方案。
- 不稳定模式 :在RDBMS中添加新列很难,而MongoDB没有模式。添加新字段不会影响旧文档,这将非常容易。
- 分布式数据 由于数据的多个副本存储在不同的服务器上,因此即使出现硬件故障,数据的恢复也是即时且安全的。
MongoDB提供的语言支持 :
MunGDB目前提供了所有流行的编程语言的官方驱动支持,如C、C++、Rust、C、java、Node。js、Perl、PHP、Python、Ruby、Scala、Go和Erlang。
我 nstalling MongoDB :
去 http://www.mongodb.org/downloads 并从中选择您的操作系统 窗户 , Linux , Mac OS X 还有Solaris。有关MongoDB安装的详细说明在他们的网站上给出。
对于Windows,64位操作系统的一些选项会下拉。在Windows 7、8或更新版本上运行时,选择 Windows 64位2008 R2+ .使用Windows XP或Vista时,请选择 Windows 64位2008 R2+旧版 .
谁在用MongoDB?
MongoDB已被EA、思科、Shutterfly、Adobe、爱立信、Craigslist、eBay和Foursquare等多个主要网站和服务采用为后端软件。
下一篇文章: MongoDB和Python
欲了解更多信息,请访问他们的网站: https://www.mongodb.com/nosql-explained
关于作者—— 总部位于加尔各答 哈希特·古普塔 是一位活跃的博主,对时事、技术博客、故事和个人生活经历有着浓厚的兴趣。除了热爱写作,他还喜欢编码和跳舞。目前在IIEST学习,他是Geeksforgeks的活跃博客撰稿人。
如果你也想在这里展示你的博客,请参见 吉微博 在Geeksforgek上写客博。