0

休暇中に、私はPatHellandの LifeBeyondTransactions」を読みました(そうです、休暇はとても良かったです:)。簡単にまとめると、トランザクションの範囲を単一のエンティティに制限し、エンティティを更新したり、タスクを無効にする変更が発生したときにタスクをキャンセルしたりできる「アクティビティ」のグループを使用することを提唱しています。

(たとえば、出荷オーダーAにはある程度のアイテム1が必要です。出荷オーダーとアイテムはエンティティとして保存され、独自のアクティビティがあります。出荷オーダーBは、Aが終了する前にアイテム1の最後と一緒に出荷されます。アイテム1のアクティビティは、出荷オーダーAをキャンセルします。 。)

ダイナモ紙を印刷していると思っていたので、ここで2つを混同してしまったらご容赦ください。DynamoとBigTableの影響を受けた「NoSQL」プロジェクトをかなり多く見ました。特に、キーとパーティションデータによってエンティティをアドレス指定する方法についてです。このEntity-Message-Activityモデルがそれらのいずれかに影響を与えているかどうか疑問に思いましたか?

または、より具体的に言えば、HBase、Cassandra、Riakなどで複数のエンティティにまたがる操作がある場合、アクティビティをすべて自分で実装する必要がありますか(アプリケーションのデザインパターンの詳細として) 、または既存のフレームワークのようなものはありますか?それとも、彼らはこの質問全体を無意味にする何か他のことを完全に行っていますか?

ありがとう!

4

1 に答える 1

0

Cassandra の観点から、ここに 2 セント追加できます (利用可能な他の NoSQL エンジンは使用していません)。Cassandra は主に、高速な読み書き構造になるように設計されています。Twitter は Cassandra の優れた使用例です (これについては、Twitter のクローンである Twissandraを確認してください) 。

あなたの質問を正しく理解したと仮定すると、はい、アクティビティを自分で実装する必要があります。Column/SuperColumnFamilies のモデリングを理解するには、この素晴らしい記事WTF is a SuperColumn?を読むことをお勧めします。

乾杯!

于 2010-09-24T04:59:07.017 に答える