検索インデックスをS3に置くと何が変わるのか、Infinoが設計を公開

What changes when your search index lives on S3?

検索インデックスをS3に置くと何が変わるのか、Infinoが設計を公開

Infinoは、S3やGCS、Azure Blob Storage上のオブジェクトストレージに検索インデックスを置く検索エンジンを構築した。ローカルSSDではほぼ無料だったランダム読み取りが、オブジェクトストレージでは数十ミリ秒かかり課金されるHTTP GETになるため、設計の中心はラウンドトリップを減らすことにある。インデックス単位を単一のParquetファイルにまとめ、manifestにフッターと索引ヘッダーを格納、term indexで語を含むファイルだけを特定する。

最も希少な資源はCPUでもバイト数でもなく、オブジェクトストレージへのラウンドトリップの回数であり、以下の設計判断のほとんどはそこから導かれている。
  1. mlhpdx

    逆インデックスを大規模な集約ログオブジェクトと一緒にS3に置くのは、10年以上前から有効なパターンだ。オブジェクトを安価なアクセスモードで、インデックスをよりアクセスコストの低いモードで置けば、ほとんどの選択肢(安価なS3クローンは別として)よりもはるかにコスト効率が良くなる。

    これをやった最初のコードは2012年に作られたようだ。

    コンピュートとストレージの分離は本当に素晴らしいパターンだ。

  2. MattPalmer1086

    まあ、検索インデックスをより遅くて高価なストレージに置くと何が変わるかという技術的な疑問には答えているけど、そもそもなぜそうするのかには答えていないね。

  3. tilt_error

    これってElasticsearchのsearchable snapshotsと同じではないですか?

この日のほかの記事

2026-10-17