Una base de dades NoSQL (sovint interpretat com a Not only SQL[1][2] 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.[3] 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.[4] 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.
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.[5] 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").[6]
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. [7] 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.[8]
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:
Emmagatzema 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'[9] 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[10] é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
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.[12]
Druid és utilitzat en la producció per empreses tecnològiques conegudes com eBay, Netflix, PayPal, Twitter, Walmart i Yahoo.
Característiques
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).[13]
Característiques
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.[16]
Característiques
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. Un exemple en seria 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:
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
Apache CouchDB és una base de dades NoSQL de codi obert orientada a documents, implementada en Erlang.
Característiques
Component | Descripció | Llicencia |
---|---|---|
Erlang | Erlang és un llenguatge de programació concurrent de propòsit general i un sistema d'execució. El subconjunt seqüencial d'Erlang és un llenguatge funcional amb avaluació estricta, assignació única i mecanografia dinàmica. | Apache 2.0 (Release 18.0 and later)
Erlang Public License (Earlier releases) |
ICU | International Components for Unicode (ICU) és un projecte de codi obert de biblioteques C/C++ i Java madures per al suport Unicode, la internacionalització del programari i la globalització del programari. | Unicode License |
jQuery | jQuery és una biblioteca de JavaScript lleugera entre navegadors que emfatitza la interacció entre JavaScript i HTML. | MIT License |
OpenSSL | OpenSSL és una implementació de codi obert dels protocols SSL i TLS. La biblioteca bàsica (escrita en el llenguatge de programació C) implementa les funcions criptogràfiques bàsiques i proporciona diverses funcions d'utilitat. | Apache 1.0 and the four-clause BSD License |
SpiderMonkey | SpiderMonkey és un motor JavaScript eficient que manté la Fundació Mozilla. Conté un intèrpret, un compilador JIT i un col·lector d'escombraries. | MPL 2.0 |
Couchbase Server, conegut originalment com a Membase, és un paquet de programari de bases de dades NoSQL de codi obert i distribuït multimodel, optimitzat per a aplicacions interactives. Aquestes aplicacions poden servir a molts usuaris simultàniament creant, emmagatzemant, recuperant, agregant, manipulant i presentant dades. Per donar suport a aquest tipus de necessitats d'aplicacions, el servidor Couchbase està dissenyat per proporcionar un accés de valor-clau o documents JSON fàcil d'escalar amb una latència baixa i un alt rendiment sostingut. Està dissenyat per agrupar-se des d'una única màquina fins a desplegaments a gran escala que abasten moltes màquines.
Couchbase Server va proporcionar compatibilitat amb el protocol del client amb memcached, però va afegir persistència del disc, replicació de dades, reconfiguració de clúster en directe, reequilibri i multiarrendament amb particions de dades.
Característiques
HyperDex és una botiga de valors-clau distribuïda, cercable i coherent. Està desenvolupat principalment per Robert Escriva a la Universitat de Cornell. HyperDex proporciona consistència de serialització i tolera un llindar d'errors del servidor. Un altre aspecte destacat és una nova primitiva de cerca que admet la consulta d'atributs secundaris. Les principals tècniques que utilitza HyperDex són el hashing hiperespai i l'encadenament depenent del valor. HyperDex té una extensió comercial anomenada HyperDex Warp, que admet transaccions ACID que involucren diversos objectes. Si no s'especifica, "HyperDex" es refereix a la versió bàsica sense warp.
Característiques
MarkLogic Server és una base de dades orientada a documents desenvolupada per MarkLogic. És una base de dades multimodel NoSQL que va evolucionar a partir d'una base de dades XML per emmagatzemar de forma nativa documents JSON i triples RDF, el model de dades per a la semàntica. MarkLogic està dissenyat per ser un centre de dades per a dades operatives i analítiques.
Característiques
MongoDB (de l'anglès humongous i DB Data Base) és un programari de codi obert, per a la creació i gestió de base de dades orientada a documents, escalable, d'alt rendiment i lliure d'esquema programada en C++. La base de dades és orientada a documents. D'aquesta manera gestiona col·leccions de documents similars al format de dades JSON. Això permet que moltes aplicacions puguin gestionar les dades de manera més natural (indexació, consulta), encara que aquestes siguin imbricades en jerarquies complexes. El desenvolupament de MongoDB va començar a l'octubre del 2007 per 10gen (actualment MongoDB Inc.), la primera versió de codi lliure va ser llançada el febrer del 2009. Des de llavors MongoDB ha estat implementada per diverses webs i serveis com ara Craigslist, eBay, Foursquare, SourceForge i el The New York Times, entre d'altres. MongoDB és el sistema de base de dades més popular de tipus NoSQL. A diferència dels sistemes tradicionals de gestió de bases de dades que emmagatzemen dades en taules, MongoDB és un sistema de configuració de bases de dades orientat a documents multiplataforma per emmagatzemar dades.
Característiques
El programari Qualcomm Qizx és una base de dades XML nativa orientada a documents NoSQL que s'utilitza per emmagatzemar, recuperar i manipular fitxers XML, documents i dades semiestructurades. Qizx està preparat per a empreses i s'adapta perfectament per a entorns de flux de treball d'alt volum, alt rendiment i projectes intensius de text on els documents s'han de carregar i indexar ràpidament per a la cerca. Qizx és escalable i demostrat per gestionar dipòsits de dades de diversos terabytes de mida que contenen milions de documents.
Característiques
Una base de dades de clau-valor, o magatzem de clau-valor, és un paradigma d'emmagatzematge de dades dissenyat per emmagatzemar, recuperar i administrar arranjaments associatius, una estructura de dades més comunament coneguda avui en dia com un diccionari o taula hash. Els diccionaris contenen una col·lecció d'objectes, o registres, que alhora tenen molts camps diferents dins d'ells, cadascun dels quals conté dades. Aquests registres s'emmagatzemen i es recuperen utilitzant una clau que identifica de manera única el registre i s'utilitza per trobar ràpidament les dades dins la base de dades.
Dynamo és un conjunt de tècniques que juntes poden formar un sistema d'emmagatzematge estructurat de clau-valor d'alta disponibilitat o un magatzem de dades distribuïdes. Té propietats tant de bases de dades com de taules hash distribuïdes. Dynamo va ser creat per ajudar a abordar alguns problemes d'escalabilitat que va experimentar el lloc web d'Amazon.com.
Característiques:
Riak és com un magatzematge de dades de clau-valor NoSQL distribuït que proporciona alta disponibilitat, tolerància a falles, simplicitat operativa i escalabilitat.
Característiques:
FairCom c-treeACE [26]
FairCom c-treeACE és un motor de base de dades multimodel, desenvolupat per FairCom Corporation. Els desenvolupadors de programari generalment incorporen el motor c-treeACE dins de les aplicacions que creen i després implementen l'aplicació i el motor junts com una solució integrada.
Característiques:
Aerospike és una solució de base de dades NoSQL de classe empresarial que ofereix un rendiment previsible a escala, un temps de funcionament superior i una alta disponibilitat amb el cost total de propietat (TCO) més baix en comparació amb les bases de dades relacionals o NoSQL de primera generació.
Aerospike es va crear específicament amb una arquitectura altament paral·lelitzada per donar suport a aplicacions en temps real basades en Big Data. Aerospike pot funcionar amb memòria RAM pura, però és el primer que està optimitzat de manera única per utilitzar-lo amb discs durs d'estat sòlid (SSD).
La plataforma de dades en temps real d'Aerospike permet a les organitzacions actuar de manera instantània a través de milers de milions de transaccions alhora que redueix l'empremta del servidor fins a un 80 per cent. La plataforma multinúvol alimenta aplicacions en temps real amb un rendiment previsible de menys de mil·lisegons fins a una escala de petabytes amb dades distribuïdes globalment i molt consistents.
Característiques
OrientDB és un sistema de gestió de bases de dades NoSQL de codi obert escrit en Java. És una base de dades que admet models de grafs, documents, clau/valor i objectes, però les relacions es gestionen com a les bases de dades de grafs amb connexions directes entre registres. Admet models sense esquemes, esquemes complets i esquemes mixts. Té un fort sistema de perfils de seguretat basat en usuaris i rols i admet consultes amb Gremlin juntament amb SQL estès. OrientDB utilitza diversos mecanismes d'indexació basats en l'arbre B i el hash extensible. Cada registre té una clau substituta que indica la posició del registre dins de la llista de matrius, els enllaços entre registres s'emmagatzemen com a valor únic de la posició del registre emmagatzemat dins de la referència o com a arbre B de posicions de registre (els anomenats ID de registre o RID) que permet navegació ràpida (amb complexitat O(1)) de relacions d'un a molts i addició/eliminació ràpida de nous enllaços. OrientDB és la cinquena base de dades de grafs més popular segons el rànquing de bases de dades de gràfics de DB-Engines, a desembre de 2021.
El desenvolupament d'OrientDB encara es basa en una comunitat de codi obert liderada per l'empresa OrientDB LTD creada pel seu autor original Luca Garulli. El projecte utilitza GitHub per gestionar les fonts, els col·laboradors i el control de versions, Google Grou i Stack Overflow per oferir suport gratuït als usuaris de tot el món. OrientDB també ofereix un curs Udemy gratuït per a aquells que desitgin aprendre els conceptes bàsics i començar amb OrientDB.
Característiques
MUMPS ("Massachusetts General Hospital Utility Multi-Programming System"), o M, és una base de dades de valor-clau de processament de transaccions d'alt rendiment amb llenguatge de programació integrat. Va ser desenvolupat originalment a l'Hospital General de Massachusetts per gestionar els sistemes d'informació del laboratori hospitalari.
Des de llavors, la tecnologia MUMPS s'ha expandit com la base de dades predominant per als sistemes d'informació sanitària i els registres electrònics de salut als Estats Units.
Una característica única de la tecnologia MUMPS és el seu llenguatge de base de dades integrat, que permet un accés directe i d'alta velocitat de lectura i escriptura a l'emmagatzematge permanent del disc. Això proporciona una integració estreta d'aplicacions il·limitades dins d'una base de dades única i proporciona un rendiment i una fiabilitat extremadament elevats com a sistema de processament de transaccions en línia.
Característiques:
Una base de dades orientada a grafs representa la informació com a nodes d'un graf i les seves relacions com arestes, de manera que es pugui fer servir teoria de grafs per recórrer la base de dades, ja que aquesta pot descriure atributs dels nodes (entitats) i les arestes (relacions) .
AllegroGraph és un triplestore de codi tancat que està dissenyat per emmagatzemar triples RDF, un format estàndard per a dades vinculades. També funciona com a magatzem de documents dissenyat per emmagatzemar, recuperar i gestionar informació orient ada a documents, en format JSON-LD.
Actualment s'utilitza en projectes comercials i en un projecte del Departament de Defensa dels EUA. També és el component d'emmagatzematge per al projecte TwitLogic portant la Web Semàntica a les dades de Twitter.
Característiques:
Neo4j és un programari lliure de Base de dades orientada a grafs amb un motor persitent "embedding", basat en disc, completament transaccional. Utilitza un graf de propietats etiquetatge per a l'emmagatzematge de les dades. En un graf de propietats etiquetatge, els nodes es representen amb unes etiquetes que permeten classificar els diferents nodes de l'arbre. Tant nodes com relacions es caracteritzen per una sèrie de propietats, en els valors de les quals s'apropa la informació del graf.
Característiques:
InfiniteGraph és una base de dades gràfica distribuïda i és adequat per a aplicacions i serveis que resolen problemes de gràfics en entorns operatius.
El llenguatge de consulta "DO" d'InfiniteGraph permet tant consultes basades en valors com consultes de gràfics complexos, per això diem que és una multiplataforma.
Característiques:
Virtuós és un motor de base de dades virtual revolucionari, de propera generació i per a l’era de la computació distribuïda. És una tecnologia bàsica d'accés universal a dades establerta per accelerar els nostres avenços cap a l'era de la informació emergent, per tant, la seva infraestructura existent es pot fer servir per donar suport als serveis web directament sense cap indici de reemplaçament.
Característiques:
És una plataforma de gràfics de coneixement escalable i reutilitzable que permet a les empreses unificar totes les seves dades, incloses fonts de dades i bases de dades de tot tipus, per obtenir les respostes necessàries per impulsar les decisions comercials.
Característiques:
Una base de dades Multi-Model és un sistema d'administració de bases de dades dissenyat per admetre múltiples models de dades en un sol backend integrat. Les bases de dades multimodel emmagatzemen, consulten i indexen dades de diferents models.
FoundationDB és una base de dades NoSQL distribuïda multimodel gratuïta i de codi obert desenvolupada per Apple Inc.
Característiques
ArangoDB és un sistema de bases de dades multimodel gratuït i de codi obert desenvolupat per ArangoDB GmbH. El sistema de base de dades admet tres models de dades (clau/valor, documents, gràfics) amb un nucli de base de dades i un llenguatge de consulta unificat AQL. El llenguatge de consulta és declaratiu i permet la combinació de diferents patrons d'accés a dades en una sola consulta.
La base de dades es va publicar originalment amb el nom d'AvocadoDB al 2011, però es va canviar a ArangoDB el 2012. La paraula "arango" fa referència a una varietat d'alvocat poc coneguda.
Característiques
CortexDB és una base de dades de valors múltiples, bitemporal, orientada a documents, sense esquemes, escrita al llenguatge de programació C++
Característiques
Una classificació més detallada és la formulada per Stephen Yen:[35]
Terme | BD aparellades |
---|---|
Clau-Valor Cache | Coherence, eXtreme Scale, GigaSpaces, GemFire, Hazelcast, Infinispan, JBoss Cache, Memcached, Repcached, Terracotta, Velocity |
Clau-Valor Store | Flare, Keyspace, RAMCloud, SchemaFree, Hyperdex, Aerospike |
Clau-Valor Store (eventualment consistent) | DovetailDB, Dynamo, Riak, Dynomite, MotionDb, Voldemort, SubRecord |
Clau-Valor Store (ordenada) | Actord, FoundationDB, Lightcloud, Luxio, MemcacheDB, NMDB, Scalaris, TokyoTyrant |
Data-Structures server | Redis |
Tupla Store |
Apache River, Coord, GigaSpaces |
Object Database | DB4O, Objectivity/DB, Perst, Shoal, ZopeDB, |
Orientada a documents |
Lotus Notes,Clusterpoint, Couchbase, CouchDB, MarkLogic, MongoDB, Qizx, XML-databases |
Wide Columnar Store | BigTable, Cassandra, Druid, HBase, Hypertable, KAI, KDI, OpenNeptune, Qbase |