7

次のプロセスが墓石にどのような影響を与えるか、誰か説明してもらえますか?

1.)キー「1」で「行」を作成する(「フィールド」:ユーザー、パスワード、日付)

2.)キー「1」で「行」を削除する

3.)キー「1」で「行」を作成する(「フィールド」:ユーザー、パスワード、ログイン数)

シーケンスは1つのスレッドで順番に実行されます(したがって、これは比較的高速の「速度」で発生します=アクション間に長い休止はありません)。

私の質問:

1.)これはトゥームストーンの作成にどのような影響を及ぼしますか。2.)トゥームストーンが作成/存在した後。しかし、新しい(わずかに変更された行)が同じキーの下で(ステップで)再度作成された場合、既存のトゥームストーンはどうなりますか3.)。カサンドラは墓石を非常に効率的に「蘇生」させることができますか?)

2.)「フィールド」を非常にターゲットを絞って削除し、代わりにdate「」フィールドを作成する場合と比較して、上記のプロセスはどれほど悪いですか?logincount(おそらくパフォーマンスが向上します。しかし、逆に、行全体を削除して正しいデータで最初から再作成する場合と比較して、削除されたフィールドを見つけるのははるかに複雑です...)

備考/更新:

私が実際にやりたいのは、"date"フィールドをに設定することnullです。しかし、これはカサンドラでは機能しません。値にヌルを使用することはできません。したがって、nullに設定したい場合は、削除する必要があります。しかし、この明示的な2番目の削除要求は、パフォーマンスに悪影響を与えるのではないかと心配しています(nullに設定するだけの場合と比較して)...そして、説明したように、最初にどのフィールドがnull化され、何よりも値があったかを確認する必要があります(この状態のすべての属性を比較します...)

どうもありがとうございます!マーカス

4

3 に答える 3

7

ここで遅ればせながらいくつかのことを明らかにしたいと思います。

まず、セオドアの答えに関して:

1)簡単にするために、すべての行には内部にトゥームストーンフィールドがあるため、新しい行がトゥームストーンとマージされると、「新しいデータを含む行であり、時間Xで一度削除されたことも記憶されます」になります。したがって、その点で実際のペナルティはありません。

2)「列の値を迅速に作成および削除して、途中でフラッシュが行われない場合...トゥームストーンは単に破棄される」と言うのは誤りです。墓石は、正確さのために常に保持されます。おそらく、セオドアが考えていた状況は逆でした。削除してから新しい列の値を挿入すると、新しい列がトゥームストーンに置き換わります(廃止された値と同じように)。列はストレージの「アトム」であるため、これは行の場合とは異なります。

3)(2)を考えると、時間の経過とともに削除される列が多い場合、delete-row-and-insert-new-oneのパフォーマンスが向上する可能性があります。ただし、単一の列の場合、違いはごくわずかです。

最後に、タイラーの答えに関して、私の意見では、値を空の[バイト]文字列に変更するよりも、問題の列を単に削除する方が慣用的です。

于 2011-09-07T02:33:17.610 に答える
4

1)。全体を削除しても、トゥームストーンは保持され、手順3での後続の挿入によって蘇生されません。これは、かなり前に行が挿入された可能性があるためです(たとえば、手順0:キー "1"、フィールド名")。行「1」キー「名前」は削除されたままにする必要がありますが、行「1」キー「ユーザー」は蘇生されます。

2)。途中でフラッシュが発生しないように値を迅速に作成および削除する場合、パフォーマンスへの影響はありません。列はMemtableのインプレースで更新され、トゥームストーンは単に破棄されます。単一の値のみがSSTableに永続的に書き込まれることになります。

ただし、ステップ2と3の間にMemtableがディスクにフラッシュされると、トゥームストーンは結果のSSTableに書き込まれます。後続のフラッシュは、新しい値を次のSSTableに書き込みます。これにより、列を両方のSSTableから読み取り、調整する必要があるため、後続の読み取りが遅くなります。(同様に、ステップ1と2の間にフラッシュが発生した場合。)

于 2011-09-05T11:14:10.737 に答える
1

空の文字列を保持するように「日付」列を設定するだけです。これは、nullの代わりに通常使用されるものです。

列を削除する場合は、行全体を削除するのではなく、列を明示的に削除してください。これによるパフォーマンスへの影響は、列の値に空の文字列を書き込むのと似ています。

于 2011-09-03T21:35:30.560 に答える