QuickFIX/J的数据库表

Dre*_*kes 1 quickfix quickfixj

QuickFIX/J包含用于创建四个数据库表的SQL脚本:

  • sessions
  • messages
  • messages_log
  • event_log

我找不到任何描述每个表的目的的文档.

它们是什么,它们何时被写入,它们中的任何一个都无限增长等等......

Dre*_*kes 8

一些表用于存储,其他表用于记录(*_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)
);
Run Code Online (Sandbox Code Playgroud)

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)
);
Run Code Online (Sandbox Code Playgroud)

messages_log

QuickFIX/J可以将所有入站/出站消息记录到数据库中.该表是从库的角度来看是只写的,因此如果您希望使用此表,则由您决定.

可以在config中为入站和出站消息日志指定不同的表.默认情况下,所有消息都记录到单个表中.

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)
);
Run Code Online (Sandbox Code Playgroud)

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)
);
Run Code Online (Sandbox Code Playgroud)

正如@DumbCoder所指出的,表名可以通过config自定义.