2

QuickFIX/J には、次の 4 つのデータベース テーブルを作成するための SQL スクリプトが含まれています。

  • sessions
  • messages
  • messages_log
  • event_log

これらの各テーブルの目的を説明しているドキュメントは見つかりません。

それらは何のためにあるのか、いつ書き込まれるのか、それらのいずれかが無期限に成長するのかなど...

4

1 に答える 1

12

一部のテーブルはストアに使用され、他のテーブルはログ(*_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 を介してカスタマイズできます。

于 2014-02-24T14:02:17.740 に答える