Pergunta

Eu gosto de uma idéia de bancos de dados orientados documentos, como CouchDB. Eu estou procurando analógico simples.

As minhas exigências é apenas:

  1. armazenamento de persistência para o esquema menos dados;
  2. alguns quering simples in-proc;
  3. bom ter transações e controle de versão;
  4. ruby ??API;
  5. map / reduce é aslo bom ter;
  6. deve funcionar em hospedagem compartilhada

O que não precisamos é REST / HTTP de interfaces (vou usá-lo in-proc). Também eu não preciso de todas as coisas escalabilidade.

Foi útil?

Solução

Uma solução muito simples seria PStore partir de biblioteca padrão do ruby. Ele deve atender a quase todas as suas necessidades:

  1. PStore armazena rubi hierarquias de objeto em arquivos, assim você pode facilmente utilizar o Hash-like estruturas, você teria em CouchDB
  2. Você pode acessar o conteúdo do PStore com uma API simples
  3. Tem transações, mas há versões tanto quanto eu sei
  4. sim
  5. Você pode usar o mapa de Ruby e injetar funções
  6. Tudo que você precisa é ter acesso ao sistema de arquivos

Exemplo:

Inserir dados para o armazenamento:

require 'pstore'
store = PStore.new("/tmp/store")
store.transaction do
  store["products"] = [{:name => "Test", :price => 100}
                       {:name => "Bla", :price => 120}
                       {:name => "Oink", :price => 300}]
end

Consulta a soma dos preços de todos os produtos:

store.transaction do
  store['products'].map {|p| p[:price]}.inject {|sum, p| sum + p}
end

Mais informação neste blogue post

Outras dicas

Parece que você precisa Berkeley DB . Ele faz tudo o que você lista, exceto por mapa / reduzir.

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