NoSQL

De Viquipèdia
Salta a: navegació, cerca

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 modela 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.

Història[modifica | modifica el codi]

Carlo Strozzi va utilitzar el terme NoSQL per designar el 1998 a 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]

Tipus de NoSQL[modifica | modifica el codi]

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: Accumulo, Cassandra, Druid, HBase, Vertica
  • Document: Notes de Lotus, Clusterpoint, apatxe CouchDB, Couchbase, HyperDex, MarkLogic, MongoDB, OrientDB, Qizx
  • Clau-valor: CouchDB, Dynamo, FoundationDB, HyperDex, MemcacheDB, Redis, Riak, FairCom c-treeACE, Aerospike, OrientDB, MUMPS
  • Graf: Allegro, Neo4J, InfiniteGraph, OrientDB, Virtuoso, Stardog
  • Multi-Model: OrientDB, FoundationDB, ArangoDB, Alchemy Database, CortexDB

Una classificació més detallada és la formulada per Stephen Yen:[9]

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

References[modifica | modifica el codi]

  1. «NoSQL (Not Only SQL)». «NoSQL database, also called Not Only SQL»
  2. Fowler, Martin. «NosqlDefinition». «many advocates of NoSQL say that it does not mean a "no" to SQL, rather it means Not Only SQL»
  3. «RDBMS dominate the database market, but NoSQL systems are catching up». DB-Engines.com, 21-11-2013. [Consulta: 24 novembre 2013].
  4. ; Higashino, W. A.; Tiwari, A.; Capretz, M. A. M.«Data management in cloud environments: NoSQL and NewSQL data stores». JoCCASA, Springer, 2013. [Consulta: 8 gener 2014].
  5. Lith, Adam; Mattson, Jakob. «Investigating storage solutions for large data: A comparison of well performing and scalable data storage solutions for real time extraction and batch insertion of data» p. 70. Göteborg: Department of Computer Science and Engineering, Chalmers University of Technology, 2010. [Consulta: 12 maig 2011]. «Carlo Strozzi first used the term NoSQL in 1998 as a name for his open source relational database that did not offer a SQL interface[...]»
  6. «NoSQL Relational Database Management System: Home Page». Strozzi.it, 02-10-2007. [Consulta: 29 març 2010].
  7. «NoSQL 2009». Blog.sym-link.com, 12-05-2009. [Consulta: 29 març 2010].
  8. Chapple, Mike. «The ACID Model».
  9. Yen, Stephen. «NoSQL is a Horseless Carriage» (PDF). NorthScale. [Consulta: 26 juny 2014].