ICDE 2023 論文提出用のソース コード: 「近似ソート データのインデックス作成」
リポジトリには、B+tree および SWARE 実装のソース コードが含まれています。現在のバージョンのコードでは、どちらの実装も汎用ですが、これらのインデックス データ構造をテストするアプリケーション ファイルは整数データ型のみをサポートしています。また、アプリケーション ファイルでは、各エントリのキーと値の両方に同じ値が使用されます。コードの将来の拡張では、より大きなデータ型がサポートされる予定です。
どちらのデータ構造もコードの実行中にバッファー プールの割り当てが必要ですが、メモリ内で完全に実行する必要がある場合は、必要な量まで拡張できます。バッファ プールの割り当ては、各ブロックが 4KB であるブロック数で指定されます。たとえば、1M ブロックの割り当てを使用する場合、ツリー データ構造には 1M*4KB = 4GB のメモリが割り当てられることになります。
SA B+ ツリーには、プログラムの実行中にメモリ内バッファに保持できるエントリの数と、バルクロード中に維持するフィル ファクタも必要です。各エントリはキーと値のペアです。
このリポジトリ https://github.com/BU-DiSC/bods の並べ替えデータ ジェネレーターを使用して、取り込みキーを生成します (ペイロード サイズ = 0 を指定してキーのみを生成できます)。上で述べたように、アプリケーション ファイルは各エントリ (K、V ペア) のキーと値の両方に同じ値を使用します。生成されたワークロードへのパスをメモします。
./ test_base_index < ingestion_workload_path > < output_file_name > < buffer_pool_allocation > < K > < L > < #. queries >
たとえば、次のように使用します。
./ test_base_index createdata_1000000 - elems_100000 - K_100000 - L_1seed1632764083 . dat sample . txt 1000000 100000 100000 200000
ここでは、K=L=100,000 で 100 万個のエントリ/キーのワークロードを取り込んでいます。 1M ブロックのバッファー プール キャッシュを使用し、200,000 ポイントのクエリを実行しています。インジェスト クエリとポイント クエリの両方の出力レイテンシは、「sample.txt」に書き込まれます。
./ test_satree < ingestion_workload_path > < output_file_name > < buffer_pool_allocation > < K > < L > < #. entries > < swareBuffer allocation > < fill factor % > < #. queries >
たとえば、次のように使用します。
/ test_satree createdata_1000000 - elems_10 - K_10 - L_1seed1632764083 . dat swaresample . txt 1000000 10 10 1000000 10000 95 200000
ここでは、K=L=100,000 (総エントリの 10%) で 100 万個のエントリ/キーのワークロードを取り込んでいます。 1M ブロックのバッファー プール キャッシュを使用し、200,000 ポイントのクエリを実行しています。インジェスト クエリとポイント クエリの両方の出力レイテンシは、「swaresample.txt」に書き込まれます。メモリ内バッファには 10,000 エントリ (1M の 1%) が保持され、フィル ファクタは 95% を維持します。