Una base de dades NoSQL (sovint interpretat com a Not only SQL i significa 'No només SQL') proporciona un mecanisme per emmagatzemar i recuperar dades que es modelen mitjançant relacions tabulars diferents a les utilitzades en les bases de dades relacionals. Aquest canvi de model està motivat per la simplicitat de disseny, l'escalabilitat horitzontal i un major control de la disponibilitat. Les estructures de dades utilitzades per les bases de dades NoSQL (p. ex. clau-valor, graf i document) difereixen de les relacionals, fet que possibilita que algunes operacions siguin més ràpides en les NoSQL que en les relacionals. L'elecció d'una o altra base de dades NoSQL depèn del problema a solucionar.

L'ús de bases de dades NoSQL ha augmentat notablement en sistemes Big Data i en aplicacions web a temps real. Als sistemes NoSQL se'ls anomena també "No només SQL" per emfatitzar que aquest tipus d'eines poden admetre llenguatges d'interrogació estructurats (SQL). Molts gestors NoSQL comprometen la consistència (en el sentit del teorema CAP) a favor de disponibilitat i la tolerància a la partició. Les reticències principals a adoptar sistemes NoSQL són l'ús de llenguatges d'interrogació de baix nivell, la manca d'interfícies estandarditzades i les grans inversions prèvies fetes en les bases de dades SQL existents. Gran part dels gestors NoSQL no compleixen completament les propietats ACID, i així doncs, no garanteixen transaccions realment fiables, tot i que diversos sistemes recents, com FairCom c-treeACE, Google Spanner (encara que tècnicament és una base de dades NewSQL), FoundationDB i OrientDB, ho compleixen.

Història Carlo Strozzi va utilitzar el terme NoSQL per designar el 1998 la seva base de dades relacional, lleugera i de codi obert que no oferia una interfície SQL estàndard. Strozzi suggereix que l'actual moviment NoSQL s'aparta totalment del model relacional i per això hauria estat més apropiat anomenar-lo 'NoREL' (referint-se a "no relacional").

Eric Evans va reintroduir el terme NoSQL a principis de 2009 quan Johan Oskarsson de Last.fm va organitzar un esdeveniment de debat dedicat a les bases de dades distribuïdes de codi obert. El terme provava d'etiqueta l'aparició d'un nombre creixent de bases de dades distribuïdes no relacionals. La majoria dels primers sistemes NoSQL no tenien gaire cura a l'hora de garantir atomicitat, consistència, aïllament i definitivitat (ACID), que era contrari a la pràctica prevalent entre sistemes relacionals.

Tipus de NoSQL Hi ha hagut diverses aproximacions per classificar les BD NoSQL, cadascuna amb categories i subcategories diferents. A causa de la varietat de categoritzacions i solapaments és difícil aconseguir i mantenir una visió de conjunt de les bases de dades no relacionals. No obstant això, una classificació bàsica és la basada en el model de dades. El següent llistat són els diferents models de dades seguits d'uns quants exemples de cada categoria:

Columna miniatura|Emmagatzematge de famílies de columnes en un 'keyspace'|300x300pxEmmagatzema la informació utilitzant un model orientat en columnes (agrupades en files) en comptes d'un model orientat en files. Això permet que l'accés a les dades, al moment de fer una consulta, sigui més eficient, ja que per a fer-ho únicament serà necesari accedir a la clau de la fila que guardi la informació desitjada. Aquest fet és beneficiós a l'hora d'emmagatzemar dades, ja que es redueix el nombre de recursos que ha d'utilitzar el disc a la vegada que es guarda una gran quantitat d'informació en una sola columna. Per aquesta mateixa raó, és possible fer un gran nombre de consultes en un temps reduït. A més, aquest tipus de base de dades NoSQL ofereix una excel·lent escalabililtat, cosa que fa que es pugui processar informació en paral·lel.

