Я работаю над проектом, который объединяет и анализирует журналы как часть более крупного проекта.Я не знаю, какую базу данных выбрать для обработки этих журналов.В последнее время я возвращаюсь назад и назад между MongoDB и Cassandra, но я уверен, что есть и другие, которые соответствуют моим потребностям.Какой из них выбрать и почему?
Все это в самом начале, но вот требования:
- журналы в формате системного журнала
- запросы в основном в маленькой строке, которая сейчас находится в сообщении, но я получу ее в отдельном поле.Также будут фильтры по дате, серьезности или тегу.Очень редко люди просто ищут случайную строку в сообщении.
- почасовая аналитика по некоторым записям журнала
- ведет журналы в течение настраиваемого промежутка времени
- я уверен, что еще больше придет :) Вот почему я думаю, что NoSQL более уместен, потому что мы можем изменить схему.
Мы ожидаем, что база данных увеличится до некоторого ТБ данных (и ~ 50K вставок в секунду), поэтому шардинг является обязательным.Запросы не так часто, потому что они в основном используются разработчиками более крупного проекта.Но результат должен быть возвращен через несколько секунд.
Сейчас хранилище является общим (и медленным) для всех машин.Так что для масштабируемости, я полагаю, нам нужно наилучшим образом использовать память и многопоточность - для того, чтобы осколки имели смысл.
Основные идеи, которые я получил до сих пор, заключаются в том, что MongoDB имеет больше функций, таких как регулярное выражение или сортировка.результаты, и его легче настроить на приличную конфигурацию, в то время как Cassandra кажется более масштабируемой (путем простого добавления серверов), а также имеет несколько полезных функций, таких как наложение TTL на данные.