2016-04-27 5 views
1

CMSシステムのMySQLの代わりにCouchbaseを探しています。 私が困惑するものの1つは、トランザクションの不足です コンポーネントの上にバージョン管理を実装しました エディタがコンポーネントを保存するたびに、前のバージョンが新しいリビジョンとして保存されます さらに、任意のアクションであるため、更新は別のテーブルに記録されます。 全体として、少なくとも3つのテーブルにデータを書き込むアップデートがあります これは上記のすべてがトランザクションでラップされているため、MySQLでは問題ありません。上記のいずれかが失敗した場合、トランザクションは中断され、何も書き込まれません。CMSの永続性層としてのCouchbase

私はCouchbaseが単一のドキュメントに対して行われた操作にアトミック性を提供することを理解します。 そのようなユースケースはどのようにcouchbaseでカバーされますか?

よろしく

答えて

0

私はCouchbaseのに非常に新しいんだけど、私がこれまで学んだことから:単一のドキュメント上

  • 操作をアトミックです。
  • 楽観的同時実行性のためにCASを使用できます。

それでは、私は、あなたのデータをJSONドキュメントとしてモデル化すること、そしてb)CASを使用して他の人がドキュメントを変更していないことを確認することをお勧めします。

ないあなたが使用しているどのような言語/ SDK確認が、ここでは、.NET SDKを使用してCASの例です:あなたが記述http://developer.couchbase.com/documentation/server/4.0/sdks/dotnet-2.2/check-and-swap.html

+1

こんにちは、ご返信ありがとうございます。両方の点は有効であり、それらを考慮しましたが、1つの "トランザクション"で複数の文書を作成/更新する問題を解決していないようです – Thomas

+0

それは良い質問です。私はまだCouchbaseの新人だから、もっと調べてみるつもりだ。ここにいくつかの情報がありますが、より簡単な方法があるようです。http://docs.couchbase.com/developer/dev-guide-3.0/transactional-logic.html –

1

要件は必ずしもトランザクションロジックを必要としません。新しいバージョンのコンテンツを追加するには、新しいバージョン番号またはタイムスタンプを持つドキュメントとして新しいバージョンを挿入するだけで、以前のバージョンに触れることなく行うことができます。現在のドキュメントは、最も高いバージョン番号またはタイムスタンプを持つドキュメントで、CBビューを使用して簡単に取得できます。追加のロギングテーブルは冗長であり、元のデータの適切なビューに置き換えることができます。ユニークなバージョン番号の場合、CBはhttp://developer.couchbase.com/documentation/server/current/developer-guide/counters.htmlで記述されている原子カウンターの概念を提供します。

もちろん、トランザクションを行うための追加の要件があるかもしれません。書籍http://www.apress.com/9781430266136には、124〜133ページにトランザクションを実装する方法が記載されています。なぜCB開発者は、可能性のあるように見えるのか、そのような機能を自社の製品に統合していないのだろうか。

だから本質は次のとおりです。

  • あなたは取引せずに行うには機会があれば試してみてください。

  • 本当に必要な場合は、引用符付きの方法が有効かどうかを確認してください。