No obstant, dissenyar aquest model consumeix molt de temps en comparació amb el que s'utilitza al relacional. Un altre inconvenient és la vulnerabilitat de la seguretat.

S'utilitza el concepte de 'keyspace' per visualitzar i representar com és tota l'estructura d'emmagatzematge d'aquesta base de dades distribuïda. Conté famílies de columnes (el que equivaldria a taules en el model relacional) que contenen un cert nombre de columnes, on cadascuna és tractada per separat. No és necessari que les columnes d'una fila siguin iguals a les d'una altra, és a dir, que el nom i el tipus de dades poden ser diferents, a l'igual que el nombre d'aquestes. Generalment, sol haver un únic 'keyspace' per aplicació.

Accumulo és un magatzem de clau-valor ordenat i distribuït altament escalable basat en Bigtable (sistema de gestió de base de dades) de Google. S'emmagatzema informació en taules multidimensionals on les seves cel·les, en gran part, estan sense utilitzar. A més, aquestes cel·les disposen de versions temporals dels seus valors, fet que permet fer un seguiment dels valors que han près històricament.

Accumulo es un sistema construït sobre Apache Hadoop, Apache ZooKeeper i Apache Thrift.

Escrit en Java, Accumulo té etiquetes d'accés a nivell de cel·la i mecanismes de programació (iteradors) per modificar conjunts clau-valor a diferents punts del procés de tractament d'informció. És considerat el tercer model més utilitzat en la columna NoSQL per darrere de Apache Cassandra i HBase.

Cassandra és un sistema d'administració de bases de dades distribuïdes de codi obert dissenyat per manipular grans quantitats de dades en diversos servidors, oferint una alta disponibilitat sense un únic punt de fallada. Cassandra ofereix un suport robust per a 'clusters' que abasteixen diversos centres de dades, amb replicació asíncrona que permet a tots els clients realitzar operacions amb una baixa latència.

Característiques Descentralitzat Admet la replicació i replicació de múltiples centres de dades L'escalabilitat i rendiment aumenten a mesura de que ho faci el nombre de nodes. Elecció de la consistència en lectures i escriptures Té integrat Apache Hadoop, Apache Pig i Apache Hive. Com a llenguatge de consulta té CQL (Cassandra Query Language)

Druid és un magatzem de dades distribuïdes, de codi obert i orientat en columnes escrit en Java. Druid ha estat dissenyat per tractar massives quantitats de dades i proporcionar consultes de baixa latència. L'arquitectura del seu sistema pot canviar per resoldre diferents tipus de problemes. El seu nom es veu reflectit en aquesta característica.

Druid s'utilitza majoritàriament en aplicacions OLAP d'intel·ligència empresarial per analitzar grans volums de dades històriques o en temps real.

Druid és utilitzat en la producció per empreses tecnològiques conegudes com eBay, Netflix, PayPal, Twitter, Walmart i Yahoo.

Característiques Sistema escalable distribuït. Processament massiu en paral·lel. Arquitectura tolerant als errors; no es perdran dades. Utilitza índexs per fer un fltratge ràpid.

HBase és un sistema de gestió de bases de dades distribuïdes de codi obert modelada a partir de Google BigTable, escrita en Java i s'executa sobre Hadoop Distributed File System (HDFS).

Característiques Tolerant a errors. Escalabilitat lineal. Es basa en ZooKeeper per una coordinació d'alt rendiment. Funciona bé amb Hive. És un motor de consulta pel processament per lots del Big Data.

Vertica és la plataforma d'anàlisi unificada, basada en una arquitectura massivament escalable amb el conjunt més ampli de funcions analítiques que inclouen sèries temporals i d'esdeveniments, concordança de patrons, aprenentatge automàtic geoespacial i d'extrem a extrem a la base de dades. Permet que el client tingui coneixements ctius de negoci més ràpid que qualsevol magatzem de dades analítiques del mercat. L'emagatzematge es d'objectes es fa al núvol.

Característiques

