Я ищу базу данных, соответствующую этим критериям:
- Может быть непостоянным;
- Почти все ключи БД необходимо обновлять один раз в 3-6 часов (ключи 100 М + с общим размером 100 ГБ).
- Возможность быстрого выбора данных с помощью ключа (или основного ключа)
- Это должна быть СУБД (поэтому LevelDB не подходит)
- Когда данные записываются, кластер БД должен иметь возможность обслуживать запросы (отдельные узлы могут быть заблокированы)
- Не в памяти - наш набор данных превысит пределы RAM
- Горизонтальное масштабирование и репликация
- Поддержка полной перезаписи всех данных (MongoDB не очищает пространство после удаления данных)
- Поддержка С# и Java
Здесь мой процесс работы с такой базой данных: У нас есть аналитический кластер, который производит 100 М записей (50 ГБ) данных каждые 4-6 часов. Данные представляют собой "ключевой массив" [20] ". Эти данные должны быть распределены пользователям через внешнюю систему со скоростью 1-10 тыс. Запросов в секунду. В среднем запрашивается только ~ 15% данных, остальная часть будет перезаписана через 4-6 часов при создании следующего набора данных.
Что я пробовал:
- MongoDB. Накладные расходы на хранение, высокая стоимость дефрагментации.
- Redis. Выглядит отлично, но он ограничен оперативной памятью, и наши данные превышают ее.
Итак, вопрос: есть ли что-то вроде Redis, но не ограничивается объемом ОЗУ?