Skip to content

Latest commit

 

History

History
134 lines (113 loc) · 4.21 KB

README.md

File metadata and controls

134 lines (113 loc) · 4.21 KB

概要

cross_tableバイナリについてのドキュメント置き場.

ディレクトリ概要

.
├── README.md
├── common_error.md
├── data_in_out.md
├── guarantee.md
├── how_to_use.md
└── server_state.md

入出力の簡単なイメージ

Firmから入力されたデータに対してISVサーバがどのような出力を返すかを簡単に説明します.

入力と出力の関係性についての説明であって,情報を秘匿するロジックや効率のよいアルゴリズムなど,実際にISV内部で動いているプログラムの説明ではないことに注意してください.

1. csv を送信する.

Firm1,2 がそれぞれ以下のような,IDと属性をheaderに持つテーブルをcsv形式で共通のISVサーバに送信します.

ID height
A1B2C 160
D3E4F 170
G5H6I 180
J7K8L 160
O3P4Q 180
M9N0O 170
P1Q2R 180
X9Y0Z 180
S3T4U 160
V5W6X 170
Y7Z8A 180
B9C0D 160
L1M2N 170
R5S6T 160
U7V8W 170
ID weight
A1B2C 50
D3E4F 60
G5H6I 70
J7K8L 50
Q3W4E 60
M9N0O 60
P1Q2R 70
F6G7H 70
S3T4U 50
V5W6X 60
Y7Z8A 70
B9C0D 50
L1M2N 60
O3P4Q 70
Z2A4B 50

2.ISVサーバがテーブルをjoinする

ISVサーバは受信した2つのテーブルをIDをkeyにしてjoinします. このとき,共通しないIDのデータは削除されます. また,Column名の先頭にはどちらのFirmから送られてきたデータかを表すbitが付与されます.

ID 0:height 1:weight
A1B2C 160 50
D3E4F 170 60
G5H6I 180 70
J7K8L 160 50
M9N0O 170 60
O3P4Q 180 70
P1Q2R 180 70
S3T4U 160 50
V5W6X 170 60
Y7Z8A 180 70
B9C0D 160 50
L1M2N 170 60

3.ISVサーバがテーブルを属性ごとにまとめる

ID列を削除したのち,同じ内容の行をひとまとまりにし,その個数を number_of_rows columnに書き込みます.

例えば,0:height, 1:weight がそれぞれ 170, 60 の行は3行あるので,それらを一つの行にまとめ,number_of_rows columnに3を書き込みます.

number_of_rows 0:height 1:weight
2 160 50
3 170 60
1 180 70
1 160 50
1 170 60
1 180 70
1 180 70
1 160 50
1 170 60
1 180 70
1 160 50
1 170 60

4.閾値未満の行の削除

number_of_rows が実行時にFirm側で指定した閾値 k 未満の行を削除します.

例えば閾値が $2$ に指定されていた場合,number_of_rows$1$ の行を全て削除します.

number_of_rows 0:height 1:weight
2 160 50
3 170 60

閾値が $0$ に指定されていた場合は何も起きません.

5.マッチングテーブルの返送

ISVサーバはFirm0,1に最終的なテーブルを送信します.

number_of_rows 0:height 1:weight
2 160 50
3 170 60