Решил все же дать жизнь своей мечте в создании одного не маленького проекта. И возникает вопрос, что же лучше использовать для Primary Storage?
На данный момент, думаю над PostgreSQL (MySql) или же каким-то NoSql решением (на примете Redis).
Задача проекта, это сбор информации с разных источников с большой скоростью.
Но вот, появляется куча ньюансов в из-за которых не могу определиться:
1. Редис все же быстрый (я бы сказал очень быстрый), но имеет больше процент потери данных при падании сервера чем реляционная БД
2. Редис не дает возможности явно указывать связи между сущностями.
3. БД (MySQL) при огромном количестве записей (ожидается более 20 млн записей) очень сильно начинает «тупить».
Поставленные требования:
1. Быстрая скорость записи/чтения
2. Возможность репликации на другие сервера
3. Фильтров почти нету, по сути, только списки.
4. Допустима потеря данных до 2%
Может кто-то сталкивался с такой задачей, и имеет опыт. Буду очень благодарен за ответы/советы. Спасибо!
UPD
Примерные характеристики сервера для первого старта:
Intel Core Duo i7, 32 Gb, ~ 1 Tb (берем на хетцнере).
Нагрузки на чтения/запись:
Запись: > 2000 — 3000 в секунду
Чтение: ~ 500 — 1500 в секунду (Тяжело сказать, так как будет зависеть от количества пользователей)
MongoDB начиная с версии 2.4 вполне пригоден для продакшн. И репликация есть и отличная скорость. Используем в боевом проекте. Объем базы 32 Гб. Три реплики в реальном времени. Пишет только мастер. Читают только слейвы(у нас операций чтений больше почти в 20 раз)
На первый взгляд может показаться, что отсутствие реплики мастер-мастер — не есть гут. Однако в БД реализованы механизмы переизбрания мастера в случае падения.