🚀 Zilliz Cloudを無料で試す、完全管理型のMilvus—10倍の高速パフォーマンスを体験しよう!今すぐ試す>>

milvus-logo
LFAI

HomeBlogsこれまでの削除戦略と関連する問題

これまでの削除戦略と関連する問題

  • Engineering
December 18, 2019
Yihua Mo

著者イーファ・モ

日付: 2019-12-18

大規模ベクトル検索エンジンのデータ管理では、データファイルの削除メカニズムについて言及した。削除にはソフト削除とハード削除がある。テーブルに対して削除操作を行うと、そのテーブルにはソフト削除のマークが付けられます。その後の検索操作や更新操作はできなくなる。しかし、削除前に開始した問い合わせ操作は実行できます。テーブルがメタデータや他のファイルとともに本当に削除されるのは、クエリ操作が完了してからです。

では、ソフト削除マークが付けられたファイルはいつ本当に削除されるのでしょうか?0.6.0より前のバージョンでは、5分間ソフト・デリートされたファイルが本当に削除されます。下図はその戦略を示しています:

5mins 5mins

この戦略は、クエリは通常5分以上続かないという前提に基づいており、信頼性がありません。クエリが5分以上続くと、クエリは失敗します。その理由は、クエリが開始されると、Milvusは検索可能なファイルに関する情報を収集し、クエリタスクを作成するからです。そして、クエリスケジューラはファイルを1つずつメモリにロードし、ファイルを1つずつ検索します。ファイルのロード時にファイルが存在しなくなった場合、クエリは失敗する。

時間を延長することは、クエリ失敗のリスクを減らすのに役立つかもしれないが、ディスク使用量が大きくなりすぎるという別の問題も引き起こす。大量のベクターが挿入されると、Milvusは継続的にデータファイルを結合し、結合されたファイルはクエリが発生していないにもかかわらず、すぐにディスクから削除されないからです。データ挿入が速すぎたり、挿入データ量が多すぎたりすると、余分なディスク使用量が数十GBに達することがあります。例として以下の図を参照:

result 結果

前の図に示すように、挿入されたデータの最初のバッチ(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では、ファイルの削除方法を変更しました。ハード削除では、トリガーとして時間を使用しなくなりました。代わりに、ファイルがどのタスクでも使われていないときがトリガーとなる。

newstrategy 新戦略

ベクターの2つのバッチが挿入されると仮定する。t1にクエリーリクエストが与えられ、Milvusはクエリーされる2つのファイル(file_1とfile_2。file_3が生成されると、file_1とfile_2はソフト削除としてマークされます。クエリーの後、他のタスクはfile_1とfile_2を使用しないので、t4でハード削除される。t2とt4の間隔は非常に小さく、クエリの間隔に依存する。このようにして、未使用のファイルは時間内に削除される。

内部的な実装としては、ソフトウェア・エンジニアにはおなじみの参照カウントを使用して、ファイルがハード・デリートされるかどうかを判断する。比較を使って説明すると、あるゲームでプレイヤーがライフを持っているとき、そのプレイヤーはまだプレイすることができる。ライフが0になるとゲームオーバーになる。Milvusは各ファイルの状態を監視している。あるファイルがタスクに使われると、そのファイルにライフが追加される。ファイルが使用されなくなると、ライフが削除される。ファイルにソフト削除のマークが付き、ライフの数が0になると、そのファイルはハード削除の準備が整ったことになる。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

続けて読む