mongodb - 我应该使用 MongoDB 吗?

标签 mongodb nosql

所以我们有一个系统,这个系统将大量数据写入日志数据库。仅当出现问题时才读取此数据,其余时间以防万一。

此数据当前按以下结构存储在 SQL Server 数据库中:

  • 写入“写入”数据库的数据
  • 定期将其归档到单独的数据库中
  • 数据保留 7 天
  • 目前每天有高达 100Gb 的数据写入 SQL
  • 数据很简单,没有连接等。只是通过外键链接的平面数据

所以我在想这会不会更有效地存储在 NoSQL 系统中,比如 MongoDB

据我所知,阅读几篇文章(例如herehere),这有以下优点

  • 水平缩放
  • 快速写作
  • 适合数据的非结构化性质
  • 不关心读性能,只关心写性能和空间

所以我的问题主要是我们认为这是否合适?

特别是

  1. 对于比较等效的 SQL,Mongo 在磁盘上占用的空间更多还是更少?
  2. 删除的效率比 SQL 高还是低?
  3. 横向扩展是否会占用大量网络流量?

最佳答案

根据我的经验,Mongo 在写入方面做得不错,但并不出色。在之前的工作中,我们的生产实例在写入方面比读取方面更加挣扎。

Mongo 在磁盘上分配文件时非常积极。读这个:http://docs.mongodb.org/manual/faq/storage/#why-are-the-files-in-my-data-directory-larger-than-the-data-in-my-database

最终,即使您的数据库为空,Mongo 也会尝试一次获取 2GB。

根据我的经验,我发现删除非常有效。没有真正的提示,但话又说回来,我们并没有删除大量数据。

从我的经验来看,水平扩展非常繁琐,但它必须是复制数据。要了解的是使用副本集或使用分片之间的区别。两者之间的复制模型/网络事件非常不同。

我们主要使用 Mongo 来提高读取效率,它在这方面做得非常好。

关于mongodb - 我应该使用 MongoDB 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944743/

相关文章:

node.js - 如何使用 mongoose update 并更新嵌入文档?

javascript - Mongodb mongoose - 如果字段不存在,如何将文档添加到数组

mysql - 同一类型的多个表的数据库设计

node.js - 罗博蒙戈 : Doesn't display all documents

nosql - 文档/NoSQL 数据库是存储 Assets 负债表的理想选择吗?

django - 检查我的 MongoDB 并得到一个不寻常的数据库

python - 有没有和 sqlite 一样的 nosql 平面文件数据库?

java - 哪个用Java编写的嵌入式数据库可用于简单的键/值存储?

ios - 创建 firebase 数据结构时遇到问题

java - 京都内阁/伯克利 DB : Hash table size limitations