O acrônimo NoSQL foi cunhado em 1998. Muitas pessoas pensam que o NoSQL é um termo depreciativo criado para cutucar o SQL. Na realidade, o termo significa não apenas SQL. A ideia é que ambas as tecnologias possam coexistir e cada uma tenha o seu lugar. O movimento NoSQL tem sido notícia nos últimos anos, já que muitos dos líderes da Web 2.0 adotaram uma tecnologia NoSQL. Empresas como Facebook, Twitter, Digg, Amazon, LinkedIn e Google usam o NoSQL de uma forma ou de outra. Vamos detalhar 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. Segundo a 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 continuará crescendo.
Dados Interconectados: Os dados continuam a ficar mais conectados. A criação da web fomentada em hiperlinks, os blogs têm pingbacks e todos os principais sistemas de redes sociais possuem tags que unem as coisas. Os principais sistemas são construídos para serem interconectados.
Estrutura de dados complexos: O NoSQL pode manipular facilmente estruturas hierárquicas de dados aninhados. Para realizar a mesma coisa no SQL, você precisaria de várias tabelas relacionais com todos os tipos de chaves. Além disso, há uma relação entre desempenho e complexidade de dados. O desempenho pode degradar em um RDBMS tradicional, pois armazenamos as enormes quantidades de dados necessários em aplicativos de redes sociais e na web semântica.
O que é o NoSQL?
Eu acho que uma maneira de definir NoSQL é considerar o que 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 é projetado para armazenamentos de dados distribuídos para necessidades de dados de grande escala. Pense no Facebook com seus 500.000.000 usuários ou o Twitter, que acumula Terabits de dados todos os dias.
Em um banco de dados NoSQL, não há esquema fixo nem junções. Um RDBMS "escala", obtendo hardware cada vez mais rápido e adicionando memória. O NoSQL, por outro lado, pode aproveitar a "expansão". Escalar refere-se a espalhar a carga sobre muitos sistemas de commodities. Este é o componente do NoSQL que o torna uma solução barata para grandes conjuntos de dados.
Categorias NoSQL
O atual mundo NoSQL se encaixa em 4 categorias básicas.
- Lojas de valores-chave baseiam-se principalmente no Dynamo Paper da Amazon, que foi escrito em 2007. A ideia principal é a existência de uma tabela de 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 de família de colunas foram criados para armazenar e processar quantidades muito grandes de dados distribuídos em várias 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.
- Banco de dados de documentosOs s foram inspirados no Lotus Notes e são semelhantes aos armazenamentos de valor-chave. O modelo é basicamente documentos versionados 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 do SQL, é usado um modelo de gráfico flexível que pode ser dimensionado em várias máquinas.
Principais jogadores do NoSQL
Os principais players do NoSQL surgiram principalmente por causa das organizações que os adotaram. Algumas das maiores tecnologias NoSQL incluem:
- Dínamo: O Dynamo foi criado pela Amazon.com e é o mais proeminente banco de dados NoSQL de valor-chave. A Amazon precisava de uma plataforma distribuída altamente escalável para seus negócios de comércio eletrônico, de modo que eles desenvolveram o Dynamo. O Amazon S3 usa o Dynamo como mecanismo de armazenamento.
- Cassandra: Cassandra foi aberta pelo Facebook e é um banco de dados NoSQL orientado por colunas.
- Mesa grande: O BigTable é o banco de dados orientado por colunas de propriedade do Google. O Google permite o uso do BigTable, mas apenas para o Google App Engine.
- SimpleDB: O SimpleDB é outro banco de dados da Amazon. Usado para o Amazon EC2 e S3, faz 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 de gráficos de código aberto.
Consultando o NoSQL
A questão de como consultar um banco de dados NoSQL é o que a maioria dos desenvolvedores está interessada. Afinal de contas, os dados armazenados em um banco de dados enorme não fazem bem a ninguém se você não puder recuperá-lo e mostrá-lo aos usuários finais ou serviços da web. Bancos de dados NoSQL não fornecem uma linguagem de consulta declarativa de alto nível como SQL. Em vez disso, consultar esses bancos de dados é específico do modelo de dados.
Muitas das plataformas NoSQL permitem interfaces RESTful para os dados. Outros oferecem APIs de consulta. Existem algumas ferramentas de consulta que foram desenvolvidas para tentar consultar vários bancos de dados NoSQL. Essas ferramentas normalmente funcionam em uma única categoria NoSQL. Um exemplo é o SPARQL. SPARQL é uma especificação de consulta declarativa projetada para bancos de dados de gráficos. Aqui está um exemplo de uma consulta SPARQL que recupera a URL de um determinado blogueiro (cortesia da IBM):
PREFIXO foaf:
Futuro do NoSQL
Organizações que possuem grandes necessidades de armazenamento de dados estão olhando seriamente para o NoSQL. Aparentemente, o conceito não está recebendo tanta tração em organizações menores. Em uma pesquisa realizada pela Information Week, 44% dos profissionais de TI não ouviram falar do 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 no mundo conectado, mas precisará continuar evoluindo para obter o apelo de massa que muitos pensam que poderia ter.