用于小型数据集的 MongoDB

Posted

技术标签:

【中文标题】用于小型数据集的 MongoDB【英文标题】:MongoDB for small datasets 【发布时间】:2013-06-18 21:53:52 【问题描述】:

如果我不打算拥有大型(>1000 项)集合并且已经习惯了 SQL,那么将 MongoDB 用于 Node.js 应用程序而不是传统的 SQL 数据库(如 mysql)有什么好处?

【问题讨论】:

不是真的,我想不到 @Sammaye 你在开玩笑吗?整个数据模型完全不同,并且非常接近 node.js 应用程序中的数据结构 - 有多少数据有什么关系? @AsyaKamsky 不同的数据结构会在开发应用程序之外产生显着差异?比如在性能等方面?我认为他确实在寻找好处,如果他对 SQL 感到满意,他将拥有一个 ORM 或将 SQL 平面结构形成 node.js 结构的东西,这在 MongoDB 和 SQL 之间的应用程序方面几乎没有区别。这意味着不同的数据结构并不像看起来那么有好处,因为 SQL 和一些花哨的编程可以发挥相同的作用,而开发人员永远不会知道。 这是一个面向开发人员的问答网站。开发的速度和简单性似乎与我有关。 我正在寻找任何可以证明在此架构中选择 MongoDB 的好处,这将包括开发速度和易于部署。但是,Node.js 包含用于查询 MySQL 和 MongoDB 的插件,我假设两个插件都以相似的格式返回数据,主要区别在于用于查询数据库的语言。 【参考方案1】:

MongoDB 是基于无模式文档的数据库。这意味着您可以插入带有其他嵌套对象的 JSON 对象。这可以使开发更容易,尤其是原型设计。

对于一个小项目,为什么不呢?对于一个更大的项目,你应该做更多的研究。无论大小,无论如何做研究都没有坏处。您需要考虑您的应用程序如何使用数据库(读取与写入)以及 MongoDB 如何水平扩展,以及它如何处理故障。

有一个叫做 CAP 定理的东西定义了 NoSQL 数据库。 MongoDB是CP。这个visual guide 显示了不同数据库之间的关系。什么对您和您的应用程序最重要?

另外需要考虑的是,大多数 NoSQL 数据库不符合 ACID。如果您将 MySQL 与 InnoDB 一起使用,那么根据您的应用程序,放弃这可能会很重要。例如,transactions 可能是您可能不想放弃的东西。

很多优点和缺点。最好问问自己:我得到了什么?我要放弃什么?有很多事情,这实际上取决于您的用例。

【讨论】:

【参考方案2】:

对于小型应用程序坚持使用简单的 dbms 有很多理由。其中之一是提供 MySQL 的廉价托管服务的广泛可用性。另一个是易于部署和维护。

当然,如果您想学习使用 MongoDB,那就去吧!

【讨论】:

我不知道维护部分等,我都使用过,实际上,一旦你掌握了基本知识,MongoDB 就更容易开发,也很容易管理,重点可能是托管。

以上是关于用于小型数据集的 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB副本集的组成

sklearn.SVC 在使用带有小型平衡数据集的 GridSearchCV 时返回完全不同的预测(模型)

计算大型数据集的python树高度

非常大的数据集的 MongoDB 扩展和内存使用

方案 | Mongodb 高可用落地方案

在CentOS7上部署MongoDB复制集和复制集的管理维护