私は Scala DB フレームワーク/ラッパーを調査していて、Twitter から Gizzard に出会いました。最初は感動しましたが、制限を読んで冷静になりました。彼らは、あなたが行うすべての DB 操作はべき等である必要があると言います可換。ちゃんと理解すれば、基本的にはほとんど何も残らない。例として、整数カウンターを持つエンティティがあり、インクリメントする必要があるとします。「増分」操作または「設定」操作のいずれかを使用できます。しかし、increment は冪等ではなく (2 回実行すると、1 回実行すると異なる結果が得られます)、set は可換ではありません (最初に 5 を設定し、次に 2 を設定すると、最初に 2 を設定し、次に 5 を設定すると、異なる結果が得られます)。したがって、ほとんどのユースケースであまり役に立たない「insert-if-absent」以外に何か残っているものはありますか? 基本的に何も役に立たないほど制約されている分散データベースフレームワークのポイントは何ですか? 私は何か重要なものを見逃しているに違いない。
[編集] 「insert-if-absent」(および「delete-if-present」) とは別に、「compare-timestamp-and-set」は、変更が破棄される代わりにキューに入れられる場合、冪等かつ可換であると思います。 「以前の変更」がまだ欠落している場合。しかし、DBがそれを実装しているかどうかはわかりません。