Question

Je suis déjà enthousiasmé par les bases de documents et plus particulièrement par la simplicité de CouchDB. Mais j'ai du mal à comprendre si de telles bases de données sont une option viable pour les systèmes multi-utilisateurs. Étant donné que ces systèmes nécessitent une sorte de relation entre les enregistrements, ce que les bases de documents ne fournissent pas.

Est-ce vraiment le mauvais outil pour de tels cas? Ou certains marquages ??et vues temporaires sont le moyen d'y parvenir? Ou bien ...

UPDATE:
Je comprends les réponses jusqu'à présent. Mais laissez-moi reformuler la question un peu. Disons que j'ai une charge de données semi-structurée qui convient normalement à CouchDB. Je peux les taguer comme "& type; post = " et "année = 2008". Ma question est la suivante: jusqu'où puis-je aller avec ce type de marquage? Peut-on créer un champ de tableau contenant 10 000 noms? Ou y a-t-il une meilleure façon de faire cela? Il s’agit de comprendre comment penser dans ce sens basé sur le document.

Était-ce utile?

La solution

Une discussion a eu lieu sur le liste de diffusion qui correspond assez bien à cette question. La règle empirique était de ne stocker que des données dans un document susceptible de changer ou de grandir. Si les données risquent davantage de croître, vous souhaiterez probablement stocker des documents distincts.

Ainsi, dans le cas d'un système multi-utilisateur, une façon d'implémenter des autorisations basées sur ACL pourrait être de créer des "documents d'autorisation" qui seraient un mappage de user_id à doc_id avec l'autorisation appropriée indiquée.

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

Et vos points de vue seraient similaires à

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

Et avec un ID utilisateur et un ID utilisateur, la vérification des autorisations serait:

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

Évidemment, cela nécessiterait la présence d’un intermédiaire entre le client et le canapé pour s’assurer que les autorisations ont bien été appliquées.

Autres conseils

Les systèmes multi-utilisateurs ne ne requièrent pas de bases de données relationnelles, bien que les SGBDR soient une technologie de base pour le stockage / la récupération de données pour un grand nombre d'applications (notamment CRUD).

Si vous souhaitez consulter des solutions de base de données distribuées autrefois axées sur les documents / objets, effectuez une recherche sur "Lotus Notes / Domino". (Il s'agit d'une technologie / d'un produit mature dans ce domaine, qui possède une bonne connaissance de base de la façon dont les applications sont conçues dans un paradigme basé sur des documents. De manière classique, il est vraiment bon pour les applications de type workflow).

Sur CouchDB en particulier, consultez:

http://wiki.apache.org/couchdb/ (cela ne devrait pas être une surprise)

http://seanoc.wordpress.com/2007/ 10/12 / more-on-couchdb / (aperçu de la description, lecture facile)

http://twit.tv/floss36 (interview Podcast sur CouchDB)

Ce que @micahwittman dit. Juste un ajout rapide: les vues temporaires ne doivent jamais être utilisées dans un système de production, elles sont uniquement destinées au développement. Les vues permanentes peuvent faire tout ce que les vues temporaires peuvent faire et les magnitudes sont plus rapides.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top