Назад | Перейти на главную страницу

база данных для хранения сетевого трафика

Я разрабатываю программное обеспечение для мониторинга сетевого трафика, и мне нужен сервер базы данных, который бы очень быстро сохранял и запрашивал поля заголовков пакетов. Я знаю, что существует формат файла .pcap, но он мне не подходит, так как я собираюсь хранить около 10 терабайт трафика в день. Существует ли какой-то специализированный сервер баз данных для сетевого трафика?

При такой громкости вы задаете неправильный вопрос. Вам следует задать вопрос: на какие вопросы мне нужно ответить, используя собранную мной информацию?

Отсюда вы можете ответить на вопрос о механизмах хранения. Вам действительно нужен каждый байт? Нужна ли вам структура для ответов на специальные вопросы или для ответов на очень структурированные и конкретные вопросы?

Можете ли вы разделить его на несколько машин или вы ограничены одной системой?

Вам нужно читать и писать одновременно - что более чем удвоит ваши IOPS - или это делается в разное время? Вам нужна индексация в реальном времени или вы можете создать их отдельно? Вам вообще нужна индексация? На что?

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

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

Учитывая объемы данных, о которых вы говорите, источник данных практически не имеет значения.

Во-первых, вам нужно подумать о том, как вы собираетесь передавать 100 МБ / с данных по сети в точку сбора (или, что еще лучше, точки, потому что распределенная система, вероятно, потребуется для обработки нагрузки).

Затем вам нужно подумать о том, как вы собираетесь построить свою базу данных, чтобы обрабатывать такое количество входящих записей. Как вы собираетесь распределить нагрузку на несколько дисков? Как вы собираетесь избежать конфликтов, если несколько серверов пытаются зафиксировать данные одновременно? Сколько избыточности вам нужно, чтобы учесть отказы дисков во время записи на них, и как вы убедитесь, что ваша система может восстановиться после такого отказа без потери каких-либо входящих данных?

Затем вам нужно подумать о том, как вы собираетесь запрашивать данные. Выполнение запроса к той же базе данных, которая занята попыткой добавить 100 МБ / с данных в свои таблицы, вероятно, вызовет проблемы с конкуренцией. Собираетесь ли вы на следующий день выполнять пакетную обработку? Если вам нужен анализ в реальном времени, как вы собираетесь справиться с дополнительной нагрузкой, которую он вызывает, не прерывая записи, которые все еще поступают?

Вам не нужен «специализированный сервер баз данных для сетевого трафика», вам нужна специализированная система баз данных с большим объемом записи. После того, как вы решите эти проблемы, выяснение точной схемы, необходимой для хранения нужных вам данных, будет почти второстепенным.