Что такое хорошие решения NoSQL и нереляционные базы данных для базы данных аудита/ведения журнала

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

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

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

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

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

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

Ответ 1

Два из них, которые я видел успешно, MongoDB и Cassandra.

Ответ 2

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

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

Ответ 3

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

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