A sigla NoSQL foi cunhada em 1998. Muitas pessoas pensam que NoSQL é um termo depreciativo criado para cutucar o SQL. Na realidade, o termo significa não apenas SQL. A ideia é que as duas tecnologias possam coexistir e cada uma tenha seu lugar. O movimento NoSQL tem sido notícia nos últimos anos, pois muitos dos líderes da Web 2.0 adotaram uma tecnologia NoSQL. Empresas como Facebook, Twitter, Digg, Amazon, LinkedIn e Google usam NoSQL de uma forma ou de outra. Vamos dividir o NoSQL para que você possa explicá-lo ao seu CIO ou até mesmo aos seus colegas de trabalho.
NoSQL surgiu de uma necessidade
Armazenamento de dados: Os dados digitais armazenados do mundo são medidos em exabytes. Um exabyte é igual a um bilhão de gigabytes (GB) de dados. De acordo com o Internet.com, a quantidade de dados armazenados adicionados em 2006 foi de 161 exabytes. Apenas 4 anos depois, em 2010, a quantidade de dados armazenados será de quase 1.000 ExaBytes, o que representa um aumento de mais de 500%. Em outras palavras, há muitos dados sendo armazenados no mundo e isso só vai continuar crescendo.
Dados interconectados: Os dados continuam a ficar mais conectados. Com a criação da web promovida em hiperlinks, os blogs têm pingbacks e todos os grandes sistemas de redes sociais têm tags que unem as coisas. Os principais sistemas são construídos para serem interconectados.
Estrutura de dados complexa: O NoSQL pode lidar facilmente com estruturas de dados aninhadas hierárquicas. Para realizar a mesma coisa em SQL, você precisaria de várias tabelas relacionais com todos os tipos de chaves. Além disso, existe uma relação entre o desempenho e a complexidade dos dados. O desempenho pode ser prejudicado em um RDBMS tradicional, pois armazenamos grandes quantidades de dados exigidos em aplicativos de rede social e na web semântica.
O que é NoSQL?
Acho que uma maneira de definir o NoSQL é considerar o que ele não é. Não é SQL e não é relacional. Como o nome sugere, não é um substituto para um RDBMS, mas o complementa. O NoSQL foi projetado para armazenamentos de dados distribuídos para necessidades de dados em grande escala. Pense no Facebook com seus 500 milhões de usuários ou no Twitter que acumula Terabits de dados todos os dias. Em um banco de dados NoSQL, não há esquema fixo e nem junções. Um RDBMS “aumenta” ao obter hardware cada vez mais rápido e adicionar memória. O NoSQL, por outro lado, pode tirar proveito da “expansão”. O dimensionamento se refere a distribuir a carga por muitos sistemas de commodities. Este é o componente do NoSQL que o torna uma solução econômica para grandes conjuntos de dados.
Categorias NoSQL
O mundo NoSQL atual se encaixa em 4 categorias básicas.
- Lojas de valores-chave baseiam-se principalmente no Dynamo Paper da Amazon, escrito em 2007. A ideia principal é a existência de uma tabela hash onde existe uma chave única e um ponteiro para um determinado item de dados. Esses mapeamentos geralmente são acompanhados por mecanismos de cache para maximizar o desempenho.
- Lojas da família da coluna foram criados para armazenar e processar grandes quantidades de dados distribuídos em muitas máquinas. Ainda existem chaves, mas elas apontam para várias colunas. No caso do BigTable (modelo NoSQL da família de colunas do Google), as linhas são identificadas por uma chave de linha com os dados classificados e armazenados por essa chave. As colunas são organizadas por família de colunas.
- Bancos de dados de documentos foram inspirados no Lotus Notes e são semelhantes aos armazenamentos de valores-chave. O modelo é basicamente documentos com versão que são coleções de outras coleções de valores-chave. Os documentos semiestruturados são armazenados em formatos como JSON.
- Banco de dados de gráficoss são construídos com nós, relacionamentos entre notas e as propriedades dos nós. Em vez de tabelas de linhas e colunas e a estrutura rígida de SQL, um modelo de gráfico flexível é usado, o qual pode ser escalonado em muitas máquinas.
Principais jogadores NoSQL
Os principais participantes do NoSQL surgiram principalmente por causa das organizações que os adotaram. Algumas das maiores tecnologias NoSQL incluem:
- Dínamo: Dynamo foi criado pela Amazon.com e é o banco de dados NoSQL de valor-chave mais proeminente. A Amazon precisava de uma plataforma distribuída altamente escalonável para seus negócios de comércio eletrônico, então eles desenvolveram o Dynamo. O Amazon S3 usa o Dynamo como mecanismo de armazenamento.
- Cassandra: O Cassandra foi criado pelo Facebook e é um banco de dados NoSQL orientado a colunas.
- Mesa grande: BigTable é o banco de dados orientado a colunas proprietário do Google. O Google permite o uso de BigTable, mas apenas para o Google App Engine.
- SimpleDB: SimpleDB é outro banco de dados da Amazon. Usado para Amazon EC2 e S3, é parte do Amazon Web Services que cobra taxas dependendo do uso.
- CouchDB: O CouchDB junto com o MongoDB são bancos de dados NoSQL orientados a documentos de software livre.
- Neo4J: Neo4j é um banco de dados gráfico de código aberto.
Consultando NoSQL
A questão de como consultar um banco de dados NoSQL é o que interessa à maioria dos desenvolvedores. Afinal, dados armazenados em um banco de dados enorme não fazem bem a ninguém se você não puder recuperá-los e mostrá-los aos usuários finais ou serviços da web. Os bancos de dados NoSQL não fornecem uma linguagem de consulta declarativa de alto nível como o SQL. Em vez disso, consultar esses bancos de dados é específico do modelo. Muitas das plataformas NoSQL permitem interfaces RESTful para os dados. Outras APIs de consulta de oferta. Existem algumas ferramentas de consulta que foram desenvolvidas para tentar consultar vários bancos de dados NoSQL. Essas ferramentas geralmente funcionam em uma única categoria NoSQL. Um exemplo é SPARQL. SPARQL é uma especificação de consulta declarativa projetada para bancos de dados gráficos. Aqui está um exemplo de uma consulta SPARQL que recupera a URL de um blogueiro específico (cortesia da IBM):
PREFIXO foaf:
SELECT? Url
DE
ONDE {
? contribuidor foaf: nomeie “Jon Foobar”.
? contribuidor foaf: weblog? url.
}
type = “código”>
Futuro do NoSQL
As organizações que têm necessidades massivas de armazenamento de dados estão olhando seriamente para o NoSQL. Aparentemente, o conceito não está ganhando tanta força em organizações menores. Em uma pesquisa realizada pela Information Week, 44% dos profissionais de TI de negócios nunca ouviram falar de NoSQL. Além disso, apenas 1% dos entrevistados relataram que o NoSQL faz parte de sua direção estratégica. Claramente, o NoSQL tem seu lugar em nosso mundo conectado, mas precisará continuar a evoluir para obter o apelo de massa que muitos pensam que poderia ter.