O NoSQL não precisa ser difícil. De modo geral, não é. Mas, reconhecidamente, e especialmente no Windows, nem sempre é tão limpo quanto poderia ser. Cada banco de dados tem seus desafios. Alguns são difíceis de instalar. Alguns são difíceis de configurar. Alguns têm ferramentas de administração de servidor ruins. Alguns não têm suporte sólido à biblioteca do cliente. Uma das ofertas de NoSQL que realmente faz as coisas direito é o Couchbase Server. OK, revelação total, esta é minha primeira postagem no dllHell (onde esta postagem foi publicada originalmente) como Developer Advocate do Couchbase!
O Couchbase foi criado quando o Membase e o CouchOne se fundiram. O Couchbase Server 2.0 será um banco de dados NoSQL híbrido, combinando recursos de armazenamentos distribuídos de chave/valor e bancos de dados orientados a documentos. O produto 2.0 será lançado em 2012. Em janeiro de 2012, uma versão provisória 1.8 será o primeiro lançamento oficial do Couchbase Server mesclado, antigo Membase Server. Como parte de minhas responsabilidades no Couchbase, estou trabalhando na biblioteca de cliente .NET para o Couchbase Server 1.8. Veja abaixo uma prévia do que está por vir. Se você já usou o Membase Server com .NET, deve estar familiarizado com o código abaixo. Se você é novo no Couchbase Server, vou começar do início.
Instalação do servidor Couchbase
A maioria dos bancos de dados NoSQL tem instaladores para Windows, embora às vezes eles não sejam mantidos atualizados. No caso do CouchDB, há alguns pacotes MSI diferentes disponíveis, mas apenas um funciona (pelo menos até outubro de 2011). O MongoDB tem um instalador de linha de comando para seu serviço. Felizmente, o Couchbase Server tem um instalador do Windows com suporte oficial. Você pode fazer o download do
instalador mais recente aqui. No momento em que escrevo este texto, a versão mais recente do servidor é a 1.7.2. Volte em janeiro para conferir a versão 1.8. Obtenha a Community Edition do Membase Server, que é apropriada para fins de desenvolvimento. O Membase Server será renomeado para Couchbase Server com a versão 1.8. Você também pode obter o 2.0 Developer Preview, que já tem o novo nome.
Depois de executar o instalador, você será levado ao console de administração baseado na Web. O console de administração é onde você poderá configurar o cluster e gerenciar os nós dentro desse cluster. No desenvolvimento local, você provavelmente terá um cluster de nó único (por exemplo, sua máquina de desenvolvimento).

Depois de colocar o servidor em funcionamento, é hora de escrever algum código. Se você criar um aplicativo de console simples, a maneira mais fácil de incluir a biblioteca do cliente Couchbase .NET no seu aplicativo é usar o Nuget. Depois de adicionar a referência, adicione a seguinte instrução using:

Em seguida, adicione a seguinte linha ao seu método Main:
estático vazio Principal
(string[] argumentos
) {
var cliente
=novo Cliente Couchbase
();
}
Depois de adicionar essas linhas, compile o aplicativo. Você provavelmente receberá um estranho erro de compilação informando que o namespace "Couchbase" não pode ser encontrado. A razão pela qual você verá esse erro é que o Visual Studio 2010 (presumi que você está usando o 2010) padroniza os projetos de console para usar o .NET 4 Client Profile, que é um subconjunto do .NET 4. Você precisará atualizar a versão do .NET para o .NET 4.0 (ou 3.5). Depois de fazer essa alteração, você poderá compilar.

