什么硬件可以使MongoDB Server更好?在哪里得到的?


13

假设您现在在dell.com上,并且要购买一台服务器来为小型启动运行MongoDB数据库。您将不得不每分钟处理数以万计的写入和读取(但对象很小)。您会购买2个处理器吗?在RAM上投资更多?

我听说过(如果我错了,请纠正我)MongoDB会尽其所能在RAM上进行处理,然后将所有内容刷新到磁盘上,在这种情况下,我应该投资具有较大二级缓存(可能大于40GB RAM)的CPU和固态硬盘..对吗?

使用高端(〜11,309美元,两个昂贵的处理器,96GB的RAM)服务器还是2个(〜6,419美元,两个昂贵的处理器,12GB的RAM)服务器,我会更好吗?

戴尔还好吗?还是您的建议更好?(我在美国境外,在葡萄牙)


3
为什么您要购买硬件,而不是使用EC2之类的东西来启动?至少从最初开始,直到您知道自己的要求。

同意汤姆。为什么不在云上进行一些实例?

1
@mixdev,您错了:“ Linux,NUMA和MongoDB往往不能很好地协同工作。” 源:mongodb.org/display/DOCS/NUMA
Shadok

Answers:


19

最初,您需要增强RAM。您需要的RAM取决于您要存储的数据量,集合的数量,这些集合的索引,数据访问模式等。很多因素。

最重要的是要有足够的RAM将索引保留在RAM中。否则,当Mongo将内存映射文件移入和移出RAM时,服务器将持续不断地调页,因此您的性能将受到严重影响。尽管如此,我们还没有看到写入速度受到影响,但是其他所有因素都受到影响。一旦您的索引不再适合RAM,处理就会取消队列,进行刷新,转储等操作,从而产生巨大的影响。

因此,没有真正的简短答案。基本上,要对索引保持警惕。只使用您需要的东西。如果可以的话,请尽量减少收藏夹(即,尽可能分成多个收藏夹。)有上限的收藏夹也很有趣。


1
根据我们的经验,当Mongo内存不足以进行查询时,查询不仅会转到文档(永远运行5分钟,15分钟,1小时……),而且插入操作也会失败。
Jonesome恢复Monica


6

使用MongoDB,您需要的是RAM。然后再增加一些RAM。购买RAM不会造成伤害。


3

如果您正处于购买生产硬件的阶段,则必须已经编写了正在运行的应用程序,对吗?因此,请在您拥有的硬件上运行该应用并进行衡量。逐渐更改某些组件并采用更多指标。完成后,您将知道哪些焦点对您的应用程序和方案最重要。


3

首先-尽可能多地购买RAM。第二个限制因素是磁盘速度。RAID帮助。SSD有帮助。更多碎片帮助。将吞吐量与磁盘效率和所需的响应时间进行比较,然后在预算范围内决定要做什么。


1

我想知道Linux集群解决方案是否会是更好,更便宜的选择。

MongoDB使您可以在许多服务器上分发数据。用一个鸣喇叭的服务器就不可能了。

在发现在喇叭服务器上部署关系数据库的伸缩性不够好之后,我以为MongoDB是下一步的步骤之一。


1

每分钟成千上万的写入是什么。你可以得到每50.000以上的写入第二上不俗的硬件。硬件规格确实取决于您要执行的操作。通常,除了像样的CPU外,足够用于大型数据库和快速IO系统的RAM也很重要。


0

在设计硬件之前,建立坚实的基准非常重要。通常,在任何人甚至可以考虑回答您的问题之前,经验丰富的mongoDB员工都会问这些问题。

当前的应用程序统计信息(如果有)

  • 迄今为止的总记录?
  • 开始存储估算?
  • 预期每月增长百分比?
  • 平均文件尺寸?

数据提取工作量

  • 每天新插入次数,每秒峰值和平均次数?
  • 每天更新,每秒峰值和平均值?
  • 每天的读数,峰值和平均值/秒?
  • 每个查询返回的平均文档数:70
  • 删除/天,峰值和平均值/秒:无
  • 会批量加载/批量更新吗?如果是这样,那么大小和频率是多少?
  • 会有多少种不同类型的文件?
  • 每个多少个?
  • 您希望您的文档看起来像什么(样本文档)?

查询模式和性能期望

  • 读取响应SLA?
  • 写响应SLA?
  • 读数是基于范围的还是随机的?

预期的访问模式

  • 需要多少个二级索引?
  • 属性数量?
  • 排序条件?
  • 单一还是复合?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.