【NoSQL数据库(MongoDB简介)】MongoDB最受欢迎的NoSQL数据库是面向文档的开源数据库。术语" NoSQL"表示"非关系"。这意味着MongoDB并非基于类似表格的关系数据库结构, 而是提供了一种完全不同的机制来存储和检索数据。这种存储格式称为BSON(类似于JSON格式)。
一个简单的MongoDB文档结构:
{
title: 'lsbin', by: 'Harshit Gupta', url: 'https://www.lsbin.com', type: 'NoSQL'
}
SQL数据库以表格格式存储数据。这些数据存储在预定义的数据模型中, 对于当今的现实世界中高度增长的应用程序而言, 它并不是非常灵活。现代应用程序比以往任何时候都更具网络性, 社交性和交互性。应用程序正在存储越来越多的数据, 并且正在以更高的速率对其进行访问。
关系数据库管理系统(RDBMS)i凭借其设计来处理大数据时, 这不是正确的选择, 因为它们无法水平扩展。如果数据库在单个服务器上运行, 则它将达到扩展限制。 NoSQL数据库具有更高的可伸缩性, 并提供卓越的性能。 MongoDB是这样的NoSQL数据库, 它通过添加越来越多的服务器进行扩展, 并通过其灵活的文档模型提高了生产率。
RDBMS与MongoDB:
- RDBMS具有典型的模式设计, 该模式显示表的数量以及这些表之间的关系, 而MongoDB是面向文档的。没有架构或关系的概念。
- MongoDB不支持复杂的事务, 因为复杂的联接操作不可用。
- MongoDB允许高度灵活和可扩展的文档结构。例如, MongoDB中集合的一个数据文档可以具有两个字段, 而同一集合中的另一个文档可以具有四个字段。
- 由于高效的索引和存储技术, 与RDBMS相比, MongoDB更快。
- 这两个数据库中都有一些相关的术语。 RDBMS中的表格称为MongoDB中的集合。类似地, 元组称为文档, 列称为字段。 MongoDB提供了默认的" _id"(如果未明确提供), 它是一个12字节的十六进制数, 可确保每个文档的唯一性。它类似于RDBMS中的主键。
- 面向文档:MongoDB将主要主题存储在最少数量的文档中, 而不是将其分解为多个关系结构(如RDBMS)。例如, 它将计算机的所有信息存储在称为计算机的单个文档中, 而不是以不同的关系结构(例如CPU, RAM, 硬盘等)存储。
- 索引编制:没有索引, 数据库将不得不扫描集合的每个文档以选择那些与查询效率不高的文档。因此, 为了进行有效的搜索, 索引是必须的, MongoDB使用它在非常短的时间内处理大量数据。
- 可扩展性:MongoDB使用分片(在各种服务器上对数据进行分区)进行水平扩展。使用分片密钥将数据划分为多个数据块, 并且这些数据块均匀分布在驻留在许多物理服务器上的各个分片之间。另外, 可以将新计算机添加到正在运行的数据库中。
- 复制和高可用性:MongoDB通过在不同服务器上提供多个数据副本来提高数据可用性。通过提供冗余, 它可以保护数据库免受硬件故障的影响。如果一台服务器出现故障, 则可以轻松地从其他活动的服务器上检索数据, 这些服务器上也存储有数据。
- 聚合:聚合操作处理数据记录并返回计算的结果。它类似于SQL中的GROUPBY子句。一些聚合表达式是sum, avg, min, max等
在以下情况下, MongoDB优于RDBMS:
- 大数据:如果你要在表中存储大量数据, 请在RDBMS数据库之前考虑MongoDB。 MongoDB内置了用于对数据库进行分区和分片的解决方案。
- 架构不稳定:在RDBMS中添加新列很困难, 而MongoDB则没有架构。添加新字段不会影响旧文档, 并且非常容易。
- 分布式数据由于数据的多个副本存储在不同的服务器上, 因此即使发生硬件故障, 数据恢复也是即时且安全的。
MongoDB当前为所有流行的编程语言(例如C, C ++, C#, Java, Node.js, Perl, PHP, Python, Ruby, Scala, Go和Erlang)提供官方驱动程序支持。
一世正在安装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, Cisco, Shutterfly, Adobe, Ericsson, Craigslist, eBay和Foursquare)用作后端软件。
下一篇文章:
MongoDB和Python
有关更多信息, 请访问他们的网站:https://www.mongodb.com/nosql-explained
文章作者
哈西特·古普塔
:
总部位于加尔各答的Harshit Gupta是一位活跃的博客作者, 对撰写有关时事, 技术博客, 故事和个人生活经历的浓厚兴趣。除了热情
关于写作, 他还喜欢编码和跳舞。他目前在IIEST学习, 是lsbin的活跃博客撰稿人。你可以通过以下方式与他联系
harshitguptablog.wordpress.com
.
如果你还希望在此处展示你的博客, 请参阅日志用于在lsbin上撰写访客博客。
推荐阅读
- Salesforce实习经验(校园内)
- Vue中如何实现多个选择表单元素互相独立()
- Vue渲染Json异常(返回正确,但不显示Json数据结果)
- javascript项目使用async报错(regeneratorRuntime is not defined)
- JavaScript如何在forEach中使用async和await(forEach和async、await的结合使用)
- 解决React构建错误(ERROR Module build failed (from .node_modules babel-loader lib index.js))
- Vue-cli 3新建项目报错(ERRORcommand failed npm install –loglevel error —— 解决办法)
- 诺基亚实习面试|诺基亚在校园
- Python中的First Class函数介绍和用法