Em seguida, você precisará adicionar algumas informações de configuração ao seu app.config. O arquivo inteiro deve ter a seguinte aparência:
<configuração>
<configSections>
<seção nome="membase" tipo="Couchbase.Configuration.CouchbaseClientSection, Couchbase"/>
>
<membase>
<servidores balde="default" bucketPassword=“”>
<add uri="http://127.0.0.1:8091/pools/default"/>
>
>
>
Na seção config, você fornece ao cliente detalhes sobre como se conectar e onde os dados serão gravados. Para dizer ao CouchbaseClient para usar a seção app.config, atualize a declaração da seguinte forma:
var cliente
=novo Cliente Couchbase
("membase");
Salvar e ler tipos de dados primitivos é tão fácil quanto salvar e ler tipos definidos pelo usuário. Portanto, criarei algumas classes Brewery e Beer (intencionalmente simplificadas).
[Serializável]
público classe Cervejaria {
público string Nome { obter; definir; }
público string Cidade { obter; definir; }
público string Estado { obter; definir; }
}
[Serializável]
público classe Cerveja {
público string Nome { obter; definir; }
público Cervejaria Cervejaria { obter; definir; }
público decimal ABV { obter; definir; }
}
Essas classes são apenas POCOs (Plain Old CLR Objects) que foram marcadas como serializáveis. Criarei uma instância de cada uma delas em meu método Main.
var brewery =novo Cervejaria {
Cidade = "Hartford",
Estado = "CT",
Nome = "Cervejaria Thomas Hooker"
};
var cerveja =novo Cerveja {
Cervejaria = cervejaria,
Nome = "American Pale Ale",
ABV = 5.3m
};
Em seguida, manterei a instância da Beer chamando o método Store do cliente. Observe que o StoreMode exige que a instrução using adicional seja adicionada para Enyim.Caching.Memcached.
cliente.Store(StoreMode.Set, beer.Name, beer);
Após o armazenamento, lerei a cerveja novamente e exibirei seu nome.
var savedBeer = cliente.Obter<Cerveja>("cerveja"); Console.WriteLine(Cerveja salva.Nome);
E é isso, muito fácil, certo? Reconhecidamente, esta é uma introdução muito simplificada ao Couchbase Server. Como agora estou assumindo a biblioteca de clientes .NET, publicarei tutoriais e exemplos mais detalhados.
Estou ansioso pelo CBS 2.0. Essa biblioteca cliente é baseada no código Enyim ou é totalmente nova?
Oi Claus,
O cliente continuará a usar a base de código do Enyim. Com o CBS 2.0, o cliente evoluirá para dar suporte à nova funcionalidade do servidor, como as visualizações. Quando o CBS 1.8 for lançado, teremos documentos atualizados que abrangem as alterações de curto prazo no cliente.
- João
Você precisaria fazer um client.Get(\"American Pale Ale\"), certo?
Sim, mas .... o exemplo é inválido porque você não pode ter espaços \" \" na chave
Como configurar diferentes buckets para que possam ser acessados a partir do mesmo cliente .net?
Oi Brad,
Infelizmente, isso não é compatível com o cliente atualmente. Você teria que criar uma segunda instância do cliente. Há uma configuração por cliente e cada configuração suporta apenas um único bucket.
- João
Só para esclarecer: você está dizendo que seria necessária outra instância do aplicativo cliente em execução ou seria necessário criar outra instância da classe CouchbaseClient? A segunda opção é aceitável para mim, mas não está claro para mim como configurar meus buckets e instanciar as instâncias do CouchbaseClient para usar o bucket correto.
Você precisaria de uma segunda instância do CouchbaseClient - cada instância está vinculada a um único bucket. Há algumas opções de configuração...
O mais fácil seria usar a configuração programática. Tenho um exemplo em - https://github.com/couchbase/c.... Observe que essa configuração é para o Couchbase Server DP3+, portanto, se você estiver usando o servidor 1.8 com o cliente 1.0, as configurações após as Urls não se aplicam.
A outra opção é criar duas seções de configuração em app.config (ou web.config). Você teria que fazer algo parecido com a configuração abaixo. Você teria que configurar seus clientes com os nomes das seções no construtor.
Diga-me se isso ajuda...
var clientA = new CouchbaseClient(\"bucketA\");
var clientB = new CouchbaseClient(\"bucketB\");