NoSQL

Ir a: navegación, búsqueda de
"Almacenamiento estructurado" vuelve a dirigir aquí. Para la tecnología de Microsoft también conocido como almacenamiento estructurado, vea COM estructurado almacenamiento.

A NoSQL (a menudo interpretado como NOT Osolo SQL[1][2][¿fuente no fiable?]) base de datos proporciona un mecanismo para almacenamiento de información y recuperación de datos que es modeladas en medios que no sean las relaciones tabulares utilizados en bases de datos relacionales. Las motivaciones para este enfoque incluyen la simplicidad del diseño, escala horizontal y un mayor control sobre la disponibilidad. Las estructuras de datos utilizadas por NoSQL bases de datos (por ejemplo par clave-valor, gráfico o documento) difieren de aquéllas utilizadas en bases de datos relacionales, hacer algunas operaciones más rápidas en NoSQL y algunos más rápido en bases de datos relacionales. La aptitud particular de una base de datos NoSQL depende del problema que debe resolver.

Bases de datos NoSQL son cada vez más utilizados en datos de grandes y web en tiempo real aplicaciones.[3] También se denominan "Not only SQL" para enfatizar que también puede dar soporte a sistemas NoSQL SQL-como lenguajes de consulta. Muchas tiendas de NoSQL comprometen consistencia (en el sentido de la Teorema del CAP) a favor de la tolerancia de la disponibilidad y la partición. Las barreras a la mayor adopción de NoSQL tiendas incluyen el uso de lenguajes de consulta de bajo nivel, la falta de interfaces estandarizadas y enormes inversiones en SQL existente.[4] La mayoría NoSQL tiendas falta cierto ÁCIDO las transacciones, aunque algunos sistemas recientes, tales como FairCom c-treeACE, Google Llave (aunque técnicamente un NewSQL base de datos) y FoundationDB, han hecho central a sus diseños.

Contenido

  • 1 Historia
  • 2 Tipos de bases de datos NoSQL
  • 3 Rendimiento
  • 4 Manipulación de datos relacionales
    • 4.1 Varias consultas
    • 4.2 Datos de caché/replicación/no normalizada
    • 4.3 Datos de anidamiento
  • 5 Ejemplos
    • 5.1 Almacén de documento
    • 5.2 Gráfico
    • 5.3 Tiendas de clave y valor
      • 5.3.1 KV - eventualmente consistente
      • 5.3.2 KV - ordenada
      • 5.3.3 KV - RAM
      • 5.3.4 KV - unidad de estado sólido o disco giratorio
    • 5.4 Base de datos de objeto
    • 5.5 Tabular
    • 5.6 Tienda de tupla
    • 5.7 Base de datos de almacén de triple/cuádruple (RDF)
    • 5.8 Hosted
    • 5.9 Los bases de datos
    • 5.10 Base de datos de celda
  • 6 Véase también
  • 7 Referencias
  • 8 Lectura adicional
  • 9 Enlaces externos

Historia

Carlo Strozzi utilizó el término NoSQL en 1998 a su peso ligero, base de datos relacional de código abierto No expuso la interfaz estándar de SQL.[5] Strozzi sugiere que, como el actual movimiento NoSQL "se aparta de los en conjunto modelo relacional; se debe por lo tanto haber llamado más apropiadamente 'NoREL' ",[6] refiriéndose a 'No relacional'.

Eric Evans reintrodujo el término NoSQL en 2009 temprano cuando Johan Oskarsson de Last.FM organizó un evento para discutir open source bases de datos distribuidas.[7] Almacena el nombre intentado la aparición de un número creciente de datos no relacionales, distribuidos de la etiqueta. La mayoría de los primeros sistemas NoSQL no intente proporcionar atomicidad, coherencia, aislamiento y durabilidad garantías, contrariamente a la práctica prevaleciente entre los sistemas de base de datos relacional.[8]

Tipos de bases de datos NoSQL

Ha habido varios enfoques para clasificar a bases de datos NoSQL, cada uno con diferentes categorías y subcategorías. Debido a la variedad de enfoques y traslapos es difícil de conseguir y mantener una visión general de bases de datos no relacionales. Sin embargo, una clasificación básica se basa en el modelo de datos. Algunos ejemplos en cada categoría son:

  • Columna: Accumulo, Cassandra, Druida, HBase, Vertica
  • Documento: Clusterpoint, Apache CouchDB, Couchbase, MarkLogic, MongoDB
  • Clave y valor: Dinamo, FoundationDB, MemcacheDB, Redis, Riak, FairCom c-treeACE, Aerospike
  • Gráfico: Allegro, Neo4j, InfiniteGraph, OrientDB, Virtuoso, Stardog

