Pregunta

He estado escuchando cosas sobre NoSQL y que con el tiempo puede convertirse en el reemplazo para los métodos de almacenamiento de SQL DB debido al hecho de que la interacción DB es a menudo un cuello de botella para la velocidad en la web.

Así que sólo tengo un par de preguntas:

  1. ¿Qué es exactamente?

  2. ¿Cómo funciona?

  3. ¿Por qué sería mejor que usar una base de datos SQL? Y cuánto mejor es?

  4. ¿Es la tecnología demasiado nueva para empezar a aplicar todavía o ¿merece la pena echar un vistazo en?

¿Fue útil?

Solución

  1. ¿Qué es exactamente?

    Por un lado, un específica sistema, sino que también se ha convertido en un término genérico para una variedad de nueva backends de almacenamiento de datos que no siguen el modelo de base de datos relacional.

  2. ¿Cómo funciona?

    Cada uno de los sistemas etiquetados con el nombre genérico funciona de manera diferente, pero la idea básica es la de ofrecer una mejor escalabilidad y el rendimiento mediante el uso de modelos de base de datos que no son compatibles con todas las funcionalidades de un RDBMS genéricos, pero aún así la funcionalidad suficiente para ser útil . En cierto modo, es como MySQL, que en un momento carecía de soporte para transacciones, pero, exactamente ya de eso, logró superar a otros sistemas de base de datos. Si usted puede escribir su aplicación de una manera que no requiriera transacciones, que estaba muy bien.

  3. ¿Por qué sería mejor que usar una base de datos SQL? Y cuánto mejor es?

    Sería mejor cuando su sitio necesita para escalar de forma tan masiva que los mejores RDBMS se ejecuta en el mejor hardware que puede pagar y optimizado tanto como sea posible, simplemente no puede mantenerse al día con la carga. Cuánto mejor es depende del caso de uso específico (un montón de actividad de actualización combinada con una gran cantidad de combinaciones es muy duro en los RDBMS "tradicional") -. Bien podría ser un factor de 1000 en casos extremos

  4. es la tecnología demasiado nueva para empezar a aplicar todavía o ¿merece la pena echar un vistazo en?

    depende principalmente de lo que estamos tratando de lograr. Es sin duda lo suficientemente maduro para su uso. Sin embargo, algunas aplicaciones realmente necesitan para escalar que masivamente. Para la mayoría, un RDBMS tradicional es suficiente. Sin embargo, con el uso de Internet cada vez más omnipresente todo el tiempo, es muy probable que las aplicaciones que hacen llegarán a ser más común (aunque probablemente no dominante).

Otros consejos

No existe tal cosa como NoSQL!

NoSQL es una palabra de moda.

Durante décadas, cuando la gente hablaba de bases de datos, que significaban las bases de datos relacionales. Y cuando la gente hablaba de bases de datos relacionales, que significaban aquellos que controlas con Structured Query Language de Edgar F. Codd. El almacenamiento de datos de alguna otra manera? ¡Locura! Todo lo demás es sólo flatfiles.

Sin embargo, en los últimos años, la gente comenzó a cuestionar este dogma. La gente se preguntaba si las tablas con filas y columnas son realmente la única manera de representar los datos. La gente empezó a pensar y codificación, y se acercó con muchos nuevos conceptos de cómo podrían organizarse de datos. Y empezaron a crear nuevos sistemas de bases de datos diseñadas para estas nuevas formas de trabajar con los datos.

Las filosofías de todas estas bases de datos eran diferentes. Pero una cosa todas estas bases de datos tenían en común, era que el lenguaje de consulta estructurado ya no era un buen ajuste para su uso. Así que cada base de datos SQL reemplazó con sus propios lenguajes de consulta. Y así nació el término NoSQL, como una etiqueta para todas las tecnologías de bases de datos que desafían el modelo de base de datos relacional clásico.

¿Qué hacer bases de datos NoSQL tienen en común?

