【问题标题】:MongoDB with LOTS OF datas?MongoDB 有很多数据?
【发布时间】:2017-09-22 08:19:15
【问题描述】:

我是一个像这里的 MongoDB 这样的非 SQL 结构的初学者,我没有发现有人谈论一个包含大量数据的集合,比如 1.000.000 个条目?和更多 ?

我在official site 上看到了一个公司页面。但对于大型数据公司而言,什么都没有。

我听说有一个与 SQL 的组合:SQL 表上存储大数据,MongoDB 上只有“缓存”,但它是 MongoDB 和大数据的唯一解决方案?

【问题讨论】:

  • 一百万个条目并不多。任何数据库都可以支持。
  • 还有更多?我谈论了很多搜索查询.. Mongodb 只存储对象,所以我害怕请求..
  • 视情况而定,你可以有 300b 行但实际上不需要 SQL 上的缓存,但是你可能有 100m 行并且需要认真部署 redis/mongodb/memcache 这一切都取决于访问和查询和数据分析。但是,MongoDB 可以像许多技术人员一样轻松处理“大数据”,即使 SQL 是由知道他们在说什么的人配置和部署的。使用技术不会立即宣布获胜。我知道一些可怕的 mongodb 部署无法处理 100,000 行,更不用说 1m
  • 如果您需要依靠对子记录进行排序来进行从父级到子级的严肃查询,您可能会发现需要重新设计,在海量表上 JOIN 真的很困难
  • MongoDB.com 上的MongoDB performance at scale 页面包括一些不同的规模示例:数千个节点、每秒数十万次操作、数千亿个文档、PB 级数据。扩展任何基础架构的关键是了解如何针对您的工作负载(和您的预算)正确调整它。绝对值得在社区论坛中提问,以从希望有更多经验的其他人那里获得建议。请务必深入了解Indexing Strategies 上的文档。

标签: mongodb large-data


【解决方案1】:

我们正在使用 MongoDB 为 Where's it Upapi behind it 供电。我们目前每天推送超过 300 万份文档。 MongoDB 是唯一使用的存储引擎。我们保留了一段时间,但我们现在使用TTL 删除旧记录。

一切进展顺利,只需确保您拥有所需的所有索引。无论您的存储引擎如何,在没有索引的情况下查询一百万多条记录都是不好的。自动故障转移非常有用。

需要注意的是更新记录以包含更多信息,如果文档增长超过预先分配的空间,这可能会非常昂贵。我们最终改变了存储数据的方式以避免更新,而是创建了新文档。

【讨论】:

  • 关于更新问题:您可能遇到了填充问题。根据更新前后的大小差异,可能会强制移动数据文件中更新的文档。可以轻松调整有效填充因子。只要您在索引中有查询的字段,即发即弃的 upsert 应该很快。
  • 您究竟如何调整填充因子,我在 API 中没有看到任何内容,并且记录在案的建议是在预填充中添加一堆“aaaaaa”,这是次优的。我在这里写了我们的更改:blog.preinheimer.com/index.php?/archives/… 性能上升,断言完全下降。
  • 在 mongo 术语中,填充意味着预先分配了一定的空间,以防文档在更新期间增加。文档永远不会碎片化,因此如果文档增加太多,则会将其移动到数据文件中合适大小的空闲位置。我认为是这种情况并导致您的问题。如果您调整 record allocation strategy 可能会有所帮助。
  • 刚刚有时间阅读博文。在您的用例中,应该明确使用 powerof2sizes,因为它以指数方式增加填充,而不是常数因子。我看到的另一个解决方案是使用 SSD 来减少延迟。我不确定创建中间文档是否是个好主意。也许您最好使用 ServiceMix 之类的东西,将请求存储在 JMS 或 AMQP 队列中,并使用 Camel 在 MongoDB 中进行处理和后续存储。可能它可以在没有消息传递的情况下完成,但是 direct: 端点。
【解决方案2】:

当前版本的 MongoDB 明确设计为使其易于横向扩展。

至于数字:我的一个测试数据库有 1000 万条记录,并且可以在我 4 岁的 MacBook Air 上轻松运行。

因此,当您的当前集群无法处理存储的数据时(因为索引对于您的 RAM 来说太大或因为处理查询需要太长时间),您可以做些什么:向您的 MongoDB 集群添加另一个节点。您的性能增益应该在略低于线性(如果您的集群处于完美状态,否则)到几个数量级之间(当索引不适合 RAM 和/或 IO 之前被推到极限并且情况发生变化之后)向外扩展)。

一句警告:如果您想将部署投入生产,您应该有了解 MongoDB 管理的人。虽然 MongoDB 的管理看起来很简单,但这绝不是外行人能做的事情。尤其不能用于生产。

【讨论】:

    猜你喜欢
    • 2015-04-07
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多