これまでの削除戦略と関連する問題
著者イーファ・モ
日付: 2019-12-18
これまでの削除戦略と関連する問題
大規模ベクトル検索エンジンのデータ管理では、データファイルの削除メカニズムについて言及した。削除にはソフト削除とハード削除がある。テーブルに対して削除操作を行うと、そのテーブルにはソフト削除のマークが付けられます。その後の検索操作や更新操作はできなくなる。しかし、削除前に開始した問い合わせ操作は実行できます。テーブルがメタデータや他のファイルとともに本当に削除されるのは、クエリ操作が完了してからです。
では、ソフト削除マークが付けられたファイルはいつ本当に削除されるのでしょうか?0.6.0より前のバージョンでは、5分間ソフト・デリートされたファイルが本当に削除されます。下図はその戦略を示しています:
5mins
この戦略は、クエリは通常5分以上続かないという前提に基づいており、信頼性がありません。クエリが5分以上続くと、クエリは失敗します。その理由は、クエリが開始されると、Milvusは検索可能なファイルに関する情報を収集し、クエリタスクを作成するからです。そして、クエリスケジューラはファイルを1つずつメモリにロードし、ファイルを1つずつ検索します。ファイルのロード時にファイルが存在しなくなった場合、クエリは失敗する。
時間を延長することは、クエリ失敗のリスクを減らすのに役立つかもしれないが、ディスク使用量が大きくなりすぎるという別の問題も引き起こす。大量のベクターが挿入されると、Milvusは継続的にデータファイルを結合し、結合されたファイルはクエリが発生していないにもかかわらず、すぐにディスクから削除されないからです。データ挿入が速すぎたり、挿入データ量が多すぎたりすると、余分なディスク使用量が数十GBに達することがあります。例として以下の図を参照:
結果
前の図に示すように、挿入されたデータの最初のバッチ(insert_1)はディスクにフラッシュされ、file_1になり、次にinsert_2はfile_2になる。ファイルの結合を担当するスレッドは、これらのファイルをfile_3に結合する。その後、file_1とfile_2はソフト削除としてマークされる。挿入データの第3バッチはfile_4になる。スレッドはfile_3とfile_4をfile_5に結合し、file_3とfile_4をソフト削除としてマークする。
同様に、insert_6とinsert_5が結合される。t3では、file_5とfile_6がソフト削除としてマークされる。t3からt4の間、多くのファイルがソフト削除としてマークされているが、それらはまだディスクに残っている。ファイルが本当に削除されるのはt4以降である。したがって、t3とt4の間のディスク使用量は、64 + 64 + 128 + 64 + 196 + 64 + 256 = 836 MBである。挿入されたデータは64 + 64 + 64 + 64 = 256 MBである。ディスク使用量は挿入データの3倍である。ディスクの書き込み速度が速いほど、特定の時間帯のディスク使用量は多くなる。
0.6.0での削除戦略の改善
v0.6.0では、ファイルの削除方法を変更しました。ハード削除では、トリガーとして時間を使用しなくなりました。代わりに、ファイルがどのタスクでも使われていないときがトリガーとなる。
新戦略
ベクターの2つのバッチが挿入されると仮定する。t1にクエリーリクエストが与えられ、Milvusはクエリーされる2つのファイル(file_1とfile_2。file_3が生成されると、file_1とfile_2はソフト削除としてマークされます。クエリーの後、他のタスクはfile_1とfile_2を使用しないので、t4でハード削除される。t2とt4の間隔は非常に小さく、クエリの間隔に依存する。このようにして、未使用のファイルは時間内に削除される。
内部的な実装としては、ソフトウェア・エンジニアにはおなじみの参照カウントを使用して、ファイルがハード・デリートされるかどうかを判断する。比較を使って説明すると、あるゲームでプレイヤーがライフを持っているとき、そのプレイヤーはまだプレイすることができる。ライフが0になるとゲームオーバーになる。Milvusは各ファイルの状態を監視している。あるファイルがタスクに使われると、そのファイルにライフが追加される。ファイルが使用されなくなると、ライフが削除される。ファイルにソフト削除のマークが付き、ライフの数が0になると、そのファイルはハード削除の準備が整ったことになる。
関連ブログ
- 0.6.0での削除戦略の改善
- 関連ブログ
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word