En realidad, no mucho.

A menudo se oye frases como:

  • NoSQL es escalable!
  • NoSQL es para bigdata!
  • NoSQL viola ÁCIDO!
  • NoSQL es una tienda de clave / valor glorificado!

¿Es cierto? Bueno, algunos de estos estados puede ser cierto para algunas bases de datos NoSQL comúnmente llamados, pero cada uno también es falso durante al menos otro. En realidad, lo único que las bases de datos NoSQL tienen en común, es que son bases de datos que no utilizan SQL. Eso es. La única cosa que los define es lo que los distingue de los demás.

Así que lo que diferencia a las bases de datos NoSQL separados?

Así que dejó claro que todas esas bases de datos comúnmente conocida como NoSQL son demasiado diferentes para evaluar juntos. Cada uno de ellos tiene que ser evaluado por separado para decidir si son una buena opción para resolver un problema específico. Pero ¿dónde empezamos? Afortunadamente, las bases de datos NoSQL pueden agruparse en ciertas categorías, que son adecuados para diferentes casos de uso:

orientada Documento-

Ejemplos: MongoDB, CouchDB

Puntos fuertes: los datos heterogéneas, de trabajo, de desarrollo ágil orientado a objetos

Su ventaja es que no requieren una estructura de datos consistente. Son útiles cuando sus necesidades y por lo tanto su diseño de base de datos cambia constantemente, o cuando se trata de conjuntos de datos que pertenecen juntos, pero todavía se ven muy diferente. Cuando usted tiene un montón de tablas con dos columnas denominadas "llave" y "valor", entonces estos podrían ser vale la pena analizar.

bases de datos Gráfico

Ejemplos:. Neo4j, GiraffeDB

Puntos fuertes: minería de datos

Mientras que la mayoría de las bases de datos NoSQL abandonar el concepto de gestión de las relaciones de datos, estas bases de datos se abrazan incluso más que los llamados bases de datos relacionales.

Su atención se centra en la definición de los datos por su relación con otros datos. Cuando usted tiene un montón de tablas con claves primarias que son las claves primarias de otras dos tablas (y tal vez algunos datos que describen la relación entre ellos), entonces estos podrían ser algo para usted.

Tiendas de valor-clave

Ejemplos: Redis, Cassandra, MemcacheDB

Puntos fuertes: búsqueda rápida de los valores de las claves conocidas

Son muy simplista, pero que les hace rápido y fácil de usar. Cuando no se tiene necesidad de procedimientos almacenados, triggers y restricciones, todas las características avanzadas de bases de datos y lo que desea un rápido almacenamiento y recuperación de sus datos, entonces esos son para usted.

Desafortunadamente asumen que usted sabe exactamente lo que busca. Es necesario el perfil de User157641? No hay problema, sólo tomará microsegundos. Pero lo que cuando se desea que los nombres de todos los usuarios que tienen edades comprendidas entre los 16 y 24 años, tienen "gofres" como su faVorite alimentos y se haya identificado en las últimas 24 horas? Mala suerte. Cuando usted no tiene una clave definida y única para un resultado específico, no se puede quitar de su tienda K-V tan fácilmente.

es SQL obsoleto?

Algunos autores afirman que NoSQL su base de datos NoSQL favorita es la nueva manera de hacer las cosas, y SQL es una cosa del pasado.

¿Tienen razón?

No, claro que no lo son. Si bien hay problemas de SQL no es adecuado para, todavía tiene sus puntos fuertes. Una gran cantidad de modelos de datos son simplemente mejor representados como una colección de tablas que hacen referencia entre sí. Sobre todo porque la mayoría de los programadores de bases de datos fueron capacitados durante décadas a pensar de datos de una manera relacional y tratar de presionar a esta forma de pensar en una nueva tecnología que no fue hecho para que rara vez termina bien.

bases de datos NoSQL no son un reemplazo para SQL - que son una alternativa

.

La mayoría de los ecosistemas de software en torno a las diferentes bases de datos NoSQL sin embargo, no son tan madura. Si bien hay avances, todavía no se ha conseguido herramientas complementarias que son tan maduro y poderoso como los que están disponibles para bases de datos SQL populares.

Además, hay mucho más know-how para SQL alrededor. Generaciones de científicos de la computación han pasado décadas de su carrera en la investigación se centra en las bases de datos relacionales, y se nota: La literatura escrita sobre las bases de datos SQL y modelado de datos relacionales, tanto prácticas como teóricas, podría llenar varias bibliotecas llenas de libros. ¿Cómo construir una base de datos relacional para sus datos es un tema tan bien investigado que es difícil encontrar un caso esquina donde no hay una aceptación general mejores prácticas by-the-libro.

La mayoría de las bases de datos NoSQL, por el contrario, están todavía en su infancia. Todavía estamos averiguar la mejor manera de utilizarlos.

Desde que alguien dijo que mi post anterior era fuera de tema, voy a tratar de compensar :-) NoSQL no es, y nunca fue destinado a ser un sustituto de bases de datos SQL más de corriente, pero un par de palabras están en para conseguir las cosas en la perspectiva correcta.

En el corazón mismo de la NoSQL filosofía se encuentra la consideración de que, posiblemente por razones comerciales y de portabilidad, motores SQL tienden a no tener en cuenta la tremenda potencia del sistema operativo UNIX y sus derivados.

Con una base de datos basada en el sistema de archivos, usted puede tomar ventaja inmediata de las cada vez mayores capacidades y potencia del sistema operativo subyacente, que han ido aumentando de manera constante desde hace muchos años, de acuerdo con la ley de Moore. Con este enfoque, muchos de los comandos del sistema operativo se convierten automáticamente también "operadores de bases de datos" (pensar en "ls" "tipo", "encontrar" y los otros innumerables utilidades de shell UNIX).

Con esto en mente, y un poco de creatividad, usted puede de hecho diseñar una base de datos basada en el sistema de archivos que es capaz de superar las limitaciones de muchos motores SQL comunes, al menos para los patrones de uso específicos, que es el punto entero detrás de NoSQL de la filosofía, la forma en que lo veo.

corro cientos de sitios web y todos ellos utilizan NoSQL, en mayor o menor medida. De hecho, ellos no alojan enormes cantidades de datos, pero incluso si algunos de ellos probablemente podría pensar en un uso creativo de NoSQL y el sistema de archivos para superar los cuellos de botella. Algo que probablemente sería más difícil con "cárceles" SQL tradicionales. Los insto a Google de "manis" "Unix", y "Shaffer" para entender lo que quiero decir.

Si no recuerdo mal, se refiere a los tipos de bases de datos que no necesariamente siguen la estructura relacional. bases de datos documentales vienen a la mente, bases de datos sin una estructura específica, y que no utilizan SQL como lenguaje de consulta específica.

Por lo general es más adecuado para aplicaciones web que se basan en el rendimiento de la base de datos, y que no necesitan funciones más avanzadas de los motores de Relación de bases de datos. Por ejemplo, un número-> Tienda Valor proporcionando una consulta sencilla interfaz de Identificación del 10-100x podría ser más rápido que la implementación del servidor SQL correspondiente, con un coste de mantenimiento inferior del revelador.

Un ejemplo es este para una OLTP tienda Tuple, que se sacrificó transacciones para el procesamiento de un solo subproceso (no hay problema de concurrencia porque no concurrencia permitido) , y se mantienen todos los datos en la memoria; 10-100x lograr un mejor rendimiento en comparación con una RDBMS sistema impulsado similar. Básicamente, se está alejando de la 'talla única' vista de los sistemas de bases de datos SQL y.