Una clasificación más detallada es la siguiente, por Stephen Yen:[9]

Término Base de datos coincidente
Caché de clave y valor Coherencia, eXtreme Scale, GigaSpaces, GemFire, Hazelcast, Infinispan, JBoss Cache, Memcached, Repcached, Terracota, Velocidad
Tienda de clave y valor Llamarada, Keyspace, RAMCloud, SchemaFree, Hyperdex
Tienda de clave y valor (eventualmente consistente) DovetailDB, Dinamo, Riak, Dynomite, MotionDb, Voldemort, Subregistro
Tienda de clave y valor (pedido) Actores, FoundationDB, Vercetti, Luxio, MemcacheDB, NMDB, Scalaris, TokyoTyrant
Servidor de estructuras de datos Redis
Tienda de tupla Río Apache, Coord, GigaSpaces
Base de datos de objeto DB4O, Prest, Banco, ZopeDB,
Almacén de documento Clusterpoint, Couchbase, CouchDB, MarkLogic, MongoDB, Bases de datos XML
Tienda amplia Columnar BigTable, Cassandra, Druida, HBase, Hypertable, KAI, KDI, OpenNeptune, Qbase

Rendimiento

Ben Scofield había clasificado distintos tipos de bases de datos NoSQL como sigue: [10]

Modelo de datos Rendimiento Escalabilidad Flexibilidad Complejidad Funcionalidad
Clave – valor tienda alta alta alta Ninguno variable (ninguno)
Tienda orientada a la columna alta alta moderada baja mínima
Tienda orientada al documento alta variable (alto) alta baja variable (bajo)
Base de datos de gráfico variable variable alta alta teoría de grafos
Base de datos relacional variable variable baja moderada Álgebra relacional
Vea también: Comparación de software de almacenamiento estructurado

Manipulación de datos relacionales

Más bases de datos NoSQL carecen de capacidad para las uniones en las consultas, el esquema de base de datos generalmente debe diseñarse de manera diferente. Hay tres principales técnicas para el manejo de datos relacionales en una base de datos NoSQL.

Varias consultas

En lugar de recuperar todos los datos con una consulta, es común hacer varias consultas para obtener los datos deseados. Consultas NoSQL son a menudo más rápidas que las consultas SQL tradicionales por el costo de tener que hacer consultas adicionales puede ser aceptable. Si un número excesivo de consultas sería necesario, uno de los otros dos enfoques es el más apropiado.

Datos de caché/replicación/no normalizada

En lugar de sólo almacenar claves foráneas, es común para almacenar valores reales extranjeros junto con los datos del modelo. Por ejemplo, cada comentario de blog puede incluir el nombre de usuario además de un id de usuario, así proporcionando un acceso fácil para el usuario sin necesidad de buscar otro. Cuando un usuario cambia sin embargo, ahora esto tendrá que ser cambiado en muchos lugares en la base de datos. Por lo tanto este enfoque funciona mejor cuando las lecturas son mucho más comunes que escribe. [11]

Datos de anidamiento

Con bases de datos documentales como MongoDB es común poner más datos en el menor número de colecciones. Por ejemplo en una aplicación de blogging, uno puede elegir almacenar comentarios dentro del documento de post de blog para que con una sola recuperación uno consigue todos los comentarios. Por lo tanto en este enfoque un único documento contiene todos los datos que usted necesita para una tarea específica.

Ejemplos

Almacén de documento

Artículos principales: Base de datos orientada a documentos y Base de datos XML

El concepto central de un almacén de documento es la noción de un "documento". Mientras que cada implementación de base de datos orientada al documento difiere sobre los detalles de esta definición, en general, todos asumen que documentos encapsulan y codifican datos (o información) en algunos formatos estándar o codificaciones. Codificaciones en uso incluyen XML, YAML, y JSON así como formas binarias BSON.

Diferentes implementaciones ofrecen diferentes maneras de organizar o agrupar los documentos:

  • Colecciones
  • Etiquetas
  • Metadatos no visibles
  • Jerarquías de directorio

