Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

設定

laurus-server は CLI 引数、環境変数、TOML 設定ファイルで設定できます。

設定の優先順位

サーバーとインデックスの設定は以下の順序で解決されます(優先度が高い順)。

CLI 引数 > 環境変数 > 設定ファイル > デフォルト値

ログの詳細度は RUST_LOG 環境変数でのみ制御します(デフォルト: info)。

例:

# CLI 引数が環境変数と設定ファイルより優先される
LAURUS_PORT=4567 laurus serve --config config.toml --port 1234
# -> ポート 1234 でリッスン

# 環境変数が設定ファイルより優先される
LAURUS_PORT=4567 laurus serve --config config.toml
# -> ポート 4567 でリッスン

# CLI 引数も環境変数も未設定の場合、設定ファイルの値が使用される
laurus serve --config config.toml
# -> config.toml のポートを使用(未設定の場合はデフォルト 50051)

TOML 設定ファイル

フォーマット

[server]
host = "0.0.0.0"
port = 50051
http_port = 8080  # オプション: HTTP ゲートウェイを有効化

[index]
data_dir = "./laurus_data"

[index.wal]
sync_policy = "group"          # "per_record"(デフォルト) | "group"
group_max_records = 1024       # オプション; デフォルト 1024
group_max_bytes = 1048576      # オプション; デフォルト 1 MiB
group_max_interval_ms = 1000   # オプション; 未設定時は background timer なし(native のみ)

[index.commit]
policy = "every_docs"          # "manual"(デフォルト) | "every_docs" | "interval"
every_docs = 1000              # オプション; N 件ごとに commit(0/未設定で無効)
interval_ms = 1000             # "interval" のみ; 最低 N ミリ秒ごとに commit(native のみ)

ログの詳細度は設定ファイルではなく、RUST_LOG 環境変数で制御します(デフォルト: info)。

フィールドリファレンス

[server] セクション

フィールドデフォルト説明
hostString"0.0.0.0"gRPC サーバーのリッスンアドレス
portInteger50051gRPC サーバーのリッスンポート
http_portIntegerHTTP ゲートウェイポート。設定すると gRPC と並行して HTTP/JSON ゲートウェイが起動

[index] セクション

フィールドデフォルト説明
data_dirString"./laurus_data"インデックスデータディレクトリのパス

[index.wal] セクション

Write-Ahead Log(WAL)の耐久性ポリシーを制御します。セクション全体を省略した場合、 WAL は per-record fsync を使用します(各書き込みは返る前に durable 化されます)。 このポリシーは、起動時に開かれるインデックスと、後から CreateIndex で作成される インデックスの両方に適用されます。耐久性のトレードオフについては 永続化と WAL → WAL 耐久性ポリシー を参照してください。

フィールドデフォルト説明
sync_policyString"per_record"耐久性ポリシー: "per_record"(書き込みごとに fsync)または "group"(fsync をバッチ化)
group_max_recordsInteger1024グループコミットのみ。前回 sync 以降にこの件数のレコードが蓄積したら flush
group_max_bytesInteger1048576グループコミットのみ。前回 sync 以降にこのバイト数が蓄積したら flush(デフォルト 1 MiB)
group_max_interval_msIntegerグループコミットのみ。定期 background flush の間隔(ミリ秒)。未設定時は timer なし。native ターゲットのみwasm32 では無視される

sync_policy = "group" の場合、WAL は前回 sync 以降に group_max_recordsまたは group_max_bytes バイトのいずれか(先に到達した方)が蓄積した時点、および commit 時に 無条件で flush します。クラッシュ時には未 sync の最終バッチまで失う可能性があります (SQLite synchronous = NORMAL に相当)。途中で切れた末尾レコードはリカバリ時に 破棄されるため、復旧後のログにはギャップが生じません。

[index.commit] セクション

自動コミットポリシーを制御します。セクション全体を省略した場合、エンジンは manual — サーバーがインデックスを materialize するときのみ commit します (インジェスト中の自動コミットはありません)。このポリシーは、起動時に開かれる インデックスと、後から CreateIndex で作成されるインデックスの両方に適用されます。 セマンティクスは 永続化と WAL → 自動コミットポリシー を参照してください。"interval""every_docs" の時間ベース版であり、native のみ — WebAssembly では background thread がないため no-op になります。

フィールドデフォルト説明
policyString"manual"自動コミットポリシー: "manual"(呼び出し側が commit を駆動)、"every_docs"every_docs 件ごとに commit)、または "interval"(最低 interval_ms ミリ秒ごとに commit)
every_docsIntegerevery_docs ポリシーのみ。適用ドキュメント数がこの値に達するごとに commit。未設定(または 0)で自動コミット無効("manual" と同等)
interval_msIntegerinterval ポリシーのみ。background timer により最低この間隔(ミリ秒)ごとに自動コミットするため、インジェストがアイドルでも末尾の部分バッチが commit されます — every_docs の時間ベース版。native ターゲットのみwasm32 では no-op として扱われます(background thread なし)

CommitPolicy[index.wal] と直交します。WAL セクションは append がいつ fsync されるか を、このセクションは ストアがいつ materialize するか を制御します。commit は 必ず WAL flush から始まるため、自動コミットは任意の WAL ポリシー下で機能します。

環境変数

変数対応する設定説明
LAURUS_HOSTserver.hostリッスンアドレス
LAURUS_PORTserver.portgRPC リッスンポート
LAURUS_HTTP_PORTserver.http_portHTTP ゲートウェイポート
LAURUS_INDEX_DIRindex.data_dirインデックスデータディレクトリ
RUST_LOGログフィルタディレクティブ(例: info, debug, laurus=debug,tonic=warn
LAURUS_CONFIGTOML 設定ファイルのパス

CLI 引数

オプション短縮形デフォルト説明
--config <PATH>-cTOML 設定ファイルのパス
--host <HOST>-H0.0.0.0リッスンアドレス
--port <PORT>-p50051gRPC リッスンポート
--http-port <PORT>HTTP ゲートウェイポート
--index-dir <PATH>./laurus_indexインデックスデータディレクトリ(グローバルオプション)

よくある設定例

開発環境(gRPC のみ)

[server]
host = "127.0.0.1"
port = 50051

[index]
data_dir = "./dev_data"
RUST_LOG=debug laurus serve --config config.toml

本番環境(gRPC + HTTP ゲートウェイ)

[server]
host = "0.0.0.0"
port = 50051
http_port = 8080

[index]
data_dir = "/var/lib/laurus/data"

最小構成(環境変数のみ)

export LAURUS_INDEX_DIR=/var/lib/laurus/data
export LAURUS_PORT=50051
export LAURUS_HTTP_PORT=8080
export RUST_LOG=info
laurus serve