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