http://www.ibm.com/developerworks/library/os-apache-cassandra/の例から抜粋。本とタグの 2 つのエンティティに関係しているとします。1 つの本には複数のタグがあるため、それらの関係は 1:M です。
記事によると、2 つの列ファミリーを作成する必要があります:Books
とTags2BooksIndex
. 前者は本に関するすべての情報 (すべてのタグを含む) を格納しますが、後者はタグから本にマップするインデックスであるため、特定のタグについて、そのタグを持つすべての本をすばやく見つけることができます。これらはすべて正常に見えます。しかし、私は質問があります:
データベースに新しい本を追加する方法を検討します: (1) 列ファミリーに新しい行を追加し、(2)この本に関連付けられたすべてのタグ行に新しい本を追加するためにBooks
更新します。Tags2BooksIndex
ステップ (1) を完了してから 2 秒後に、新しい本の行がすべてのノードにレプリケートされ、ステップ (2) がまだ進行中であるとします。からこの新しい本の行を読み取っbooks
てタグを取得し、このタグを使用して をチェックすると、まだ完全に更新されていないか、更新が行われていTags2BooksIndex
ないために新しい本が見つからないことがあります。Tags2BooksIndex
まだすべてのレプリカ ノードにレプリケートされていません。
このような状況をどのように処理しますか?2 秒を 2 ミリ秒に置き換えます。まだ不整合の時間枠があります。このような状況に対処するための「正しい/実用的な」方法を知りたいです。