En la práctica, NoSQL es un sistema de base de datos que soporta el acceso rápido a grandes objetos binarios (documentos, hojas jpgs etc.) utilizando una estrategia basada en una clave de acceso. Esta es una desviación de la tradicional acceso SQL que es suficiente sólo es bueno para los valores alfanuméricos. No sólo la estrategia de almacenamiento y acceso interno, sino también la sintaxis y las limitaciones del formato de visualización restringe el SQL tradicional. BLOB implementaciones de bases de datos relacionales tradicionales también sufren de estas restricciones.

Detrás de la escena es una admisión indirecta del fracaso del modelo SQL para soportar cualquier forma de OLTP o soporte para nuevos DataFormats. "Soporte" significa no solo tienda, pero las capacidades de acceso completos - programática y querywise utilizando el modelo estándar.

entusiastas relacionales fueron rápidos para modificar la defnición de NoSQL de No-SQL para No-Sólo-SQL para mantener SQL todavía en la imagen! Esto no es bueno sobre todo cuando vemos que la mayoría de los programas de Java hoy recurrir a mapeo ORM del modelo relacional subyacente. Un nuevo concepto debe tener una definición tajante. De lo contrario va a terminar como SOA.

La base de los sistemas NoSQL se encuentra en la clave aleatoria - par de valores. pero esto no es nuevo. Los sistemas de bases de datos tradicionales como IMS y IDMS apoyó teclas ramdom hash (sin hacer uso de cualquier índice) y todavía lo hacen. De hecho IDMS ya tiene una palabra clave NONSQL donde apoyan el acceso SQL a su base de datos de red más antigua que se ha denominado como NONSQL.

Es como Jacuzzi: tanto una marca y un nombre genérico. No es sólo una tecnología específica, sino más bien una específica type de la tecnología, en este caso refiriéndose a gran escala (a menudo parciales) "bases de datos" como BigTable de Google o CouchDB.

NoSQL el actual programa parece ser una base de datos relacional implementado en awk usando archivos planos en el backend. Aunque profesen, "NoSQL esencialmente no tiene límites arbitrarios, y puede trabajar donde otros productos no pueden. Por ejemplo no hay límite en el tamaño del campo de datos, el número de columnas, o tamaño de archivo", no creo que es la base de datos a gran escala en el futuro.

Como dice Joel, masivamente bases de datos escalables como BigTable o HBase , son mucho más interesante. GQL es el lenguaje de consulta asociada con BigTable y App Engine. Es en gran medida SQL ajustado para evitar que cuenta con Google considera cuellos de botella (como se une). Sin embargo, no he escuchado esto se refiere como "NoSQL" antes.

NoSQL es un sistema de base de datos que no utiliza las consultas SQL basado cuerda para obtener los datos.

En su lugar, crear consultas mediante una API van a proporcionar, por ejemplo Amazon DynamoDB es un buen ejemplo de una base de datos NoSQL.

bases de datos NoSQL son mejores para aplicaciones de gran tamaño donde la escalabilidad es importante.

  

¿Significa NoSQL base de datos no relacionales?

Sí, NoSQL es diferente de RDBMS y OLAP. Utiliza modelos de consistencia más flojas que las bases de datos relacionales tradicionales.

modelos de consistencia se utilizan en sistemas distribuidos como los sistemas de memoria compartida distribuida o sistema de archivos distribuido.

  

¿Cómo funciona internamente?

sistemas de bases de datos NoSQL son a menudo altamente optimizado para la recuperación y las operaciones añadiendo y a menudo ofrecen poca funcionalidad más allá de almacenamiento de registros (por ejemplo, tiendas de clave-valor). La flexibilidad de tiempo de ejecución reducido en comparación con los sistemas completos de SQL es compensada por las ganancias notables en el rendimiento y la escalabilidad para ciertos modelos de datos.

Se puede trabajar sobre datos estructurados y no estructurados. Utiliza Colecciones en lugar de tablas

  

¿Cómo se consulta como "base de datos"?

SQL vs NoSQL: Batalla de los Backends ; que lo explica todo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top