Hoje é um dia emocionante para nós da NorthScale. Juntamente com nossos parceiros Zynga e NHN, nós anunciado a formação do projeto de código aberto membase. O Membase é um simples, rápido, elástico "NoSQL" (absolutamente ódio Esse termo, e apoiaremos com prazer qualquer pessoa que consiga reunir o mundo em torno de um nome melhor) sistema de gerenciamento de banco de dados. Atualmente, o Membase está fornecendo dados para alguns dos aplicativos da Web mais movimentados do planeta. O projeto está hospedado em membase.org onde o código-fonte, a documentação e as informações da comunidade estão disponíveis.
Além do lançamento do membase.org, nós anunciado disponibilidade beta de Servidor NorthScale Membasenossa distribuição comercialmente suportada do software de código aberto. A versão Beta 1 está disponível como um pacote RPM (certificado para os sistemas operacionais Red Hat e CentOS de 32 e 64 bits, versões 5.2 e 5.4). O Beta 2 adicionará suporte ao Ubuntu, seguido pelo suporte aos sistemas operacionais cliente e servidor Microsoft Windows no Beta 3. Há uma grande quantidade de informações detalhadas sobre o projeto e o produto disponíveis em membase.org e northscale.comPor isso, em vez de repeti-la aqui, usarei esta postagem do blog para fornecer um pouco de história sobre o projeto e a motivação por trás dele. No início de 2009, a NorthScale foi fundada por líderes do projeto de software de código aberto memcached para responder a uma série de perguntas e solicitações que ouvimos na comunidade. Eles deixaram cada vez mais claro que os usuários do memcached gostavam tanto da tecnologia que queriam começar a usá-la (e, em muitos casos...), estavam usando-o) para coisas que nunca foram planejadas para serem usadas. A maioria dessas "coisas" girava em torno de tratar o memcached como se fosse um banco de dados, em vez do cache distribuído muito simples que ele é. O Memcached é um cache (vá entender). Ele é usado para armazenar dados em cache de forma transitória, na memória, espalhados uniformemente em um cluster de servidores de commodities. Se um servidor ficar cheio, o memcached ejetará da memória o objeto de dados usado menos recentemente para abrir espaço para dados mais "quentes". Se um servidor for desconectado, os dados, que estão armazenados em cache na memória volátil, serão naturalmente perdidos. Isso é muito bom com o memcached, porque os aplicativos que usam o memcached devem estar em posição de reconstruir quaisquer dados necessários, a qualquer momento, a partir de um banco de dados durável. Normalmente, os aplicativos fazem isso armazenando os dados em um sistema de gerenciamento de banco de dados relacional. Se os dados não forem encontrados no cache (ou se o próprio cache não for encontrado!), o aplicativo poderá simplesmente consultar o banco de dados. Em alguns casos, sem saber, mas em muitos casos com pleno conhecimento do que foi dito acima, os aplicativos estavam armazenando dados no memcached como se eles fossem ficar lá para sempre. Algumas organizações se esforçaram ao máximo para se proteger, garantindo que sempre houvesse excesso de capacidade de memória em cada nó e investindo em sistemas de gerenciamento de energia para garantir que as quedas de energia não derrubassem a memória. Isso levanta a questão: por que pessoas inteligentes se esforçariam tanto para usar algo que é tentando ativamente perder seus dadospara armazenar seus dados? Três palavras: simples, rápido e elástico. As pessoas gostam do memcached porque ele representa um local praticamente ilimitado para armazenar dados em cache com facilidade, a um custo muito baixo e com um desempenho previsivelmente estelar. Sem esquemas, sem tabelas, sem fragmentação, sem normalização, sem ajuste. Se você quiser colocar algo no memcached, você o coloca lá. Por que colocá-lo em dois lugares? O Memcached é uma lufada de ar fresco. E há benefícios econômicos substanciais: um cluster do memcached é escalonável (basta adicionar mais caixas de commodities para aumentar a capacidade), com custo linear e desempenho agregado constante. Até o infinito, para todos os fins práticos. Atraente. Como um canto da sereia. Entre no membase. Sem nunca comprometer a simples, rápido, elástico e, ao mesmo tempo em que garante a compatibilidade 100% on-the-wire com o memcached (agora e no futuro, dada a nossa alavancagem direta do código front-end do memcached), o membase acrescenta:
- persistência - armazenamento de dados em SSD e mídia giratória, dentro ou fora do nó
- Replicação - fornece alta disponibilidade, copiando dados para vários membros do cluster e oferecendo suporte a um rápido failover
- configuração dinâmica do cluster - adicione e remova servidores e reequilibre os dados em um cluster ativo sem afetar os aplicativos em execução
Para as dezenas de milhares de aplicativos memcached já em execução, e sem alterar uma única linha de código, o membase oferece um local simples, rápido e elástico para armazenar dados. Embora a tecnologia de banco de dados relacional sempre faça sentido para algumas classes de dados, o desejo observado de usar o memcached como banco de dados deixou claro que há uma necessidade de algo que possa armazenar dados com mais facilidade, economia e desempenho superior em todo o espectro de dimensionamento. Portanto, aproveite o canto da sereia. O Membase é livre de pedras.