Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Nas grandes aplicaes web cada vez mais comum a quantidade de informaes ser
enorme, e ainda temos uma certeza: amanh teremos mais dados para armanezar. Como
lidar com isso de maneira e ciente?
Esse movimento est bastante enraizado no open source. D para perceber isso at
mesmo pelos curiosos nomes dos projetos: Voldemort, MongoDB, Tokyo Tyrant e
CouchDB.
https://getpocket.com/a/read/63409366 1/8
9/28/2017 Pocket: Bancos de dados no relacionais e o movimento NoSQL
Apesar de grande quantidade desses bancos serem open source, o movimento ganhou
muita fora com a publicao de dois papers sobre implementaes proprietrias: o
Google Bigtable (que a Caelum usa atualmente) e o Amazon Dynamo. No por acaso so
duas empresas que lidam com uma quantidade enorme informaes. Outros grandes
nomes participam do movimento NoSQL: Yahoo! (Hadoop com HBase, Sherpa),
Facebook e Digg (Cassandra), LinkedIn (Voldemort), Mixi (Facebook do Japo) (Tokyo
Cabinet) e a Engine Yard (MongoDB).
Muitos acham que esses bancos de dados escalam simplesmento por causa da ausncia
de um schema (schema free), logo no h veri cao de integridade e de
relacionamentos. Mas seria s isso? O MySQL, nos seus primrdios, quando no fazia
tais veri caes, ainda assim no era rpido como esses novos competidores. Quais so
ento os segredos para tanta escalabilidade?
O Amazon Dynamo se destacou por causa da forma como o sistema escala. Cada n no
cluster comunica com outros ns (p2p) e faz ativamente parte da partio/replicao.
No tem um single-point-of-failure, mas essa facilidade de escalar no vem sem custo.
Todos os novos bancos tem em comun que eles so key-value stores, ou seja salvam,
como o nome sugere, um conjunto de enradas formadas por uma chave associada a um
valor e o valor poderia ser de qualquer tipo, um binrio ou string que est sendo salvo de
https://getpocket.com/a/read/63409366 2/8
9/28/2017 Pocket: Bancos de dados no relacionais e o movimento NoSQL
O CouchDB um dos mais famosos no time dos key-value stores. Ele usa documentos
para de nir uma estrutura no banco, armazenando uma chave associada ao um
documento. Um documento apresentado como JSON. Por exemplo:
{
"Subject": "Bancos no relacionais"
"Author": "Nico Stepat"
"PostedDate": "10/15/2009"
"Tags": ["database", "nosql", "rest"]
}
Repare a estrutura dos dados de nido atravs da aplicao, o CouchDB no exige nada,
apenas um documento JSON.
https://getpocket.com/a/read/63409366 3/8
9/28/2017 Pocket: Bancos de dados no relacionais e o movimento NoSQL
Talvez o CouchDB cou famoso por causa da simples API REST e do uso do JSON, ou da
interface gra ca bonita ou por causa dos views interessantes usando Map-Reduce ou da
replicao Multi-Master ou por que foi escrito em Erlang (como esse e esse tambm).
Seja que for, a promessa principal do NoSQL sendo escalvel o CouchDB no
compriu ainda. Ele no distribudo sozinho, e precisa de ajuda externa para tal.
Outra forma de dar alguma estrutura aos dados cou famosa por causa do Google
Bigtable. A idia no salvar os dados em linhas como estamos acustomados pelos
bancos relacionais. Os dados sero salvos atravs de colunas. Veja a diferena:
Joo,1432.00,15/10/2009
Maria,1511.00,13/10/2009
Pedro,1721.00,01/10/2009
https://getpocket.com/a/read/63409366 4/8
9/28/2017 Pocket: Bancos de dados no relacionais e o movimento NoSQL
Joo,Maria,Pedro
1432.00,1511.00,1721.00
15/10/2009,13/10/2009,01/10/2009
E isso altera algma coisa? Para o desenvolvedor que vai utilizar o banco de dados, a idia
que isso seja transparente, mas para quem desenvolveu o banco, h enormes
melhorias.
Isso no muito vantajoso quando for salvo apenas um registro, como cada coluna tem
que ser accessada separadamente. Tambm complica mais na recuperao de um registro
espec co (random-access) pelo mesmo motivo. Aqui a abordagem row-oriented tem
vantagens.
Por outro lado, usando colunas, podemos empacotar os dados melhor j que os dados
semelhantes, de mesmo formato, esto prximos um do outro. Gravando dados
empacotados em BDs traz grandes vantagens, porque podemos recuperar e armanezar
mais informaes em menos tempo.
https://getpocket.com/a/read/63409366 5/8
9/28/2017 Pocket: Bancos de dados no relacionais e o movimento NoSQL
Com colunas tambm podemos aplicar projees sobre os dados mais fcil. A segunda
vantagem importante principalmente para sistemas OLAP (online analytic process) que
usam esse tipo de pesquisas pesadamente.
Cada coluna salva um valor. O grupo de colunas dentro de uma familia acessvel
atraves de uma chave (row-key). O esquema ca:
https://getpocket.com/a/read/63409366 6/8
9/28/2017 Pocket: Bancos de dados no relacionais e o movimento NoSQL
e o relacionamento:
https://getpocket.com/a/read/63409366 7/8
9/28/2017 Pocket: Bancos de dados no relacionais e o movimento NoSQL
Semana que vem, no Caelum Day in Rio conversaremos sobre muitos outros detalhes do
movimento NoSQL. Nos encontramos l!
https://getpocket.com/a/read/63409366 8/8