在EC2上扩展MongoDB还是应该切换到DynamoDB?

Zen*_*Inc 8 perl mongodb amazon-simpledb amazon-dynamodb

我目前在使用MongoDB的单个服务器上运行我的网站.在我的服务器上,我有两个组件(1)一个每小时运行一次的爬虫,并将数据附加到我的MongoDB实例(2)一个从爬虫索引中读取并写入用户个性化数据库的网站.我正在转向Amazon EC2进行自动扩展,因此Web服务器可以自动扩展,因此随着Web流量的增加,我可以增加服务器数量.我不需要为我的抓取工具自动缩放.这对我如何使用MongoDB提出了挑战.我想知道我最好的选择是优化

  • 我的代码的最小更改(代码在perl中)
  • 能够无缝添加/删除Web服务器,而无需担心数据库中的数据丢失
  • 低成本

在短期内,DB肯定能够适应所有机器的内存,因为它将低于2 GB.用户个性化DB无法重建,因此更重要的是,可以轻松地重建索引.当前的MongoDB爬网索引有大约10万个条目,这些条目在~15个不同的列上键入.这是为了速度而建立的,因为我正在开发一个在线约会网站(可以通过多种方式进行搜索).

我可以想到几个选择

  1. 将SimpleDB用于用户个性化存储,将MongoDB用于索引.让索引在所有机器上复制,但是,我不太了解MongoDB复制.
  2. 将所有内容移至SimpleDB
  3. 将所有内容移至DynamoDB

我不太了解SimpleDB和/或DynamoDB.根据文章看起来DynamoDB似乎是一个自然的选择,但我不确定perl的良好支持,我是否可以拥有所有列,索引等.任何人都有经验或有任何建议吗?

小智 3

您可以将 Mongo 托管在 EC2 上的单个服务器上,网络场中的每个盒子都连接到该服务器。然后,您可以轻松启动另一个使用同一数据库盒的 Web 实例。

目前,我们在运行副本集时拥有三台 Mongo 服务器,当我们需要使用 Mongo 进行水平扩展时,我们将启动一些新实例并对更大的集合进行分片。