[SP-pm] [OT] NoSQL

Thiago Rondon thiago at aware.com.br
Tue Jun 1 16:06:17 PDT 2010


Segue minha opnião sobre ....

O movimento Not Only SQL é muito interessante no meu ponto de vista 
técnico, pois hoje possuímos mais alternativas na hora de estudar uma 
determinada implementação em relação aos dados. Não vou entrar no mérito 
sobre questões polemicas relacionadas as escolhas de cada desenvolvedor.

Porém aqui na Aware, estamos com experiências ótimas relacionadas a esta 
gama de banco de dados alternativos que vem surgindo e cada vez mais me 
interessam, principalmente em casos de análises comparativas, 
escalabilidade, performance e replicação.

Eu considero que este movimento, existam alguns bancos de dados 
interessantes que podem ser classificados nas seguintes "categorias" de 
modo "geral":

* Chave/Valor:
São utilizados principalmente para escalabilidade de dados, no geral é 
os que você vai utilizar para evitar problemas relacionado a demoras de 
análises constantes no teu cenário, e etc, etc.

Me parece que os mais utilizados são: Oracle Berkeley DB (no mundo 
corporativo), memcache, redis, ...

Porém para quem tiver curiosidade, eu recomendo muito a leitura do 
projeto "Voldemort": http://project-voldemort.com/.

* Documentos:
Lembram do Lotus Notes ? Modelo K-V. Estas são muito interessantes de 
serem utilizados quando você mantem bancos de dados em XML ou JSON por 
exemplo, onde na grande maioria existe uma 'metodologia' no qual você 
tem um ID (K) no qual contém todas as entidades/atributos (V) que você 
desejar.

Este é um caso muito interessante onde você realmente irá armazenar 
documentos, e necessita de uma flexibilidade constante, no qual uma 
modelagem SQL (como um EAV) irá gerar muitos obstáculos de 
desenvolvimento e manutenção.

Obs.: Talvez este tipo seja o mais polemico, pois muitos DBAs acreditam 
que alguns desenvolvedores não vão saber encaixar nos casos que podem 
ser usados, irão usar para tudo.  @$%@#%@!!

Talvez os mais usados sejam : CouchDB e o MongoDB.

Para os curiosos, a documentação do Riak (outra alternativa) é ótima: 
http://riak.basho.com/

* "Colunas":
Este é o tipo de banco de dados que vem me chamando mais atenção em 
relação a organização de informação, e não em performance, 
principalmente para elaboração de análises comparativas...

O mais usado me parece que é o Vertica (http://www.vertica.com/). O 
LucidDB que é bem "comunitário", o InfoBright que é uma empresa que 
trabalha com análises, bancos OLAT e etc... e o MonetDB.

* "Gráficos":
Para estes: objetos são diferentes de registros, baseado em estruturas 
de nós, K-V em ambos, e etc, etc.

O fator mais interessante neste tipo de banco de dados, é o 
relacionamento entre os nós..  Montar uma matrix de informação aqui é 
muito trivial, por exemplo em relacionamento de redes sociais...

Como eu comentei sobre os bancos baseados em documento, aqui também não 
há necessidade de um schema fixo, no qual isto facilita a manutenção e a 
evolução da sua aplicação no qual é baseado em informações "matrix" por 
exemplo....

VertexDB, e talvez o mais conhecido no momento "Neo4j".

* "BIGs clones"
Inspirados no BigTable paper, alguns sugiram com o HBase, Hypertable, ...

* Minha conclusão.

Agora, a explicação destas tendencias é um pouco obvia, mas vou falar:

1. Aumento dos bancos de informações em praticamente todos os cenários.
2. O modelo de apps agora é baseado em grande número de conexões 
simultâneas.
3. A generalização de modelo de dados está ficando complicada de se 
manter em muitos cenários.

Como eu tentei colocar, estes bancos que estão surgindo não são 
concorrência e em muitos casos nem alternativas para o modelo RDBMS, o 
interessante que estes bancos oferecem para você uma flexibilidade para 
poder tratar mais usuários, de forma mais rápida e simples.

Na minha humilde opinião, *em muitos casos* é essencial você ter um 
banco de dados relacional por trás das informações da sua organização, 
porém com estas alternativas você pode criar uma linguagem uniforme no 
seu aplicativo para poder suportar mais alternativas para armazenar 
dados, seja ela para elaborar análises, melhorar a performance, ou 
guardar informações que não necessitam sempre serem ajustadas.

Meus centavos,
-Thiago Rondon


More information about the SaoPaulo-pm mailing list