7

私はすでに文書データベース、特に CouchDB の単純さに興奮しています。しかし、そのようなデータベースがマルチ ユーザー システムの実行可能なオプションであるかどうかを理解するのに苦労しています。これらのシステムは、文書データベースが提供しないレコード間の何らかの関係を必要とするためです。

そのような場合、それは完全に間違ったツールですか? または、タグ付けと一時的なビューがこれを達成する方法ですか? それとも...

更新:
これまでの回答を理解しています。しかし、質問を少し言い換えさせてください。通常は CouchDB に適した半構造化データが大量にあるとします。「type=post」や「year=2008」のようにタグ付けできます。私の質問は、このタイプのタグ付けでどこまで行けるかということです。10.000 個の名前を含む配列フィールドを作成できますか? または、これを行うより良い方法はありますか?この文書ベースの意味でどのように考えるかを理解することが重要です。

4

3 に答える 3

9

少し前に、メーリング リストでこの質問にかなり当てはまる議論がありました。経験則では、変更と拡張の可能性が高いドキュメントにのみデータを保存することでした。データが大きくなる可能性が高い場合は、別のドキュメントを保存することをお勧めします。

したがって、マルチユーザー システムの場合、ACL ベースのアクセス許可を実装する 1 つの方法は、適切なアクセス許可を指定して user_id を doc_id にマッピングする「アクセス許可ドキュメント」を作成することです。

{
    _id: "permission_doc_1",
    type: "acl",
    user: "John",
    docid: "John's Account Info",
    read: true,
    write: true
}

そして、あなたの見解は、

function(doc)
{
    emit([doc.user, doc.docid], {"read": doc.read, "write": doc.write});
}

また、docid と userid が与えられた場合、パーミッションのチェックは次のようになります。

http://localhost:5984/db/_view/permissions/all?key=["John", "John's Account Info"]

明らかに、これにはクライアントとカウチの間に何らかの仲介者が必要で、権限が確実に適用されるようにする必要があります。

于 2008-09-29T15:09:09.490 に答える
3

マルチユーザー システムはリレーショナル データベースを必要としませんが、RDBMS は膨大な数の (特に CRUD) アプリケーションのデータ ストレージ/検索の主要なテクノロジです。

昔のドキュメント/オブジェクト指向の分散データベース ソリューションについて読みたい場合は、「Lotus Notes/Domino」で検索してください (この分野では成熟したテクノロジ/製品であり、ドキュメントでアプリケーションがどのように設計されているかについて十分な背景知識があります)。ベースのパラダイム. 古典的には、ワークフロー タイプのアプリケーションに非常に適しています)。

特に CouchDB については、以下を確認してください。

http://wiki.apache.org/couchdb/ (これは驚くべきことではありません)

http://seanoc.wordpress.com/2007/10/12/more-on-couchdb/ (読みやすい説明の概要)

http://twit.tv/floss36 (CouchDB に関するポッドキャスト インタビュー)

于 2008-09-29T08:26:09.567 に答える
2

@micahwittman の発言。簡単な追加: 一時ビューは本番システムでは使用しないでください。これらは開発専用です。永続ビューは、一時ビューで実行できるすべてのことを実行でき、はるかに高速です。

于 2008-09-29T08:38:38.540 に答える