Таблицы базы данных для QuickFIX/J

QuickFIX/J включает сценарии SQL для создания четырех таблиц базы данных:

  • sessions
  • messages
  • messages_log
  • event_log

Я не могу найти документацию, описывающую назначение каждой из этих таблиц.

Для чего они, когда пишутся, какие-то из них растут до бесконечности и т.д...


person Drew Noakes    schedule 18.02.2014    source источник
comment
Ошибочно утверждать, что QuickFIX/J требует четырех таблиц базы данных. Использование базы данных является необязательным в QuickFIX/J (отдельно необязательным для состояния сеанса и журналов) и не рекомендуется, если у вас есть даже скромные требования к производительности. Таблицы состояния сеанса очищаются в начале каждого сеанса. Таблицы журналов будут расти бесконечно, поэтому в какой-то момент вам понадобится какой-то подход к архивированию.   -  person Frank Smith    schedule 01.03.2014
comment
Спасибо, Фрэнк. Это хороший момент. Вопрос обновлен.   -  person Drew Noakes    schedule 02.03.2014


Ответы (1)


Некоторые таблицы используются для хранилища, другие используются для регистрации (таблицы *_log). Для работы QuickFIX/J требуется хранилище. (он отслеживает состояние сеанса и поддерживает повторную отправку сообщений), тогда как журнал не является обязательным.


sessions

Эта таблица отслеживает активные сеансы FIX. Сеансы имеют составной ключ из восьми значений, показанных в объявлении primary key ниже.

creation_time используется для определения того, к какому сеансу это относится.

Столбцы *_seqnum отслеживают текущие порядковые номера для сеанса и используются для надежности вместе с запросами на повторную отправку.

create table sessions (
  beginstring  char(8) not null,
  sendercompid varchar(64) not null,
  sendersubid  varchar(64) not null,
  senderlocid  varchar(64) not null,
  targetcompid varchar(64) not null,
  targetsubid  varchar(64) not null,
  targetlocid  varchar(64) not null,
  session_qualifier varchar(64) not null,
  creation_time timestamp not null,
  incoming_seqnum integer not null,
  outgoing_seqnum integer not null,
  primary key (beginstring, sendercompid, sendersubid, senderlocid,
               targetcompid, targetsubid, targetlocid, session_qualifier)
);

messages

Эта таблица обеспечивает постоянное хранилище сообщений FIX, отправленных во время активного сеанса. Если сторона, с которой осуществляется связь, требует повторной отправки сообщений, QuickFIX/J будет использовать эту таблицу для определения содержания сообщений.

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

create table messages (
  beginstring char(8) not null,
  sendercompid varchar(64) not null,
  sendersubid varchar(64) not null,
  senderlocid varchar(64) not null,
  targetcompid varchar(64) not null,
  targetsubid varchar(64) not null,
  targetlocid varchar(64) not null,
  session_qualifier varchar(64) not null,
  msgseqnum integer not null,
  message text not null,
  primary key (beginstring, sendercompid, sendersubid, senderlocid,
               targetcompid, targetsubid, targetlocid, session_qualifier,
               msgseqnum)
);

messages_log

QuickFIX/J может регистрировать все входящие/исходящие сообщения в базу данных. Таблица доступна только для записи с точки зрения библиотеки, поэтому вам решать, хотите ли вы использовать эту таблицу или нет.

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

create sequence messages_log_sequence;

create table messages_log (
  id integer default nextval('messages_log_sequence'),
  time timestamp not null,
  beginstring char(8) not null,
  sendercompid varchar(64) not null,
  sendersubid varchar(64) not null,
  senderlocid varchar(64) not null,
  targetcompid varchar(64) not null,
  targetsubid varchar(64) not null,
  targetlocid varchar(64) not null,
  session_qualifier varchar(64),
  text text not null,
  primary key (id)
);

event_log

В эту таблицу записывается журнал событий. Примеры включают:

Расписание сессии FIX.4.2:FOO->BAR ежедневно, 07:00:00-UTC - 21:00:00-UTC

Созданный сеанс: FIX.4.2:FOO->BAR

Инициированный запрос на вход

Получен вход

create sequence event_log_sequence;

create table event_log (
  id integer default nextval('event_log_sequence'),
  time timestamp not null,
  beginstring char(8) not null,
  sendercompid varchar(64) not null,
  sendersubid varchar(64) not null,
  senderlocid varchar(64) not null,
  targetcompid varchar(64) not null,
  targetsubid varchar(64) not null,
  targetlocid varchar(64) not null,
  session_qualifier varchar(64),
  text text not null,
  primary key (id)
);

Как указывает @DumbCoder, имена таблиц можно настроить с помощью config.

person Drew Noakes    schedule 24.02.2014
comment
Обратите внимание, что сценарии SQL для различных типов баз данных находятся здесь: github.com/quickfix /quickfix/tree/master/src/sql - person David; 10.05.2021