В настоящее время я запускаю свой сайт на одном сервере с MongoDB. На моем сервере у меня есть два компонента (1) сканер, который запускается ежечасно и добавляет данные в мой экземпляр MongoDB (2) веб-сайт, который читает из индекса сканера, а также пишет в базу данных персонализации пользователей. Я перехожу на Amazon EC2 для автоматического масштабирования, чтобы веб-сервер мог автоматически масштабироваться, поэтому я могу увеличивать количество серверов по мере увеличения веб-трафика. Мне не нужно автоматическое масштабирование для моего сканера. Это создает проблему для того, как я использую MongoDB. Мне интересно, что мой лучший вариант - оптимизировать на
- Минимальные изменения в моем коде (код в Perl)
- Возможность легко добавлять / удалять веб-серверы, не беспокоясь о потере данных в БД
- Низкая стоимость
В краткосрочной перспективе БД, безусловно, сможет поместиться в памяти на всех машинах, поскольку она будет меньше 2 ГБ. База данных персонализации пользователя не может быть перестроена, поэтому ее важнее, а индекс можно легко перестроить. Текущий индекс сканирования MongoDB содержит около 100 тыс. Записей, которые имеют ключ в ~ 15 различных столбцах. Это сделано для скорости, так как я работаю над сайтом онлайн-знакомств (который можно искать разными способами).
Я могу придумать несколько вариантов
- Используйте SimpleDB для хранилища персонализации пользователей и MongoDB для индекса. Имейте копию индекса на всех машинах, однако я не знаю слишком много о репликации MongoDB.
- Переместить все в SimpleDB
- Переместить все в DynamoDB
Я не слишком много знаю о SimpleDB и / или DynamoDB. Судя по статьям, кажется, что DynamoDB будет естественным выбором, но я не уверен в хорошей поддержке perl, могу ли я иметь все столбцы, индексы и т. Д. У кого-нибудь есть опыт или есть какой-нибудь совет?