En comparación con bases de datos relacionales, por ejemplo, las colecciones podrían considerarse análogas a tablas y documentos análogos a los registros. Pero son diferentes: cada registro en una tabla tiene la misma secuencia de campos, mientras que los documentos en una colección pueden tener campos que son completamente diferentes.

Los documentos son abordados en la base de datos mediante un único clave que representa ese documento. Una de las otras características que definen una base de datos orientada al documento es que, más allá de utilizar la búsqueda simple documento clave (o clave y valor) para recuperar un documento, la base de datos ofrece un lenguaje API o consulta que recupera documentos basados en su contenido.

Documento tienda de bases de datos y su lenguaje de consulta
Nombre Idioma Notas
BaseX Java, XQuery Base de datos XML
Cloudant C, Erlang, Java, Scala JSON tienda (servicio online)
Clusterpoint C, C++, RESTO, XML, búsqueda de texto completo Base de datos XML con soporte para JSON, texto, archivos binarios
Servidor Couchbase C, C++, Erlang Soporte para JSON y documentos binarios
Apache CouchDB Erlang JSON base de datos
Solr Java Motor de búsqueda
ElasticSearch Java JSON, Motor de búsqueda
Existen Java, XQuery Base de datos XML
Liebre Java Java Content Repository implementación
IBM Notes y IBM Domino LotusScript, Java, IBM X Pages, otros MultiValue
Servidor MarkLogic Java, RESTO, XQuery Base de datos XML con el apoyo de JSON, texto y archivos binarios
MongoDB C++, C#, Go BSON tienda (formato binario JSON)
ObjectDatabase ++ C++, C#, TScript Estructuras de clase C++ nativo binarias
Bases de datos NoSQL Oracle C, Java
OrientDB Java JSON, Soporte SQL
CoreFoundation Lista de propiedades C, C++, Objective-C JSON, XML, binario
Sedna C++, XQuery Base de datos XML
SimpleDB Erlang servicio en línea
TokuMX C++, C#, Go MongoDB con Indexación de árbol fractal
OpenLink Virtuoso C++, C#, Java, SPARQL middleware y motor de base de datos híbrido

Gráfico

Artículo principal: Base de datos de gráfico

Este tipo de base de datos está diseñado para datos cuyas relaciones están bien representados en un gráfico (elementos interconectados con un número indeterminado de las relaciones entre ellos). El tipo de datos podría ser las relaciones sociales, transporte público, mapas de carreteras o topologías de red, por ejemplo.

Bases de datos gráfico y su lenguaje de consulta
Nombre Idioma (s) Notas
AllegroGraph SPARQL RDF GraphStore
DEX/Sparksee C++, Java, .NET, Python Alto rendimiento base de datos de gráfico
FlockDB Scala
IBM DB2 SPARQL RDF GraphStore agregado en DB2 10
InfiniteGraph Java Alto rendimiento, escalable y distribuida base de datos de gráfico
Neo4j Java
OWLIM Java, SPARQL 1.1 RDF tienda de gráfico con el razonamiento
OrientDB Java
Sones GraphDB C#
Sqrrl Enterprise Java Base de datos de gráfico en tiempo real, distribuidos con seguridad a nivel de la célula
OpenLink Virtuoso C++, C#, Java, SPARQL middleware y motor de base de datos híbrido
Stardog Java, SPARQL semántica base de datos de gráfico

Tiendas de clave y valor

Tiendas de clave y valor (KV) uso el matriz asociativa (también conocido como un mapa o diccionario) como su modelo de datos fundamentales. En este modelo, los datos se representan como una colección de pares clave / valor, tal que cada tecla posible aparece como máximo una vez en la colección.[12][13]

El modelo de clave y valor es uno de los modelos más simples de datos no triviales, y modelos de datos más ricos se aplican a menudo encima. El modelo de clave y valor puede extenderse a un ordenado modelo que mantiene las llaves en orden lexicográfico. Esta extensión es poderosa, que puede procesar eficientemente clave gamas.[14]

Pueden utilizar tiendas de clave y valor modelos de consistencia que van desde consistencia eventual Para serializabilidad. Algunos apoyan pedido de llaves. Algunos sostienen que los datos en memoria (RAM), mientras que otros emplean unidades de estado sólido o discos giratorios. Aquí está una lista de las tiendas de clave y valor:

KV - eventualmente consistente

  • Dinamo
  • Riak[15]

KV - ordenada

  • Berkeley DB
  • FairCom c-treeACE/c-treeRTG
  • FoundationDB
  • IBM Informix C-ISAM
  • InfinityDB
  • LMDB
  • MemcacheDB
  • NDBM

KV - RAM

  • Coherencia
  • FairCom c-treeACE
  • Hazelcast
  • Memcached
  • OpenLink Virtuoso
  • Redis
  • XAP

KV - unidad de estado sólido o disco giratorio

  • Aerospike
  • BigTable
  • CDB
  • Base de datos XML Clusterpoint
  • Coherencia
  • Servidor Couchbase
  • FairCom c-treeACE
  • DTMM[16]
  • Hibari
  • Keyspace
  • LevelDB
  • LMDB
  • MemcacheDB (usando Berkeley DB)
  • MongoDB
  • OpenLink Virtuoso
  • Bases de datos NoSQL Oracle
  • Tarantool
  • Gabinete de Tokio
  • Espacio de tupla

Base de datos de objeto

Artículo principal: Base de datos de objeto
  • DB4O
  • Piedra preciosa/S
  • InterSystems Caché
  • JADE
  • ODB: NeoDatis
  • ObjectDatabase ++
  • ObjectDB
  • Objetividad/DB
  • ObjectStore
  • ODABA
  • Prest
  • OpenLink Virtuoso
  • Versant Object Database
  • ZODB

Tabular

  • Apache Accumulo
  • BigTable
  • Apache Hbase
  • Hypertable
  • Mnesia
  • OpenLink Virtuoso

Tienda de tupla

  • Río Apache
  • GigaSpaces
  • Tarantool
  • TIBCO ActiveSpaces
  • OpenLink Virtuoso

Base de datos de almacén de triple/cuádruple (RDF)

  • Apache JENA
  • MarkLogic
  • Ontotext-OWLIM
  • Bases de datos NoSQL Oracle
  • SparkleDB
  • Virtuoso Universal Server
  • Stardog

Hosted

  • Amazona DynamoDB
  • Capa de datos Cloudant (CouchDB)
  • Almacén de datos en Google Appengine
  • Freebase
  • OpenLink Virtuoso

Los bases de datos

  • D3 Buscar base de datos
  • Motor de almacenamiento extensible (ESE/NT)
  • InfinityDB
  • InterSystems Caché
  • Northgate Information Solutions Realidad, la base de datos original Pick/MV
  • OpenQM
  • Revelación Software OpenInsight
  • Cohete U2

Base de datos de celda

Véase también

  • Teorema del CAP
  • Comparación de sistemas de gestión de base de datos de objeto
  • Comparación de software de almacenamiento estructurado
  • Búsqueda de facetas
  • Triplestore
  • Caché distribuido

