1

couchdbについて読んでいるときに、トランザクションとcouchdbについての質問に出くわしました。どうやら、Couchでトランザクションを処理する方法は、最新バージョンをプルして、現在使用しているバージョンと比較することです。データが急速に変化している場合、これは問題を引き起こす可能性があります。もう1つの方法は、マップリデュースを行い、トランザクションデータを複数のドキュメントに分離することです。これも最適ではないようです。

この種のデータにredisを使用することを考えていました。インクリメント関数とデクリメント関数は、この種の目的にはかなり驚くべきもののようです。

したがって、トランザクションキーに対して次のような文字列を記述できます。

//some user document
{
   name: "guy",
   id: 10,
   page_views: "redis user:page_views:10"
}

次に、トランザクションデータの一部の中にある「redis」のようなものを読んだ場合、その情報をredisから取得する必要があります。これらのことは事前に決めることができると思いますが、ドキュメント指向データベースの主な使命は柔軟性があり、データを列にバインドしないことなので、もっと簡単な方法があるのではないかと思いました。

redisデータをcouchdbにリンクする簡単な方法はありますか?これをすべて手動で行う必要がありますか?また、表示されるいくつかのフィールドに対して行う必要がありますか?他に何か考えはありますか?このトランザクションデータをユーザードキュメントで「最終的に」更新する方がよいでしょうか、それとも単にそこに保存しない方がよいでしょうか。

4

1 に答える 1

3

RedisとCouchDBはどちらも「簡単」(つまり、シンプル)です。その点で、あなたが説明していることは簡単です。もちろん、2つのデータベースを使用することで、アプリケーションの複雑さが増します。しかし一方で、CouchDBとRedisの組み合わせが人気を集めています。

私が知っている2つを統合する唯一のツールは、MikealRogersのredcouchです。シンプルなツールです。おそらく、それを拡張して必要なものを追加することができます(そしてプルリクエストを送信します!)。

より広い考慮事項は、RedisにはCouchDBが提供する完全なレプリケーション機能セットがないことです。そのため、RedisはCouchDBでの将来のオプションを制限する可能性があります。具体的には、Redisはマルチマスターレプリケーションをサポートしていません。CouchDBとは対照的に、常に一元化されたRedisデータベースがあります。(間違っている場合は訂正してください。RedisよりもCouchDBの方が強力です。)

于 2012-05-28T00:42:34.447 に答える