Pergunta

Já estou animado sobre bancos de dados de documentos e, especialmente, sobre a simplicidade do CouchDB. Mas eu tenho dificuldade em compreender se esses bancos de dados são uma opção viável para sistemas multi-usuário. Desde esses sistemas requerem algum tipo de relações entre registros de quais bancos de dados de documentos não fornecem.

É completamente a ferramenta errada para esses casos? Ou alguma marcação e vistas temporárias são a maneira de conseguir isso? Ou então ...

UPDATE:
Eu entendo as respostas até agora. Mas deixe-me reformular a pergunta um pouco. Vamos dizer que eu tenho uma carga de dados semi-estruturados que normalmente é um ajuste para CouchDB. I pode marcá-los como "type = post" e "ano = 2008". A minha pergunta é o quão longe eu posso ir com este tipo de marcação? Say I pode criar um campo de matriz com 10.000 nomes nele? Ou há uma maneira melhor de fazer isso? É uma questão de entender como pensar, nesse sentido, com base documento.

Foi útil?

Solução

Houve uma discussão sobre o lista de discussão algum tempo atrás que se adapta a esta pergunta muito bem. A regra de ouro era apenas armazenar dados em um documento que é provável que cresça mudança vs.. Se é mais provável que os dados a crescer, então você provavelmente vai querer armazenar documentos separados.

Assim, no caso de um multi-usuário um sistema de maneira de implementar permissões com base ACL poderia ser a criação de 'docs permissão que seriam um mapeamento de user_id para DOC_ID com a permissão apropriada indicado.

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

E a sua opinião seria algo ao longo das linhas

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

E dado um docid e ID de usuário, verificação de permissões seria:

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

Obviamente, isso exigiria ter algum intermediário entre o cliente e sofá para ter certeza de que as permissões foram aplicadas.

Outras dicas

sistemas multi-usuário não requerem bancos de dados relacionais, embora RDBMSs são uma tecnologia básica para armazenamento de dados / recuperação para um grande número de (especialmente CRUD) aplicações.

Se você quiser ler-se no documento / object orientada, soluções de banco de dados distribuídos de outrora, pesquise "Lotus Notes / Domino" (é uma tecnologia / produto maduro nesta área que é bom conhecimento de fundo em como os aplicativos são projetados em um paradigma baseado em documentos. Classicamente, é realmente bom em aplicações do tipo de fluxo de trabalho).

No CouchDB especificamente, confira:

http://wiki.apache.org/couchdb/ (isso não deve ser uma surpresa)

http://seanoc.wordpress.com/2007/ 10/12 / mais-on-couchdb / (fácil descrição leitura visão geral)

http://twit.tv/floss36 (entrevista Podcast tudo sobre CouchDB)

O que @micahwittman diz. Basta uma rápida adição: vistas Temp nunca deve ser usado em um sistema de produção, eles são apenas para o desenvolvimento. visualizações permanentes podem fazer visualizações tudo temporários pode fazer e são magnitudes mais rápido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top