Unha visión xeral das bases de datos NoSQL

O acrónimo NoSQL foi acuñado en 1998. Moita xente pensa que NoSQL é un termo despectivo creado para atacar a SQL. En realidade, o termo non só SQL. A idea é que ambas tecnoloxías poidan coexistir e cada un ten o seu lugar. O movemento NoSQL foi noticia nos últimos anos, xa que moitos dos líderes da Web 2.0 adoptaron unha tecnoloxía NoSQL. Empresas como Facebook, Twitter, Digg, Amazon, LinkedIn e Google usan todos os niveis dun xeito ou doutro.

Imos romper a NoSQL para que o poidas explicar ao teu CIO ou mesmo aos teus compañeiros de traballo.

NoSQL xurdiu dunha necesidade

Almacenamento de datos: os datos dixitais almacenados no mundo medíronse en exabytes. Un exabyte é igual a mil millóns de gigabytes (GB) de datos. Segundo Internet.com, a cantidade de datos almacenados engadidos en 2006 foi de 161 exabytes. Só 4 anos máis tarde no 2010, a cantidade de datos almacenados será de case 1.000 ExaBytes o que supón un incremento superior ao 500%. Noutras palabras, hai moitos datos que están a ser almacenados no mundo e só vai continuar crecendo.

Datos interconectados: os datos seguen a estar máis conectados. A creación da web fomentada nos hipervínculos, os blogs teñen pingbacks e todos os principais sistemas de redes sociais teñen etiquetas que unen as cousas. Os sistemas principais están construídos para ser interconectados.

Estrutura de datos complexos: NoSQL pode manipular facilmente as estruturas de datos jerárquicas aniñadas. Para realizar o mesmo en SQL, necesitarías varias táboas relacionales con todo tipo de chaves.

Ademais, existe unha relación entre rendemento e complexidade de datos. O rendemento pode degradarse nun RDBMS tradicional mentres almacenamos as cantidades masivas de datos requiridos nas aplicacións de redes sociais e na web semántica.

¿Que é NoSQL?

Creo que un xeito de definir NoSQL é considerar o que non é.

Non é SQL e non é relacional. Do mesmo xeito que o nome suxire, non é un substituto para un RDBMS pero complécelo. NoSQL está deseñado para almacenar datos distribuídos para necesidades de datos a gran escala. Pense en Facebook cos seus 500 millóns de usuarios ou Twitter que acumulan Terabits de datos cada día.

Nunha base de datos de NoSQL, non hai un esquema fixo e non se xunta. Un RDBMS "escalado", obtendo hardware máis rápido e máis rápido e engadindo memoria. NoSQL, por outro lado, pode aproveitar a "escala". Scaling out refírese á divulgación da carga sobre moitos sistemas de mercadorías. Este é o compoñente de NoSQL que fai que sexa unha solución económica para grandes conxuntos de datos.

Categorías NoSQL

O mundo actual de NoSQL encaixa en 4 categorías básicas.

  1. Valores clave As tendas baséanse principalmente no documento Dynamo Paper de Amazon que foi escrito en 2007. A idea principal é a existencia dunha táboa hash onde hai unha única clave e un punteiro para un determinado elemento de datos. Estas asignacións adóitanse acompañar de mecanismos de caché para maximizar o rendemento.
    As tendas familiares da columna foron creadas para almacenar e procesar grandes cantidades de datos distribuídos en moitas máquinas. Aínda hai claves pero apuntan a varias columnas. No caso de BigTable (o modelo de NoSQL da familia de columnas de Google), as filas identificáronse cunha clave de fila cos datos ordenados e almacenados por esta chave. As colunas están ordenadas pola familia de columnas.
  1. A base de datos de documentos s inspiráronse en Lotus Notes e son similares ás tendas de valores clave. O modelo é basicamente documentos de versión que son coleccións doutras coleccións clave. Os documentos semiestructurados están almacenados en formatos como JSON.
  2. A base de datos de gráfica s está construída con nodos, relacións entre notas e as propiedades dos nodos. En lugar de táboas de filas e columnas e a estrutura ríxida de SQL, utilízase un modelo de gráfico flexible que pode escalar entre moitas máquinas.

Principais xogadores NoSQL

Os principais xogadores de NoSQL xurdiron principalmente por mor das organizacións que as adoptaron. Algunhas das maiores tecnoloxías de NoSQL inclúen:

Consultando NoSQL

A cuestión de como consultar unha base de datos de NoSQL é a que máis interesantes están interesados. Despois de todo, os datos almacenados nunha enorme base de datos non fan nada bo se non pode recuperar e mostrar aos usuarios finais ou aos servizos web. As bases de datos NoSQL non fornecen unha linguaxe de consulta declarativa de alto nivel como SQL. En cambio, a consulta destas bases de datos é específica do modelo de datos.

Moitas das plataformas de NoSQL permiten a interfaces RESTful aos datos. Outras API de consulta de oferta. Hai un par de ferramentas de consulta que foron desenvolvidas que intentan consultar múltiples bases de datos NoSQL. Estas ferramentas adoitan funcionar nunha única categoría de NoSQL. Un exemplo é SPARQL. SPARQL é unha especificación de consulta declarativa deseñada para bases de datos de gráficos. Aquí tes un exemplo dunha consulta SPARQL que recupera a URL dun blogger en particular (cortesía de IBM):

PREFIX foaf:
SELECCIONAR? Url
FROM
Onde {
Contributor foaf: nome "Jon Foobar".
contribuínte foaf: weblog? url.
}

Futuro de NoSQL

As organizacións que teñen grandes necesidades de almacenamento de datos están a buscar en serio a NoSQL. Ao parecer, o concepto non está obtendo tanta tracción en organizacións máis pequenas. Nunha investigación realizada pola Semana da Información, o 44% dos profesionais das TIC non escoitou falar de NoSQL. Ademais, só o 1% dos entrevistados informou que NoSQL forma parte da súa dirección estratéxica. Está claro que NoSQL ten o seu lugar no noso mundo conectado pero necesitará seguir evolucionando para obter o recurso de masa que moitos pensan que podería ter.