8

HBaseが各列ファミリーを別々のHFileに格納するという事実と、行が多くの列ファミリーにまたがることができるという事実を考慮してください。HBaseは、複数の列ファミリーにまたがる行のput / delete操作が実際にアトミックであることをどのように保証しますか?

4

2 に答える 2

7

その行にいくつの列ファミリーがあるかに関係なく、すべての書き込みは1つのリージョンサーバーに移動し、そのリージョンサーバーは編集をリージョンWAL(Hlog)に書き込み、次に書き込みが同期され、次にデータが書き込まれます。 memstoreに追加されるので、提供されます。次に、memstoreが制限に達すると、memstoreがディスクにフラッシュされます。リージョンサーバーに問題が発生し、クラッシュ/停止/プラグが引っ張られた場合は、WALを実行してすべての一貫性を保つことができます。厄介な詳細については、HBASE-2283およびHbaseArchitecture101を参照してください。

于 2011-08-01T06:00:23.110 に答える
1

HBaseは現在、すべての列ファミリーを同時にフラッシュすることにより、複数のHFileを記述しているにもかかわらず、行レベルの原子性を実現しています。最大の列ファミリーが構成されたフラッシュサイズに達すると、フラッシュがトリガーされます。追加のMemStoreレベルのタイムスタンプがあり、MemStore読み取りに対してマルチバージョン同時実行制御を実行できますが、HFilesに書き込まれるキー/値には存在しません。列ファミリごとのフラッシュ(効率を向上させるための望ましい機能)に切り替えるには、同様のタイムスタンプをファイル形式に追加する必要があります。

于 2011-08-03T21:31:02.753 に答える