検索インデックスをS3に置くと何が変わるのか、Infinoが設計を公開
What changes when your search index lives on S3?

Infinoは、S3やGCS、Azure Blob Storage上のオブジェクトストレージに検索インデックスを置く検索エンジンを構築した。ローカルSSDではほぼ無料だったランダム読み取りが、オブジェクトストレージでは数十ミリ秒かかり課金されるHTTP GETになるため、設計の中心はラウンドトリップを減らすことにある。インデックス単位を単一のParquetファイルにまとめ、manifestにフッターと索引ヘッダーを格納、term indexで語を含むファイルだけを特定する。
最も希少な資源はCPUでもバイト数でもなく、オブジェクトストレージへのラウンドトリップの回数であり、以下の設計判断のほとんどはそこから導かれている。
HNでの議論
11- mlhpdx
逆インデックスを大規模な集約ログオブジェクトと一緒にS3に置くのは、10年以上前から有効なパターンだ。オブジェクトを安価なアクセスモードで、インデックスをよりアクセスコストの低いモードで置けば、ほとんどの選択肢(安価なS3クローンは別として)よりもはるかにコスト効率が良くなる。
これをやった最初のコードは2012年に作られたようだ。
コンピュートとストレージの分離は本当に素晴らしいパターンだ。
- MattPalmer1086
まあ、検索インデックスをより遅くて高価なストレージに置くと何が変わるかという技術的な疑問には答えているけど、そもそもなぜそうするのかには答えていないね。
- tilt_error
これってElasticsearchのsearchable snapshotsと同じではないですか?