我目前在MongoDB的单个服务器上运行我的网站.在我的服务器上,我有两个组件(1)一个每小时运行一次的爬虫,并将数据附加到我的MongoDB实例(2)一个从爬虫索引中读取并写入用户个性化数据库的网站.我正在转向使用Amazon EC2进行自动扩展,因此Web服务器可以自动扩展,因此随着Web流量的增加,我可以增加服务器数量.我不需要自动缩放我的抓取工具.这对我如何使用MongoDB提出了挑战.我想知道我最好的选择是优化
>对我的代码进行最小的更改(代码在perl中)
>能够无缝添加/删除Web服务器,而无需担心数据库中的数据丢失
>成本低
在短期内,DB肯定能够适应所有机器的内存,因为它将低于2 GB.用户个性化DB无法重建,因此更重要的是,可以轻松地重建索引.当前的MongoDB爬网索引有大约100k个条目,这些条目被键入~15个不同的列.这是为了速度而建立的,因为我正在开发一个在线约会网站(可以通过多种方式进行搜索).
我可以想到几个选择
>将SimpleDB用于用户个性化存储,将MongoDB用于索引.让索引在所有机器上复制,但是,我不太了解MongoDB复制.
>将所有内容移至SimpleDB
>将所有内容移至DynamoDB
我不太了解SimpleDB和/或DynamoDB.根据文章看起来DynamoDB似乎是一个很自然的选择,但我不确定是否有良好的perl支持,我是否可以拥有所有列,索引等.任何人都有经验或有任何建议吗?
解决方法
您可以在EC2上的单个服务器上托管Mongo,Web服务器中的每个框都连接到该服务器.然后,您可以轻松地启动使用相同数据库框的另一个Web实例.
当我们运行副本集时,我们目前有三个Mongo服务器,当我们到达需要使用Mongo水平扩展的点时,我们将启动一些新实例并对更大的集合进行分片.