kroks
@kroks
Координатор проектов, разработчик C++/C#/RoR

Какую базу данных выбрать для системы мониторинга событий?

При разработке системы сбора статистики событий столкнулся с тем, что мне необходимо выбрать БД, которая решит следующие задачи:
  • Быстрая скорость записи, т.к. данные могут приходить довольно часто
  • Легкая возможность расширений (больше всего нравится гибкость cassandr'ы)
  • Желательна поддержка из коробки (ну или с небольшими плясками) MapReduce
  • Возможность выборки не только по ключам
  • Возможность выборки не только по индексам
  • Высокая скорость больших выборок (сами выборки не сложные, по двум параметрам, но возвращают большой набор строк)
  • Нормальное хранение > 10^9 записей (во всем кластере, но не ручная, а автоматическая балансировка записей)
  • Желательна встроенная репликация (например, как у той же cassandr'ы)
  • Крайне желательна свободная лицензия
Рассмотренные варианты:
Cassandra
+ Простое расширение
+ Репликация
+ Можно подружить с Hadoop
- Ограничения на выборку
Memcached
- Выборка только по ключам
MySQL/MSSQL/PostgreSQL
- Масштабируемость
? Нормальность репликации для данной задачи

P.S. Я понимаю, что идеальный инструмент получится найти, но все же хочется принять наиболее правильное решение
  • Вопрос задан
  • 2924 просмотра
Пригласить эксперта
Ответы на вопрос 4
jj_killer
@jj_killer
Cassandra, она самая быстрая на запись, у нее хорошо с репликацией и Hadoop'ом. Один минус, она не dev-френдли, каждый новый разработчик будет долго вникать даже в основы. На счет выборки, тут надо заранее думать над схемой.

Можно попробовать еще Amazon RedShift(с COPY-инсертом), так можно будет сохранить удобство выборки, но это полностью закрытое решение.

CouchDB вообще непонятно причем тут.
Ответ написан
slaykovsky
@slaykovsky
CouchDB
Ответ написан
Комментировать
afiskon
@afiskon
Посмотрите, подойдет под ваши задачи или нет - eax.me/riak
Ответ написан
Комментировать
golotyuk
@golotyuk
MySQL + репликация + шардинг подойдет. Плюсы - технология проверена годами, используется в огромном количестве случаев (Facebook использует MySQL как key-value хранилище). Минусы - балансировку нужно делать руками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы