MongoDB数据库如何更好地组织数据

曾经使用过将数据组织成表格的数据库(也称为关系数据库)的任何人都可以详尽地谈论其缺陷。作为一个很好的存储数据的系统,它并非没有问题,也不是为人们解释而设计的,这使它的组织变得复杂,冗长且学习曲线陡峭。

因此, NoSQL运动。 SQL代表结构化查询语言,它用于与数据库进行通信。但这并没有那么大。例如,当应用程序流行时,需要支持,以便用户可以使用应用程序而不会遇到任何问题。但是SQL在这种规模上变得复杂,以至于许多开发人员无法处理。

NoSQL使得存储和组织数据更加容易,因为NoSQL的思想家们致力于使数据库能够处理大型数据集。 ,按比例缩放,组织得像人们的思维方式一样容易被人类阅读。 MongoDB就是这样一个数据库,它正在改变开发人员构建网站的方式。

什么是MongoDB?

MongoDB(来自“ humongous")是一种跨平台的面向文档的数据库。用作MySQL的替代品。但是,这是什么意思?嗯,数据库是一组结构化的数据,但是MongoDB的不同之处在于,它对数据的结构不太严格。信息被分组在一起,而不是细分为使用SQL的相关文档和表,例如MySQL,流行的RDBMS或关系数据库管理系统。

许多使用SQL的数据库将数据存储在页面上的表中。想像一下带有一些代码的Excel电子表格。这些页面是服务器上最小的数据,每个页面专用于一个表。这在很大程度上是令人费解的,而对于MongoDB,开发人员可以决定如何根据自己的需要来构造信息。

MongoDB使用BSON来存储信息。 BSON(“二进制"和“ JSON"或JavaScript对象表示法的组合)可以被认为是JSON文档的二进制或数字表示。 JSON是一种用于组织数据的开放标准格式(如开源)。

它还增加了对JSON中不支持的某些数据类型的支持,例如数据类型“ date",通常不受支持,因此开发人员无法使用。在这种情况下,开发人员将无法包含任何日期作为数据。

通常,这些数据被组织成文档。 JSON使用易于理解的文档传输数据,但是BSON并非如此。 JSON还通常用于在服务器和应用程序以及通用数据存储介质之间传输数据。

文档不需要根据集合或一组对象以特定的方式进行结构化相关对象的组织方式,使开发人员可以轻松地启动和运行MongoDB。这导致它成为目前最流行的NoSQL数据库之一。

与MySQL有何不同?

MySQL可能是目前使用最广泛的RDBMS,尽管可能存在缺陷,但是选择出现是很自然的。由于NoSQL是SQL的替代品,因此MongoDB被认为是MySQL的替代品。 MySQL使用表来组织其数据,并基于20世纪的经典关系数据模型,尽管与MongoDB一样,它也可以进行修改以提高功能。

但这两者之间有很大的不同。它们旨在用于不同的目的。 MongoDB旨在用于更大(非常大)的规模,而MySQL仅能处理这么多。如前所述,MySQL使用表来组织数据,这些数据最终会非常复杂。但是,它们都是非常好的系统,实际上,混合是在网络上的某些站点上实现的。 Craigslist是实现MongoDB / MySQL混合的更成功的网站之一。

它如何工作?

MongoDB的工作原理是将数据存储在类似于JSON的文档中。这些文档具有一个或多个字段(包含在类或结构中的对象或值),其中包括数组(一系列大小和类型都相同的对象)和子文档(构成较大文档一部分的文档)。可以根据开发人员的需求将这些字段设置为开发人员希望的状态。

组织起来通常很麻烦,但是BSON可以通过简单地根据类型和大小将文档分组在一起而不是将其轻松实现像SQL一样将它们分解为非常小的数据,并根据其他信息组织数据。由于具有这种灵活性,开发人员能够根据自己的需要来发展数据集合(也称为数据模型)。​​

开发人员可以通过能够阅读和理解的驱动程序来访问文档,并且这些文档以最流行的现代编程语言提供。使用MongoDB,文档可以自然地映射到对象,因此无需ORM(对象关系映射)层即可将文档手动映射到它们各自的对象。简而言之,文档自然地连接到对象,因此不需要单独的命令或程序来连接它们。

MongoDB使用基于JavaScript的shell,并支持开发人员使用JavaScript函数编写自定义代码,并且随着JavaScript的持续流行,它可能会变得更加普及。

谁使用它?

尽管还比较年轻,但是许多受欢迎的网站都使用MongoDB。其中包括商业杂志《福布斯》和gif-tastic Buzzfeed。

《福布斯》利用MongoDB来快速开发新的Web和移动产品组合。 MongoDB的速度和功能使他们可以在两个月内建立一个网站,一个月内建立一个移动应用程序。这极大地影响了他们的读者参与度和访问量。根据MongoDB开发人员的说法:

一夜之间,移动流量从Forbes.com总流量的5%跃升至15%,并迅速上升到50%。

Buzzfeed面临挑战任何大型媒体组织都面临。他们分散的写作团队将如此庞大的内容发布给大量的听众。 MongoDB允许Buzzfeed根据接收到的流量快速扩展,并确定哪些类型的内容会引起读者共鸣。

您如何使用它?

MongoDB很棒网站,游戏和软件开发人员的工具。我们知道它是快速且可扩展的。而且我们知道它很容易阅读和学习。但是,您实际上是如何使用它的呢?

MongoDB官方网站为用户提供了在他们的浏览器中尝试MongoDB shell的机会。 TutorialsPoint提供了一些使用MongoDB的非常详细的教程,从初学者到高级。 GitHub上还有与MongoDB相关的项目,包括Karl Seguin的 The Little MongoDB Book ,涵盖了您需要了解的有关MongoDB的所有内容。

如果您只想学习如何安装MongoDB,请务必从MongoDB官方网站上查看本教程。

您应该使用它吗?

这取决于您的个人情况。

与MongoDB一样,它并非没有缺陷。不符合ACID。 ACID代表原子性,一致性,隔离性和耐久性,是一组属性,可确保正确处理和完成数据库事务或数据库内执行的工作。 NoSQL数据库有时不符合ACID,这确实限制了它们的生产率和可靠性。

MongoDB还使用所有可用内存作为系统缓存。因此,在32位系统上运行的计算机上存在性能问题,该计算机最多只能处理4GB的内存。要了解有关在计算机上使用RAM的更多信息,请务必查看Brad Jones的这篇文章。

由于该数据库无需使用表,因此开发人员很容易懒惰和编写草率的代码,但是这种风险几乎适用于所有事物。最终,您将获得重复的数据,因为系统内不可能进行联接。

但是,MongoDB是一个快速,高效的系统,可以绝对帮助提高开发人员的生产力

MongoDB也是用户友好的,它不需要所有对象都具有统一的数据结构,尽管建议您设置一个易于使用的数据结构。

最后,根据PCPC.me作家Matthew Hughes的说法,MongoDB团队经营着一个出色的博客,具有针对技术受众的高质量,精心编写的技术内容。

结论

如果您的系统没有大量不能支持的RAM一个大型数据库,或者您根本就不打算拥有一个大型数据库,MongoDB不适合您。它往往仅在大规模时才出售自己。对于较小的项目,使用RDBMS可能更容易。但是,如果您需要速度和便利性并且可以支持该系统,那么也许值得研究。

您对MongoDB有任何经验吗?想尝试一下吗?

标签: