Каковы хорошие NoSQL и нереляционные решения для баз данных для аудита / регистрации базы данных - PullRequest
14 голосов
/ 05 мая 2010

Какая база данных подойдет для следующих? Меня особенно интересует ваш опыт работы с нереляционными системами NoSQL . Насколько они хороши для такого использования, какую систему вы использовали и порекомендуете, или я должен использовать обычную реляционную базу данных (DB2)?

Мне нужно собрать информацию журнала аудита / типа журналирования из группы источников в централизованный сервер, на котором я мог бы эффективно генерировать отчеты и проверять, что происходит в системе.

Обычно событие аудита / регистрации всегда состоит из некоторых обязательных полей, например

  • глобально уникальный идентификатор (как-то сгенерированный программой, которая генерировала это событие)
  • 1012 * Отметка времени *
  • тип события (т. Е. Пользователь вошел в систему, произошла ошибка и т. Д.)
  • некоторая информация об источнике (server1, server2)

Кроме того, событие может содержать 0-N пар ключ-значение, где значение может составлять до нескольких килобайт текста.

  • Он должен работать на сервере Linux
  • Должно работать с большим количеством данных (например, 100 ГБ)
  • он должен поддерживать какой-то эффективный полнотекстовый поиск
  • Это должно позволять одновременное чтение и запись
  • Он должен быть гибким, чтобы добавлять новые типы событий и добавлять / удалять пары ключ-значение для новых событий. Гибкость = никаких изменений в схеме базы данных не требуется, приложение, генерирующее события, может просто добавлять новые типы событий / новые поля по мере необходимости.
  • должно быть эффективно делать запросы к базе данных. Для сообщения и изучения того, что случилось. Например:
    • Сколько событий с типом = X произошло за определенный период времени.
    • Получить все события, где поле A имеет значение Y.
    • Получить все события с типом X, а поле A имеет значение 1, а поле B не равно 2 и событие произошло за последние 24 часа

Ответы [ 3 ]

4 голосов
/ 05 мая 2010

Успешно использовались два вида: MongoDB и Кассандра .

2 голосов
/ 19 сентября 2010

мне идти с нормальной реляционной базой данных (DB2)?

Да, ты должен! Если вы просто хотите сохранить материал и отсканировать его, вы можете также записать в файл. Очень быстро, без накладных расходов! Но в ту минуту, когда вы хотите суммировать данные за какое-то время (последние 24 часа или между временем t и t + 1), чем больше вы заботитесь о данных как о чем-то, кроме строк текста, нет сомнений в том, что надлежащая СУБД - ваш друг.

2 голосов
/ 11 сентября 2010

Мы использовали Redis для всей нашей централизованной регистрации всех наших серверов приложений на mflow.com. Он очень быстрый, который на основе этих тестов делает около 110000 SET в секунду, около 81000 GET в секунду. Он имеет реализацию виртуальной машины (если ваш набор данных превышает доступную память), которая выгружает нечастые значения на диск.

Это усовершенствованный сервер структур данных, который может хранить любые бинарно-безопасные данные с встроенной поддержкой строк, списков, наборов, отсортированных наборов и хэшей. Основываясь на обсуждениях в списке рассылки, многие люди активно используют его для хранения аналитики.

...