Red de conocimiento de abogados - Derecho de sociedades - ¿Qué son las bases de datos nosql?

¿Qué son las bases de datos nosql?

1. CouchDB

Idioma: Erlang

Características: consistencia de base de datos, fácil de usar

Licencia: Apache

Protocolo: HTTP/REST

Replicación de datos bidireccional,

Procesamiento continuo o temporal,

Procesamiento con verificación de conflictos,

Por lo tanto , se utiliza la replicación maestro-maestro (consulte la Nota del editor 2)

MVCC: las operaciones de escritura no bloquean las operaciones de lectura

Se pueden guardar versiones anteriores de archivos

Diseño (confiable) solo contra fallas

Requiere compresión de datos de vez en cuando

Vista: mapeo/reducción incrustados

Vista formateada: visualización de lista

Admite la verificación de documentos del lado del servidor

Admite autenticación

Actualizaciones en tiempo real basadas en cambios

Admite el procesamiento de archivos adjuntos

Por lo tanto , CouchApps (aplicaciones js independientes)

requiere la biblioteca jQuery

Mejor escenario de aplicación: adecuado para pequeños cambios de datos, ejecución de consultas predefinidas y aplicaciones de estadísticas de datos. Adecuado para aplicaciones que requieren soporte de versión de datos.

Por ejemplo: CRM, sistema CMS. La replicación maestro-maestro es muy útil para implementaciones en múltiples sitios.

(Nota del editor 2: replicación maestro-maestro: es un método de sincronización de bases de datos que permite compartir datos entre un grupo de computadoras, y cualquier miembro del grupo puede compartir datos dentro del grupo. Actualizado )

2. Redis

Idioma: C/C++

Características: Extremadamente rápido

Licencia: BSD

Protocolo: similar a Telnet

Hay una base de datos en memoria compatible con el almacenamiento en el disco duro,

Pero desde la versión 2.0, los datos se pueden intercambiar al disco duro (nota, las versiones posteriores a la 2.4 no admiten esta función)

Replicación maestro-esclavo (consulte la Nota del editor 3)

Aunque se utilizan datos simples o tablas hash indexadas por valores clave, las complejas. También se admiten operaciones, como ZREVRANGEBYSCORE.

INCR & co (adecuado para calcular valores límite o datos estadísticos)

Admite conjuntos (también admite union/diff/inter)

Admite listas ( también admite Admite colas de bloqueo de operaciones emergentes)

Admite tablas hash (objetos con múltiples campos)

Admite conjuntos de clasificación (tablas de puntuación alta, adecuadas para consultas de rango)

p>

Redis admite transacciones

Admite la configuración de datos en datos caducados (similar al diseño de búfer rápido)

Pub/Sub permite a los usuarios implementar mecanismos de mensajes

Mejor escenario de aplicación: Adecuado para aplicaciones donde los datos cambian rápidamente y se puede cumplir con el tamaño de la base de datos (adecuado para la capacidad de la memoria).

Por ejemplo: precios de acciones, análisis de datos, recopilación de datos en tiempo real, comunicación en tiempo real.

(Nota del editor 3: Replicación maestro-esclavo: si solo un servidor maneja todas las solicitudes de replicación al mismo tiempo, esto se denomina

Replicación maestro-esclavo, que generalmente se usa cuando es necesario Proporcionar cluster de servidores de alta disponibilidad)

3. MongoDB

Lenguaje utilizado: C++

Características: Conserva algunas características amigables de SQL (consulta, índice).

Licencia: AGPL (Iniciador: Apache)

Protocolo: Personalizado, binario (BSON)

Replicación maestro/esclavo (admite recuperación automática de errores, use copia de conjuntos) )

Mecanismo de fragmentación incorporado

Admite consulta de expresiones de JavaScript

Puede ejecutar cualquier función de JavaScript en el lado del servidor

Mejor actualización soporte in situ que CouchDB

Usa mapeo de memoria a archivo para el almacenamiento de datos

Preocupación por el rendimiento sobre los requisitos de funcionalidad

Sugerencia Es mejor activar la función de diario (parámetro –diario)

En un sistema operativo de 32 bits, el tamaño de la base de datos está limitado a aproximadamente 2,5 Gb

Una base de datos vacía ocupa aproximadamente 192 Mb

Utilice GridFS para almacenar grandes datos o metadatos (no un sistema de archivos real)

Mejores escenarios de aplicación: adecuado para soporte de consultas dinámicas; es necesario utilizar índices en lugar de funciones de mapa/reducción; es necesario tener conocimientos; de bases de datos grandes Requisitos de rendimiento; aplicaciones que necesitan usar

CouchDB pero llenan la memoria porque los datos cambian con demasiada frecuencia.

Por ejemplo: originalmente planeaste usar MySQL o PostgreSQL, pero tus propias columnas predefinidas te disuadieron.

4. Riak

Idiomas utilizados: Erlang y C, y algo de Javascript

Características: Tolerante a fallos

Licencia: Apache

Protocolo: HTTP/REST o binario personalizado

Distribución y replicación ajustables (N, R, W)

Usa JavaScript o Erlang antes o después de la operación -verificación de operaciones y soporte de seguridad.

Use JavaScript o Erlang para Map/reduce

Conexión y recorrido de conexión: se puede usar como una base de datos gráfica

Índice: ingrese metadatos para búsqueda (versión 1.0 próximamente) Soporte)

Soporte de objetos de Big Data (Luwak)

Disponible en versiones "Open Source" y "Enterprise"

Búsqueda de texto completo, indexación , búsqueda a través de la consulta del servidor Riak (versión beta)

Admite replicación multisitio Masterless y monitoreo SNMP con licencia comercial

Mejor escenario de aplicación: adecuado para aquellos que desean utilizar un sistema similar a Cassandra Base de datos (similar a Dynamo) pero no puede manejarla

Situaciones de hinchazón y complejidad. Es adecuado para situaciones en las que planea realizar una replicación en varios sitios pero necesita la escalabilidad, disponibilidad y manejo de errores de un solo sitio.

Por ejemplo: recopilación de datos de ventas, sistema de control de fábrica; requisitos estrictos sobre el tiempo de inactividad se pueden utilizar como un servidor web fácil de actualizar.

5. Membase

Idiomas utilizados: Erlang y C

Características: Compatible con Memcache, pero también con capacidad de persistencia y soporte de clúster

Licencia: Apache 2.0

Protocolo: caché distribuida y extensiones

Muy rápido (más de 200 k/s), datos indexados por valor clave

Almacenamiento persistente en disco duro

Todos los nodos son únicos (replicación maestro-maestro)

Las unidades de caché similares al caché distribuido también son compatibles con la memoria

Escribir datos Reducir IO eliminando datos duplicados

Proporciona una muy buena interfaz web de administración de clústeres

Actualiza el software sin detener el servicio de base de datos

Admite grupo de conexiones y múltiples proxy de conexión para multiplexación

Mejor escenario de aplicación: adecuado para aplicaciones que requieren acceso a datos de baja latencia, soporte de alta concurrencia y alta disponibilidad

Por ejemplo: acceso a datos de baja latencia, como aplicaciones orientadas a publicidad, web altamente concurrente aplicaciones como juegos en línea (como Zynga)

6. Neo4j

Idioma utilizado: Java

Características: Base de datos de gráficos basada en relaciones

Licencia: GPL, algunas características AGPL/Licencia comercial

Protocolo: HTTP/REST (o integrado en Java)

Disponible para uso independiente o integrado en aplicaciones Java

Los nodos y bordes del gráfico pueden tener metadatos

Muy buena función de administración web incorporada

Se usa de muchas maneras Los algoritmos admiten la búsqueda de rutas

Usar valores clave y relaciones para la indexación

Optimizar para operaciones de lectura

Soportar transacciones (usando la API de Java)

Usar lenguaje transversal de gráficos Gremlin

Soporta scripts Groovy

Soporta copia de seguridad en línea, monitoreo avanzado y alta confiabilidad. Soporta licencia AGPL/comercial

Mejor escenario de aplicación: adecuado para gráficos y otros datos.

Esta es la diferencia más significativa entre Neo4j y otras bases de datos nosql

Por ejemplo: relaciones sociales, redes de transporte público, mapas y topología de red

7. Idioma: Java

Características: Mejor soporte para tablas grandes y Dynamo

Licencia: Apache

Protocolo: personalizado, binario (ahorrativo)

Distribución y replicación ajustables (N, R, W)

Admite consultas de columnas con un cierto rango de valores clave

Similar a tablas grandes Función: Columna, una colección de columnas con una determinada característica

Las operaciones de escritura son más rápidas que las operaciones de lectura

Asignar/reducir tanto como sea posible según la plataforma distribuida Apache

Admito un sesgo contra Cassandra , en parte debido a su hinchazón y complejidad, pero también debido a problemas de Java (configuración, excepciones, etc.)

Mejor caso de uso: cuando se usan más escrituras que lecturas Operaciones (registro) Si cada componente del sistema tuviera que hacerlo estar escrito en Java (nadie fue despedido por elegir el software Apache)

Por ejemplo: banca, finanzas (aunque para las transacciones financieras no son necesarias, pero estas industrias tendrán mayores requisitos de bases de datos que los que tienen) escribir es más rápido que la lectura, por lo que una característica natural es el análisis de datos en tiempo real

8. p>

Características: Admite miles de millones de filas y millones de columnas

Licencia: Apache

Protocolo: HTTP/REST (admite Thrift, consulte la Nota del editor 4)

Modelado a partir de BigTable

Uso de arquitectura distribuida Map/reduce

Optimización de consultas en tiempo real

Puerta de enlace Thrift de alto rendimiento

Predecir operaciones de consulta escaneando y filtrando en el lado del servidor

Compatible con XML, Protobuf y HTTP binario

Módulos de origen y receptor en cascada, colmena y pig

Shell basado en Jruby (JIRB)

Responsivo a cambios de configuración y actualizaciones menores Revertir de nuevo

Sin punto único de falla

Rendimiento de acceso aleatorio comparable a MySQL

p>

Mejor escenario de aplicación: Adecuado para aquellos que prefieren BigTable :) y necesitan dónde se puede acceder a big data de forma aleatoria y en tiempo real.

Por ejemplo: base de datos de mensajes de Facebook (próximamente aparecerán casos de uso más generales)

Nota del editor 4: Thrift

es un lenguaje de definición de interfaz que proporciona otros idiomas ​​brindar servicios de definición y creación, desarrollados por Facebook y de código abierto.

Por supuesto, todos los sistemas tienen más que solo las características enumeradas anteriormente. Aquí solo enumero algunas de las características importantes según mi propio punto de vista. Al mismo tiempo, el avance tecnológico es rápido, por lo que el contenido anterior definitivamente deberá actualizarse constantemente. Haré todo lo posible para actualizar esta lista.