我目前在使用 MongoDB 的单个服务器上运行我的网站。在我的服务器上,我有两个组件 (1) 一个每小时运行的爬虫并将数据附加到我的 MongoDB 实例 (2) 一个从爬虫索引读取并写入用户个性化数据库的网站。我正在迁移到 Amazon EC2 进行自动扩展,以便网络服务器可以自动扩展,因此我可以随着网络流量的增加而增加服务器的数量。我的爬虫不需要自动缩放。这对我如何使用 MongoDB 提出了挑战。我想知道我最好的选择是优化
- 对我的代码的最小改动(代码在 perl 中)
- 能够无缝添加/删除网络服务器,而不必担心丢失数据库中的数据
- 低成本
在短期内,数据库肯定能够适应所有机器的内存,因为它会低于 2 GB。用户个性化数据库无法重建,因此拥有它更重要,而索引可以轻松重建。当前的 MongoDB 爬网索引有大约 100k 个条目,这些条目以大约 15 个不同的列为键。这是为速度而设计的,因为我正在开发一个在线约会网站(可以通过多种方式搜索)。
我能想到几个选项
- 使用 SimpleDB 作为用户个性化存储,使用 MongoDB 作为索引。让索引在所有机器上复制,但是,我对 MongoDB 复制了解不多。
- 将所有内容移至 SimpleDB
- 将所有内容移至 DynamoDB
我对 SimpleDB 和/或 DynamoDB 了解不多。根据文章,DynamoDB 似乎是一个自然的选择,但我不确定是否有良好的 perl 支持,是否可以拥有所有列、索引等。有人有经验或有什么建议吗?
最佳答案
您可以在 EC2 上的单个服务器上托管 Mongo,Web 场中的每个盒子都连接到该服务器。然后,您可以轻松启动另一个使用相同数据库盒的 Web 实例。
当我们运行一个副本集时,我们目前有三个 Mongo 服务器,当我们需要使用 Mongo 进行水平扩展时,我们将启动一些新实例并将更大的集合分片。
关于perl - 在 EC2 上扩展 MongoDB 还是应该切换到 DynamoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9354144/