1

私は CouchDB の詳細を読んでいて、とても気に入っています (master:master レプリケーションは、CouchDB を使用したい主な理由の 1 つです)。

しかし、皆さんに質問したいことがあります...私はphpから来て、Drupal CMSをかなり頻繁に使用しました。私のお気に入りの 1 つ (おそらく drupal コミュニティ全体) は、MerlinOfChaos によって作成された 'Views' プラグインです。アイデアは、管理者がビュー UI システムを使用して、データベースからコンテンツの動的ストリームを作成できるということです。このコンテンツは、あらゆる種類のコンテンツ (ブログ投稿、記事、ユーザー、画像など) からのものであり、フィルタリング、並べ替え、グリッドへの配置などを行うことができます。簡単な例の 1 つは、アニメーション スライダーのコンテンツ ソースの作成です。管理者がいつでもアクセスして、そこに表示される内容を変更できる場所。通常は、コンテンツ タイプ X の最新の 5 つとして設定します。

mongoのようなもので、これを行う方法をちょっと見ることができました。管理者が必要とするものを db クエリに変換する、かなり高度なパーサー。mongo はすべて動的クエリに基づいているため、非常に実行可能です。でもソファが使いたい。

パラメータを取り、それに基づいて結果を返すビューを作成できることを確認しました (表示したい 5 つの記事 ID のパラメータなど)。しかし、UI からさらに高度なものを構築できるようにしたい場合はどうすればよいでしょうか? パラメータを追加するだけですか?たとえば、作成されたビューが値 'contentType' = 'post' を持つすべてのドキュメントを選択し、引数が id/ページ タイトルであるとします。しかし、ビューがクエリを実行する対象のコンテンツ タイプをエンド ユーザーが選択できるようにしたい場合はどうすればよいでしょうか。それとも、コンテンツ タイプが 3 つの異なる値のいずれかである限り、最新の 5 つの記事ですか?

これが私に考えさせるもう1つのことは、このようなビューが作成されてdbに保存され、初めて呼び出されると、結果を構築するのに時間がかかることです。本番/ライブ システムでこれを行いますか?

アイデアの一部は、サイト上の記事や投稿に基づいて、エンド ユーザーがプロファイル ページにコンテンツのカスタム フィードを作成できるようにすることです。それらをフィルタリングして独自のカテゴリを作成し、いわばそれらにラベルを付けることができます。「テクノロジー」フィードや「フード」フィードなどです。

私はまだソファに慣れていないので、まだ読む必要があります。しかし、これは私を悩ませていたものであり、私はそれについて頭を悩ませようとしています. 私が考えている製品は、エンドユーザーの入力に基づいて非常に動的になるためです。

アプリケーション自体は python で記述されます

4

1 に答える 1

1

一言で言えば、ビューで次のようなものを発行する必要があります。

emit([doc.contentType, doc.addDate], doc); // emit the entire doc, 
// add date is timestamp (assuming)

また

emit([doc.contentType, doc.addDate], null); // use with include_docs=true

次に、リストを取得する必要がある場合:

startkey=["post",0]&endkey=["post",999999999]&limit=5&descending=true

説明:

startkey   = ["post",0] = contentType is post, and addDate >= 0
endkey     = ["post",9999999999] = contentType is post, and addDate <= 9999999999
limit      = 5, limit to five posts
descending = true = sort descending, which is sort by adddDate descending

ライブ データベースのビューを更新する際の欠点を克服するために
、新しいデザイン (ビュー) ドキュメントを作成することもできます。
したがって、少なくとも既存のコードとビューは影響を受けません。

新しいビューが作成された後でのみ、最新のコードをデプロイしてこの新しいビューに切り替え
、古いビューを廃止できます。

于 2013-03-28T08:58:44.270 に答える