2010-01-31 22 views
40

¿Qué es exactamente NoSQL? ¿Los sistemas de bases de datos solo funcionan con pares de {key: value}?¿Qué es exactamente NoSQL?

Por lo que sé MemCache es uno de esos sistemas de bases de datos, ¿verdad?

¿Qué otras bases de datos populares NoSQL existen y dónde son exactamente útiles?

Gracias, Boda Cydo.

+0

wiki de la comunidad? –

+10

http://en.wikipedia.org/wiki/Nosql ??? – skaffman

+0

http://stackoverflow.com/questions/1245338/what-nosql-means-can-someone-explain-it-to-me-in-simple-words –

Respuesta

17

de Wikipedia:

NoSQL es un término general para una clase definida libremente de almacenes de datos no relacionales que rompen con una larga historia de bases de datos relacionales y garantías ACID. Los almacenes de datos que se incluyen en este término pueden no requerir esquemas de tablas fijas y, por lo general, evitar operaciones de unión. El término fue popularizado por primera vez a principios de 2009.

La motivación para este tipo de arquitectura era alta escalabilidad, para apoyar a sitios como Facebook, advertising.com, etc ...

+0

tengo un mejor entendimiento ahora. ¡gracias! – bodacydo

+4

El impulso original para estos nuevos enfoques es la escalabilidad horizontal, pero ahora hay otros beneficios significativos, principalmente la facilidad de desarrollo. Las bases de datos orientadas a documentos, por ejemplo, eliminan una gran parte del trabajo de desajuste de impedancia relacional de objetos del pasado. Además, los esquemas flexibles aquí se ajustan bien a los lenguajes de programación más nuevos de tipo dinámico (Python, Ruby, PHP, ...) –

1

Usé algo llamado Raima Data Manager hace más de una docena de años, que califica como NoSQL. Se llama a sí mismo una "base de datos orientada a conjuntos" No se basa en tablas, y no hay un "lenguaje" de consulta, solo una API C para solicitar subconjuntos.

Es rápido y más fácil de trabajar en C/C++ y SQL, no hay edificación cadenas para pasar a un intérprete de consulta y los datos regresa como un objeto enumerable en lugar de como una matriz. los registros de tamaño variable son normales y no desperdician espacio. Nunca vi el código fuente, pero había algunos indicios en la interfaz que internamente, el código usaba muchos punteros.

No estoy seguro de que el producto que utilicé ya se haya vendido, pero la compañía aún existe.

+0

interesante. gracias por contribuir con tu respuesta – bodacydo

7

Para obtener rápidamente un control sobre los sistemas NoSQL, consulte esta publicación en el blog que escribí: Visual Guide to NoSQL Systems. Básicamente, los sistemas NoSQL sacrifican la coherencia o la disponibilidad a favor de la tolerancia a las particiones de red.

1

MongoDB parece interesante, SourceForge is now using it.

Escuché un podcast con un miembro del equipo. La idea de NoSQL no es tanto reemplazar SQL como ofrecer una solución para problemas que no se resuelven bien con RDBMS tradicional. Como se mencionó en otra parte, son más rápidos y escalan mejor a costa de la confiabilidad y la atomicidad (diferentes soluciones en diferentes grados). No querría usar uno para un sistema financiero, pero un sistema basado en documentos funcionaría muy bien.

18

No estoy de acuerdo con las respuestas que estoy viendo, si bien es cierto que las soluciones NoSQL tiende a romper las reglas de ACID, no todos se crean a partir de ese enfoque.

Creo que primero debe definir qué es una solución SQL y luego puede poner "No solo" frente a ella, esa será una definición más precisa de lo que es una solución NoSQL.

Con este enfoque en mente:

bases de datos SQL son una forma de agrupar todos los almacenes de datos que se puede acceder usando el lenguaje de consulta estructurado como el principal (y la mayoría de las veces única) manera de comunicarse con ellos , esto significa que se requiere que la base de datos compatible con las estructuras que son comunes a los sistemas como "tablas", "columnas", "filas", "Relaciones", etc.

