我目前使用MongoDB在一台服务器上运行我的网站。在我的服务器上,我有两个组件(1)一个每小时运行并将数据附加到我的MongoDB实例的爬虫(2)一个网站,它从爬虫索引中读取数据,并写入用户个性化数据库。我搬到亚马逊EC2进行自动缩放,这样网络服务器就可以自动缩放,这样我就可以随着网络流量的增加而增加服务器的数量。我不需要自动缩放我的爬虫。这对我如何使用MongoDB提出了挑战。我想知道我最好的选择是
在短期内,DB肯定能够在内存中跨越所有的machies,因为它将在2GB以下。用户个性化数据库无法重新构建,因此更重要的是拥有它,而索引可以很容易地重新构建。当前的MongoDB爬行索引有大约100 k个条目,它们在15种不同的列上键键。这是为速度而建的,因为我在一个在线交友网站上工作(这个网站在很多方面都是可搜索的)。
我可以想出几个选择
我对SimpleDB和/或DynamoDB不太了解。根据文章,DynamoDB似乎是一种自然的选择,但我不确定是否有良好的perl支持,是否可以拥有所有的列、索引等。谁有经验或有任何建议?
发布于 2012-02-19 23:30:35
您可以在EC2上的单个服务器上托管Mongo,web场中的每个框都连接到该服务器上。然后,您可以轻松地拆分另一个使用相同DB框的web实例。
当我们运行一个副本集时,我们目前有三个Mongo服务器,当我们到了需要使用Mongo进行水平扩展的时候,我们将分拆一些新的实例并分割更大的集合。
发布于 2012-02-20 19:06:39
我目前使用MongoDB在一台服务器上运行我的网站。
首先,这是一个巨大的红旗。在生产上运行时,建议运行至少三个完整节点的副本集。
复制提供自动冗余和故障转移。
能够无缝地添加/删除web服务器,而不必担心数据库中的数据丢失。
MongoDB支持一个名为切分的概念。分片提供了一种通过自动分区数据水平缩放的方法。分区是通过切分键完成的。
如果您计划使用切分,请仔细阅读该链接,并认识到限制。对于MongoDB切分,您必须选择正确的键,该键允许查询在碎片之间均匀分布。
当前的MongoDB爬行索引有大约100 k个条目,它们在15种不同的列上键键。
这将是切分的一个问题。切分只能缩放使用碎片键的查询。对碎片键的查询可以直接路由到一台机器上。对辅助索引的查询适用于所有机器。
您有15个不同的索引,所以基本上所有这些查询都会转到所有碎片。这样的话,“自动秤”就不会很好了。
发布于 2012-02-21 16:41:42
请注意,目前EC2没有64位小实例,因此复制成本可能很高。因为MongoDB内存映射文件,所以不建议使用32位操作系统。
https://stackoverflow.com/questions/9354144
复制相似问题