Referencias

  1. ^ "NoSQL (no sólo SQL)". Base de datos NoSQL, también llamado Not Only SQL
  2. ^ Martin Fowler. "NosqlDefinition". muchos defensores de NoSQL dicen que no significa un "no" a SQL, algo que significa Not Only SQL
  3. ^ "RDBMS dominan el mercado de base de datos, pero los sistemas NoSQL están alcanzando". DB-Engines.com. 21 de noviembre de 2013. 24 Nov 2013.
  4. ^ K. Grolinger, W.A. Higashino, A. Tiwari, m.a.m. Capretz (2013). "Gestión de datos en entornos cloud: almacenes de datos NoSQL y NewSQL". JoCCASA, Springer. 8 Jan 2014.
  5. ^ Lith, Adán; Jakob Mattson (2010). "Investigando soluciones de almacenamiento para datos de gran tamaño: una comparación de soluciones de almacenamiento de datos bien realizando y escalable para la inserción batch y extracción de datos de tiempo real" (PDF). Gotemburgo: Departamento de Informática e ingeniería, Chalmers University of Technology. p. 70. 12 de mayo 2011. Carlo Strozzi primero utilizó el término NoSQL en 1998 como un nombre para su base de datos relacional de código abierto que no ofrece una interfaz SQL [...]
  6. ^ "Sistema de gestión de base de datos relacional NoSQL: Página de inicio". Strozzi.it. 02 de octubre de 2007. 29 de marzo 2010.
  7. ^ "NoSQL 2009". Blog.sym-link.com. 12 de mayo de 2009. 29 de marzo 2010.
  8. ^ Mike Chapple. "El modelo de ácido".
  9. ^ Yen, Stephen. "NoSQL es un carruaje sin caballos" (PDF). NorthScale. 26 / 06 / 2014..
  10. ^ Scofield, Ben (2010-01-14). "NoSQL - muerte de Databases(?) relacional". 26 / 06 / 2014.
  11. ^ "Hacer el cambio de relacional a NoSQL". Couchbase.com. 5 de diciembre, 2014.
  12. ^ Sandy (14 de enero de 2011). "Las tiendas clave valor y el movimiento NoSQL". https://DBA.StackExchange.com/Questions/607/What-is-a-key-value-Store-Database:: Stackexchange. 1 de enero 2012. Tiendas de clave y valor permiten al desarrollador de la aplicación almacenar datos de esquema menos. Estos datos generalmente consisten en una cadena que representa la clave y los datos reales que se consideran el valor de la relación "key-value". Los datos se son ser una especie de primitivo del lenguaje de programación (una cadena, un entero o una matriz) o un objeto que se se calcula por vinculaciones del lenguaje de programación para la tienda de clave y valor. Esta estructura reemplaza la necesidad de un modelo de datos fijos y permite formato apropiado.
  13. ^ Marc Seeger (21 de septiembre de 2009). "Tiendas de clave y valor: una visión práctica". https://blog.Marc-Seeger.de/2009/09/21/key-value-Stores-a-Practical-Overview/:: Seeger Marc. 1 de enero 2012. Tiendas de clave y valor proporcionan una base de datos de alto rendimiento alternativa a relacionales sistemas respecto a almacenar y acceder a los datos. Este artículo ofrece un breve resumen de algunas de las tiendas de clave y valor actualmente disponibles y su interfaz con el lenguaje de programación Ruby.
  14. ^ Ilya Katsov (01 de marzo de 2012). "Técnicas de modelado de datos NoSQL". Ilya Katsov. 8 de mayo 2014.
  15. ^ "Riak: una fuente abierta escalable Data Store". 28 de noviembre de 2010. $1 $2. Valores de fecha de llegada: |accessdate = (Ayuda)
  16. ^ Tweed, Rob; James George (2010). "Un motor NoSQL Universal, utilizando una tecnología probada" (PDF). p. 25. Sin excepción, la más exitosa y conocida de las bases de datos NoSQL se han desarrollado desde cero, todo ello en apenas los últimos años. Curiosamente, parece que nadie miró a su alrededor para ver si había alguna tecnología de base de datos existente, implementado con éxito que podría haber proporcionado una base sólida para satisfacer las demandas de la Web-escala. Había hecho así, quizá han descubierto dos productos, GT.M y Caché... *

Lectura adicional

  • Pramod Sadalage y Martin Fowler (2012). Agua destilada NoSQL: Una breve guía para el mundo emergente de persistencia políglota. Addison-Wesley. ISBN0-321-82662-0.
  • Dan McCreary & Ann Kelly (2013). Sentido de NoSQL: una guía para los gerentes y el resto de nosotros. ISBN9781617291074.
  • Christof Strauch (2012). "Bases de datos NoSQL".
  • Moniruzzaman AB, Hossain SA (2013). "Base de datos NoSQL: Nueva Era de las bases de datos para Big data Analytics - clasificación, características y comparación".
  • Kai Orend (2013). "Análisis y clasificación de bases de datos NoSQL y evaluación de su capacidad para reemplazar una capa de persistencia objeto-relacional".
  • Ganesh Krishnan, Sarang Kulkarni, Dharmesh Kirit Dadbhawala. "Método y sistema para compartir con versiones, consolidando y reportar información".
  • Sugam Sharma. "Una breve revisión en modelos de datos NoSQL moderno, manipulación de Big Data".

Enlaces externos

  • Christoph Strauch. "NoSQL whitepaper". Hochschule der Medien, Stuttgart.
  • Stefan Edlich. "NoSQL base de datos de lista".
  • Peter Neubauer (2010). "Las bases de datos gráfico, NOSQL y Neo4j".
  • Sergey Bushik (2012). "Una comparación independiente de bases de datos NoSQL: Cassandra, MongoDB, HBase, Riak". NetworkWorld.

Otras Páginas

Obtenido de"https://en.copro.org/w/index.php?title=NoSQL&oldid=636811272"