首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在EC2上缩放EC2,还是应该切换到DynamoDB?

在EC2上缩放EC2,还是应该切换到DynamoDB?
EN

Stack Overflow用户
提问于 2012-02-19 22:57:45
回答 4查看 4.9K关注 0票数 8

我目前使用MongoDB在一台服务器上运行我的网站。在我的服务器上,我有两个组件(1)一个每小时运行并将数据附加到我的MongoDB实例的爬虫(2)一个网站,它从爬虫索引中读取数据,并写入用户个性化数据库。我搬到亚马逊EC2进行自动缩放,这样网络服务器就可以自动缩放,这样我就可以随着网络流量的增加而增加服务器的数量。我不需要自动缩放我的爬虫。这对我如何使用MongoDB提出了挑战。我想知道我最好的选择是

  • 对我的代码的最小更改(代码用perl编写)
  • 能够无缝地添加/删除web服务器,而不必担心数据库中的数据丢失。
  • 低成本

在短期内,DB肯定能够在内存中跨越所有的machies,因为它将在2GB以下。用户个性化数据库无法重新构建,因此更重要的是拥有它,而索引可以很容易地重新构建。当前的MongoDB爬行索引有大约100 k个条目,它们在15种不同的列上键键。这是为速度而建的,因为我在一个在线交友网站上工作(这个网站在很多方面都是可搜索的)。

我可以想出几个选择

  1. 用户个性化存储区使用SimpleDB,索引使用MongoDB。让索引在所有机器上复制,但是,我对MongoDB复制不太了解。
  2. 把所有东西都移到SimpleDB
  3. 把所有东西都移到DynamoDB

我对SimpleDB和/或DynamoDB不太了解。根据文章,DynamoDB似乎是一种自然的选择,但我不确定是否有良好的perl支持,是否可以拥有所有的列、索引等。谁有经验或有任何建议?

EN

回答 4

Stack Overflow用户

发布于 2012-02-19 23:30:35

您可以在EC2上的单个服务器上托管Mongo,web场中的每个框都连接到该服务器上。然后,您可以轻松地拆分另一个使用相同DB框的web实例。

当我们运行一个副本集时,我们目前有三个Mongo服务器,当我们到了需要使用Mongo进行水平扩展的时候,我们将分拆一些新的实例并分割更大的集合。

票数 3
EN

Stack Overflow用户

发布于 2012-02-20 19:06:39

我目前使用MongoDB在一台服务器上运行我的网站。

首先,这是一个巨大的红旗。在生产上运行时,建议运行至少三个完整节点的副本集。

复制提供自动冗余和故障转移。

能够无缝地添加/删除web服务器,而不必担心数据库中的数据丢失。

MongoDB支持一个名为切分的概念。分片提供了一种通过自动分区数据水平缩放的方法。分区是通过切分键完成的。

如果您计划使用切分,请仔细阅读该链接,并认识到限制。对于MongoDB切分,您必须选择正确的键,该键允许查询在碎片之间均匀分布。

当前的MongoDB爬行索引有大约100 k个条目,它们在15种不同的列上键键。

这将是切分的一个问题。切分只能缩放使用碎片键的查询。对碎片键的查询可以直接路由到一台机器上。对辅助索引的查询适用于所有机器。

您有15个不同的索引,所以基本上所有这些查询都会转到所有碎片。这样的话,“自动秤”就不会很好了。

票数 3
EN

Stack Overflow用户

发布于 2012-02-21 16:41:42

请注意,目前EC2没有64位小实例,因此复制成本可能很高。因为MongoDB内存映射文件,所以不建议使用32位操作系统。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9354144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档