Càrrega i consulta de dades en temps real Analítica de base de dades avançada Informació estructurada i semi-estructurada Processament massiu en paral·lel Analitza les dades d'Apache Hadoop

Document Una base de dades documental està constituïda per un conjunt de programes que emmagatzemen, recuperen i gestionen dades de documents o dades estructurades d'alguna manera. Aquest tipus de bases de dades constitueixen una de les principals subcategories dins de les anomenades bases de dades NoSQL. A diferència de les bases de dades relacionals, aquestes bases de dades estan dissenyades al voltant d'una noció abstracta de "Document".

El concepte central d'una base de dades orientada a documents és el mateix concepte de Document. Mentre cada implementació de base de dades orientada a documents difereix en els detalls, en general totes comparteixen el principi que els documents encapsulen i codifiquen dades o informació seguint algun format estàndard. Entre les codificacions usades actualment es troben XML, YAML i JSON, així com formats binaris com BSON.

Els documents dins una base de dades orientada a documents són similars, d'alguna manera, a registres, tuples o files en una base de dades relacional però menys rígides. No cal ajustar-se a un esquema estàndard ni tenir totes les mateixes seccions, atributs, claus o coses per l'estil.

Tipus: Notes de Lotus, Clusterpoint, apatxe CouchDB, Couchbase, HyperDex, MarkLogic, MongoDB, OrientDB, Qizx

Lotus Notes és un sistema client-servidor de col·laboració i correu electrònic, desenvolupat per Lotus Software, una filial d'IBM. La part del servidor rep el nom de Lotus Domino, mentre que el client s'anomena Lotus Notes.

Lotus Domino/ Notes és un sistema de comunicació que permet enviar correu electrònic i gestionar calendaris i agendes. També és una plataforma de col·laboració que permet compartir bases de dades amb informació, com bases documentals, de procediments, manuals o fòrums de discussió. I finalment és una plataforma de coordinació - utilitzant aplicacions Notes amb fluxos de treball. En seria un exemple qualsevol procés d'una empresa que requereix que un document flueixi entre diverses persones o departaments per a la seva autorització, com ara una sol·licitud de vacances, de bestretes o comptes de despeses, etc. Tot això és susceptible de gestionar-se de forma electrònica mitjançant Lotus Notes.

Característiques

La plataforma IBM Lotus Notes/Domino està integrada per 4 components principals:

Lotus Domino - servidor Lotus Notes - client de correu i col·laboració Domino Administrator - client per administrar el servidor Domino Domino Designer - ambient integrat de desenvolupament (IDE) per crear aplicacions Compatibilitat amb LotusScript, Llenguatge de fórmules, Java, JavaScript, AJAX i XML.

Clusterpoint és una base de dades de documents lliure d'esquemes que unifica dades estructurades i no estructurades a escala, sense comprometre la necessitat de cercar i consultar ràpidament.

Ofereix un valor excepcional allà on els volums de dades són elevats, moltes d'aquestes dades no està estructurat i moltes d'aquestes dades no estructurades són text.

Les solucions de Clusterpoint s'apliquen a les empreses de la banca, les assegurances i les telecomunicacions i sectors sanitaris; així com a governs i empreses de mitjans.

Característiques

Les dades es gestionen en format obert, multiplataforma, estàndard de la indústria XML o JSON mitjançant l'API oberta, per exemple, l'API Python o l'API JavaScript Node.js. Les dades SQL RDBMS s'utilitzen en combinació amb un motor de cerca empresarial per abordar les necessitats de rendiment i escalabilitat d'aplicacions web i mòbils, o on es poden necessitar eines d'anàlisi i gestió de dades grans. Arquitectura de programari de clúster multimaster: no hi ha cap punt de fallada únic, qualsevol node de clúster pot servir com a mestre i executar l'aplicació de gestió Escalabilitat horitzontal de la base de dades: s'escala des d'un únic servidor a uns quants milers de servidors connectats en xarxa en una infraestructura de clúster.