包含单个集合的一个NoSQL数据库(MongoDB)的性能会有多大差异 - logs
- 有10亿个条目或一千个集合(logs_source0
,logs_source1
)?如果数据在多台服务器上分割,这会改变吗?对象包含6到10个键,有时包含3-5个对象的一个数组。应用程序的设计可以使用其中任何一种,因为_sourceX
可以很容易地变成额外的键,反之亦然。拥有一个拥有一百万个对象的十亿或一千个集合是否更好?
2
A
回答
3
只要所有数据都在单个服务器上,拥有一个大集合或许多小集合就不应有太大区别。作为任何性能问题,彻底的答案将不得不考虑您对该数据的预期用法。你是否经常访问所有的数据?或者你有一个经常访问的相对较小的工作数据集,而其余的则很少被查看?
当涉及到有选择性地将某些数据分页到内存中时,拥有许多小集合可能会更好。当然,单个大集合也可以选择性地分页到内存中,但至少索引必须完全位于内存中,才能确保快速访问数据。由于许多较小的集合,这将更容易,因为每个集合都有自己的小索引。
但是,MongoDB的分片是为了解决这个问题(维护大量的数据),它通过将所有内容都保存在一个逻辑集合中,但是将它自动分配到尽可能多的分片上。这远比自己创建个人收藏更灵活。除此之外,它允许数据在一段时间内重新平衡,以确保每个分片具有相同数据的一部分。适应不同数量的碎片也更灵活,而您的多重收集方案似乎依赖于对数据进行相当固定的分割(根据源码#)。
通过分片,应用程序将完全不知道分布模式,并且您可以根据需要添加或删除尽可能多的分片,以透明地处理数据量。
相关问题
- 1. 拥有另一个对象的对象
- 2. 拥有一个拥有整个对象生命周期资源的类成员是一个好主意吗?
- 3. hibernate(或SQL或HQL)查找拥有另一个集合的子集的对象
- 4. 如何创建一个对象“拥有”的集合?
- 5. 有条件地更新一个拥有数百万条记录的巨大表
- 6. 双向一对多,拥有一个作为拥有方
- 7. 我应该如何抽象另一个对象拥有的对象的集合?
- 8. 拥有一个类的单个实例还是简单地拥有一堆静态方法会更好吗?
- 9. 在MongoDB中有一个Sperate集合或一个大集合是更好的吗?
- 10. 是更好地拥有整个对象的一个观察员或它的几个孩子
- 11. 在一个或另一个集合中有对象,但不是两个对象?
- 12. 是否有可能让一个类拥有多个超类?
- 13. 一个协会拥有的财产与一个类拥有的财产?
- 14. Javascript - 是否有可能拥有3个“if”变量或者是一个错误?
- 15. 一个对象拥有一个QObject派生类的集合的正确方法是什么?
- 16. 是否有可能拥有一个针对GAC的合并模块?
- 17. 拥有一个static_pages控制器是否合适?
- 18. Java:拥有一个类的多个对象
- 19. 玩家是否应该继承或拥有一个关卡?
- 20. 我可以拥有一个没有值的JavaScript对象键吗
- 21. 如何在每个Rails动作中拥有一个对象?
- 22. 是否有可能拥有一个通用的Comparable方法?
- 23. 是否有可能拥有一个Func的参数阵列
- 24. JDO:引用另一个类“拥有”的实体集合
- 25. 如何拥有一个更好看的DatePicker?
- 26. 是否可以在一个git仓库中拥有多个HEAD?
- 27. 是否有可能在另一个git仓库中拥有一个git仓库
- 28. 是否有可能拥有一个来自另一个类内部的类对象数组的类?
- 29. IllegalMonitorStateException ...线程不拥有该对象?不能,只有一个
- 30. 如何拥有一个第二个元素是一个列表的对?