Рекомендуемая база данных/хранилище для тысяч транзакций в секунду

Мне нужно иметь возможность вставлять тысячи транзакций в секунду в какое-либо хранилище и иметь возможность быстро запрашивать его.

Что я хотел бы сделать, так это регистрировать все TCP-запросы (ключом является исходный или целевой IP-адрес). Затем, когда поступает другой запрос, проверьте, находится ли предыдущий запрос по IP в хранилище/базе данных/кэше, и выполните соответствующее действие.

SQLExpress, SQLCompact, SQLIte, MongoDB, Firebird? Являются ли какие-либо из них достаточно быстрыми?

Должен ли я просто использовать структуру данных в памяти некоторого описания?

Магазин должен быть доступен для нескольких потоков одновременно...

Любые предложения, пожалуйста...

ОБНОВЛЕНИЕ: RaptorDB? Это хорошо? Стоит рассмотреть вместе с другими базами данных/noSQL выше? http://www.codeproject.com/KB/database/RaptorDB.aspx


person user296191    schedule 28.10.2011    source источник
comment
Вы упускаете одну важную информацию: как долго вы должны иметь возможность делать запросы? У вас может быть структура данных в памяти для запросов и, возможно, запись на диск партиями для целей истории.   -  person driis    schedule 29.10.2011
comment
Глядя примерно на 1 час, но может потребоваться 2 часа данных. В сети 1000 компьютеров, поэтому немного беспокоюсь об использовании памяти при хранении 1 часа данных TCP-трафика в памяти.   -  person user296191    schedule 29.10.2011
comment
Это может быть больше вопрос для сайта обмена стеками администраторов баз данных.   -  person Barry Brown    schedule 29.10.2011
comment
Мне любопытно - что вы делаете по-другому, если машина (IP) уже сделала запрос по сравнению с тем, что это первый запрос? Звучит так, как будто вы пытаетесь продублировать некоторые функции, которые могут уже существовать - пожалуйста, уточните.   -  person tsells    schedule 29.10.2011
comment
Он записывает DNS-запросы и делает некоторые причудливые вещи, касающиеся перенаправления трафика...   -  person user296191    schedule 29.10.2011


Ответы (1)


На этих скоростях вашим узким местом, скорее всего, будет ваш диск; стандартный диск SATA может выполнять всего несколько десятков транзакций в секунду. Чтобы дополнить диск, набросьте на него много оперативной памяти, чтобы база данных хранилась в основном в памяти.

В качестве альтернативы просто сделайте все это в памяти, свернув свой собственный регистратор, который использует ассоциативный массив. Вам нужно регистрировать ВСЕ отправляемые данные или только тот факт, что ПК А отправил данные на ПК Б?

person Barry Brown    schedule 28.10.2011