Ahora, poner el "no sólo" delante de la última oración y obtendrás una definición de lo que significa "NoSQL". NoSQL agrupa todas las tiendas creadas como un intento de resolver problemas que no caben en las estructuras de tabla/columna/filas o incluso en declaraciones SQL, en la mayoría de los casos estas bases de datos no admiten relaciones, están abandonando las estructuras bien conocidas solo porque los problemas han cambiado desde su concepción.

Si tiene un archivo de texto y crea una API para almacenar/recuperar/organizar esta información, entonces tiene una base de datos NoSQL en sus manos.

Todo esto significa que hay varias soluciones para almacenar la información de una manera que los sistemas SQL tradicionales no permitirán lograr un mejor rendimiento, flexibilidad, etc. etc. Cada proveedor de NoSQL intenta resolver un problema diferente y es por eso que no será capaz de comparar dos soluciones diferentes, por ejemplo:

  • djondb es una tienda de documento creado para ser utilizado como transacciones de soluciones empresariales NoSQL de apoyo, consistencia, etc., pero el rendimiento sacrificio de sus homólogos.
  • MongoDB es una tienda de documentos (similar a djondb) que logra un gran rendimiento pero intercambia algunas de las propiedades ACID para lograr esto.
  • CouchDB es otra tienda de documentos que resuelve las consultas ligeramente diferentes proporcionando vistas para recuperar la información sin hacer una consulta completa cada vez.
  • ...

Como se habrán dado cuenta que sólo hablaba de los depósitos de documentos, eso es porque quería demostrar que 3 diferentes implementaciones de almacenamiento de documentos tienen enfoque diferente, por lo tanto, se debe tener en cuenta el oro regla de las tiendas NoSQL "Use la herramienta adecuada para el trabajo correcto".

Soy el creador de djondb y he estado investigando mucho antes incluso de intentar comenzar mi propia implementación NoSQL, pero este es un campo donde los conceptos seguirán cambiando la forma en que vemos el almacenamiento de información.

+0

No es "no". Se abrevia para No solo SQL. –

0

¿Qué es NoSQL?

NoSQL es el acrónimo de Not Only SQL. Las cualidades básicas de las bases de datos NoSQL son esquemáticas, distribuidas y escalables horizontalmente en hardware básico. Las bases de datos NoSQL ofrecen una variedad de funciones para resolver diversos problemas con variedad de tipos de datos, donde "blob" solía ser el único tipo de datos en RDBMS para almacenar datos no estructurados.

1 Esquema dinámico Las bases de datos No SQL permiten que el esquema sea flexible. Se pueden agregar nuevas columnas en cualquier momento. Las filas pueden tener o no valores para esas columnas y no hay una aplicación estricta de los tipos de datos para las columnas. Esta flexibilidad es útil para los desarrolladores, especialmente cuando esperan cambios frecuentes durante el ciclo de vida del producto.

2 Variedad de datos Las bases de datos NoSQL admiten cualquier tipo de datos. Admite datos estructurados, semiestructurados y no estructurados para ser almacenados. Es compatible con registros, archivos de imágenes, videos, gráficos, jpegs, JSON, XML para ser almacenados y operados tal cual sin ningún procesamiento previo. Por lo tanto, reduce la necesidad de ETL (Extraer - Transformar - Cargar).

3 Alto clúster de disponibilidad Las bases de datos No SQL admiten el almacenamiento distribuido utilizando hardware básico. También es compatible con alta disponibilidad por escalabilidad horizontal. Esta característica permite a las bases de datos NoSQL obtener el beneficio de la naturaleza elástica de los servicios de infraestructura de la nube.

4 Código abierto Las bases de datos NoSQL son software de código abierto. El uso de software es gratuito y la mayoría de ellos es de uso gratuito en productos comerciales. La base de código de fuentes abiertas se puede modificar para resolver las necesidades del negocio. Existen pequeñas variaciones en las licencias de software de código abierto, los usuarios deben conocer los acuerdos de licencia.

5 NoSQL - No solo SQL Las bases de datos No SQL no solo dependen de SQL para recuperar datos. Proporcionan interfaces de API ricas para realizar operaciones DML y CRUD. Estas API son amigables para desarrolladores de movimientos y compatibles en una variedad de lenguajes de programación.