1

私は現在、php呼び出しと単一のMySQLデータベースを介して単一のWebサーバーと通信する読み取りの多いモバイルアプリ(90%の読み取り、10%の書き込み)を持っています。dbには、ユーザープロファイル情報とユーザーが送受信するメッセージが格納されます。1秒あたり数件のメッセージがデータベースに追加されます。

水平方向のスケーリングや負荷分散などを行っています。そのため、Webサーバーのクラスターの前にロードバランサーを配置し、MySQLクラスターの上にCouchbaseノードのレイヤーを配置して次のことができるようにします。ユーザープロファイル情報とメッセージ情報にすばやくアクセスできます。すべてのユーザー情報をCouchbaseにmemcacheしますが、読み取りアクティビティのほとんどが発生する時間枠であるため、Couchbaseに最新の24時間分のメッセージのみをmemcacheします。

memcacheに保存されているメッセージデータについては、国、都市、時間などのメッセージのフィールドで見つかったさまざまなデータに基づいてメッセージをフィルタリングできるようにしたいです。CouchbaseはKVアプローチを使用しているため、where句を使用してクエリを実行することはできません。 MySQLの場合と同じように。

これを行う方法はありますか?CouchbaseViewsが答えですか?それとも、Couchbaseで間違ったツリーを完全に吠えていますか?

4

1 に答える 1

0

Couchbase Server 2.0 以降のビューは、探しているものです。Couchbase に入れられるデータが JSON の場合、これらのビューを使用して、Couchbase クラスターに入れられたデータに対してクエリを実行できます。

日付時刻を配列として発行するビューを使用することもできます (一般的な手法)。また、それを使用してビュー期間を制限することもできるため、データを配置する必要なく、すべてのデータを Couchbase に保存できる可能性があります。別のシステムでも。ただし、他の理由がある場合は、キャッシュに入れてから 24 時間後にアイテムを期限切れにすることができます。次に、それをサポートするクライアントのいずれかを使用している場合は、必要に応じて有効期限を延長して、キャッシュ内のドキュメントを取得および操作できます。唯一の欠点は、更新時にドキュメントを無効にする方法を考え出す必要があることです。

これを行う 1 つの方法は、特定のキーを削除する mysql のトリガーです。別の方法は、アプリケーション層からキーを無効にすることです。

ps: 完全な開示: 私は Couchbase 関係者の 1 人です

于 2012-05-18T15:39:58.257 に答える