QuickFIX/J には、次の 4 つのデータベース テーブルを作成するための SQL スクリプトが含まれています。
sessions
messages
messages_log
event_log
これらの各テーブルの目的を説明しているドキュメントは見つかりません。
それらは何のためにあるのか、いつ書き込まれるのか、それらのいずれかが無期限に成長するのかなど...
一部のテーブルはストアに使用され、他のテーブルはログ(*_log
テーブル)に使用されます。ログはオプションですが、QuickFIX/J が動作するにはストアが必要です (セッション状態を追跡し、メッセージの再送信をサポートします)。
sessions
このテーブルは、アクティブな FIX セッションを追跡します。セッションには、primary key
以下の宣言に示されている 8 つの値の複合キーがあります。
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 は、すべてのインバウンド/アウトバウンド メッセージをデータベースに記録できます。テーブルはライブラリの観点からは書き込み専用なので、このテーブルを使用するかどうかはあなた次第です。
インバウンドおよびアウトバウンドのメッセージ ログに対して、config で異なるテーブルを指定できます。デフォルトでは、すべてのメッセージが 1 つのテーブルに記録されます。
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 を介してカスタマイズできます。