Классика баз данных - статьи

       

Доставка сообщений, поступивших первыми


В компаниях с Уолл-стрит принято подписываться на несколько каналов информации о разовом изменении цены акций: Reuters, Comstock или Infodyne. Распространенным приложением является доставка первого поступившего сообщения об изменении цены акции из канала, у которого в данный момент имеется наименьшая задержка. Поступающие позже дубликаты отбрасываются, и в результате создается единый виртуальный канал, содержащий информацию об изменении цены акции, которая поступила первой.

Очевидно, что нужно доставлять сообщения, поступившие первыми, без ожидания запаздывающих дубликатов. В противном случае будет утрачен весь смысл приложения – сокращение времени задержки. Для краткости мы опускаем код StreamSQL для этого приложения. Однако в реализации на основе StreamBase с использованием персонального компьютера с процессором Pentium стоимостью в 1000 долларов удалось получить пропускную способность в 281000 сообщений в секунду. В отличие от этого, для поддержки логики РСУБД пришлось создать таблицу недавно поступивших сообщений об изменении цены акций и производить поиск в этой таблицы для проверки того, что поступившее сообщение не является дубликатом. Если сообщение оказывается дубликатом, оно отбрасывается, иначе доставляется и заносится в таблицу. С помощью нашего кудесника-администратора нам удалось на основе РСУБД добиться пропускной способности в 11790 сообщений в секунду при использовании таблицы недавно поступивших сообщений и 51700 сообщений в секунду при использовании массива внутри хранимой процедуры.

В [Sto05a] мы обсуждали причины того, что специализированные средства обработки потоков данных обеспечивают гораздо более высокую производительность таких приложений, чем РСУБД. Здесь мы приведем краткую сводку этих причин:

  • Средства StreamSQL не выполняются в режиме «клиент-сервер». Поэтому отсутствуют переключения процессов. В отличие от этого, РСУБД построены в расчете на недоверие к приложениям, и поэтому они должны выполняться в адресных пространствах, отделенных от адресных пространств приложений.
  • Большая часть средств StreamSQL производит обработку исключительно в виртуальной памяти.

    Содержание  Назад  Вперед