Frage

Ich bin schon gespannt, Dokumentendatenbanken und vor allem über CouchDB Einfachheit. Aber ich habe eine harte Zeit zu verstehen, wenn diese Datenbanken ein gangbarer Weg für Multi-User-Systeme. Da diese Systeme eine Art von Beziehungen zwischen Datensätzen erfordern, die Dokumentendatenbanken nicht bieten.

Ist es vollständig das falsche Werkzeug für solche Fälle? Oder einige Tagging und temporäre Ansichten sind die Art und Weise, dies zu erreichen? Oder aber ...

UPDATE:
Ich verstehe die Antworten so weit. Aber lassen Sie mich die Frage etwas anders formulieren. Lassen Sie uns sagen ich eine Last von semi-strukturierten Daten, die normalerweise ein Sitz für CouchDB ist. Ich kann sie wie „type = post“ und „Jahr = 2008“ etikettieren. Meine Frage ist, wie weit ich mit dieser Art gehen von Tagging? Sagen kann ich ein Array-Feld mit 10.000 Namen in ihm schaffen? Oder gibt es einen besseren Weg, dies zu tun? Es geht darum, zu verstehen, wie in diesem Dokument basieren Sinn zu denken.

War es hilfreich?

Lösung

Es gab eine Diskussion über die Mailingliste eine Weile zurück, dass diese Frage ziemlich gut passt. Als Faustregel sollte nur speichern Daten in einem Dokument, das wahrscheinlich ist, ändern vs. wachsen. Wenn die Daten eher zu wachsen, ist dann die meisten wollen Sie wahrscheinlich getrennte Dokumente speichern.

So im Fall eines Multi-User-System eine Möglichkeit, ACL basierte Berechtigungen der Implementierung könnte erstellen Erlaubnis docs ", die eine Abbildung von User_id wäre mit der entsprechenden Erlaubnis DOC_ID angegeben.

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

Und Ihre Ansichten würden etwas entlang der Linien von

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

Und ein docid und Benutzer-ID angegeben, würde für Berechtigungen überprüft werden:

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

Offensichtlich würde dies erfordert einige Vermittler zwischen dem Client und Couch mit machen waren sicher, dass Berechtigungen erzwungen.

Andere Tipps

Multi-User-Systeme nicht erfordert relationale Datenbanken, obwohl RDBMS ist eine Grundtechnologie für die Datenspeicherung / Retrieval für eine große Anzahl von (vor allem CRUD) Anwendungen.

Wenn Sie auf dem Dokument / Objekt zu schreib wollen -orientierten, verteilte Datenbanklösungen von Yore, suchen Sie auf „Lotus Notes / Domino“ (es ist eine ausgereifte Technologie / Produkt in diesem Bereich, die gute Hintergrundwissen ist in, wie Anwendungen sind so konzipiert, in einem dokumentenbasierten Paradigma. Classically, es ist wirklich gut im Workflow-Typ-Anwendungen).

Auf CouchDB speziell finden Sie unter:

http://wiki.apache.org/couchdb/ (dies sollte nicht sein eine Überraschung)

http://seanoc.wordpress.com/2007/ 12.10 / mehr-on-couchdb / (einfache Lesung Beschreibung Übersicht)

http://twit.tv/floss36 (Podcast Interview alles über CouchDB)

Was @micahwittman sagt. Nur eine kurze Zusatz: Temp Ansichten sollten nie in einem Produktionssystem verwendet werden, sind sie für die Entwicklung nur. Permanent Ansichten können alles temporäre Ansichten tun können Größen tun und sind schneller.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top