Directorio de artículos
1. Introducción a NoSQL
1.1 ¿Qué es NoSQL?
NoSQL: no solo SQL, base de datos no relacional
NoSQL es un término general
- Se refiere a bases de datos que no siguen el modelo RDBMS tradicional.
- Los datos no son relacionales y no utilizan SQL como lenguaje de consulta principal.
- Resuelva problemas de disponibilidad y escalabilidad de la base de datos
- No aborda problemas de atomicidad o consistencia
1.2 Por qué usar NoSQL
Con el desarrollo de Internet, las bases de datos relacionales tradicionales tienen cuellos de botella
- Lectura y escritura concurrentes
- Gran capacidad de almacenamiento
- Alta disponibilidad
- Alta escalabilidad
- bajo costo
Comparación de bases de datos relacionales y NoSQL
Existen principalmente las siguientes diferencias
Comparado | NoSQL | Base de datos relacional |
---|---|---|
Base de datos común | HBase 、 MongoDB 、 Redis | Oracle, DB2, MySQL |
Formato de almacenamiento | Documentos, pares clave-valor, estructura de gráficos | Formato de tabla, filas y columnas |
Especificación de almacenamiento | Fomentar la redundancia | Normativo, evita duplicaciones |
Expansión de almacenamiento | Escalar, distribuir | Expansión vertical (expansión horizontal limitada) |
modo de consulta | Lenguaje de consulta estructurado SQL | Consulta no estructurada |
asuntos | No es compatible con la coherencia de las transacciones. | Asuntos de apoyo |
actuación | Alto rendimiento de lectura y escritura | Rendimiento deficiente de lectura y escritura |
costo | Simple y fácil de implementar, de código abierto, de bajo costo | Alto costo |
1.3 Características de NoSQL
-
Consistencia final
-
La aplicación ha aumentado las responsabilidades de mantener la coherencia y manejar las transacciones.
-
Almacenamiento de datos redundante
-
NoSQL! = Big data
- Los productos NoSQL ayudan a resolver problemas de almacenamiento de big data
- Big data incluye más que solo problemas de almacenamiento de datos
- Hadoop
- Kafka
- Chispa, etc.
1.4 Conceptos básicos de NoSQL
- Tres piedras angulares
- CAP, BASE, consistencia final
- Indexación (índice), Consulta (consulta)
- Mapa reducido
- Fragmentación
- Teoría de la PAC
- La base de datos admite hasta 2 de 3
- Consistencia
- Disponibilidad
- Tolerancia de partición (tolerancia a fallos de partición)
- NoSQL no garantiza "ACID"
- Proporcionar "consistencia eventual"
- BASE
- Básicamente disponible (básicamente disponible)
- Asegúrese de que el núcleo esté disponible
- Estado blando
- El estado puede estar desincronizado por un tiempo
- Consistencia eventual (consistencia eventual)
- Después de un cierto período de tiempo, los datos finalmente pueden alcanzar un estado consistente
- La idea central es que incluso si no se puede lograr una gran consistencia, la aplicación puede elegir una forma adecuada para lograr la consistencia final.
- Consistencia final
- El resultado final es consistente, no siempre consistente
- Los datos como el saldo de la cuenta y el inventario deben ser muy consistentes
- La información como el catálogo no requiere una gran coherencia
- Consistencia causal (consistencia causal)
- Consistencia de lectura-sus-escrituras
- Consistencia de la sesión
Índice y consulta
- Indexación (Indexación)
La mayoría de NoSQL se indexa por clave.
Parte de NoSQL permite que el índice secundario
HBase use HDFS,
escritura por lotes de solo anexión Registrado
para recrear y ordenar archivos - La consulta (consulta)
no tiene un lenguaje de consulta especial, generalmente usa un lenguaje de scripting para la consulta,
algunos comienzan a admitir consultas SQL,
algunos pueden usar la consulta de código MapReduce
MapReduce 、 Fragmentación
- MapReduce
no es MapReduce de Hadoop, y el concepto está relacionado
con el procesamiento y la consulta de datos - Fragmentación (fragmentación)
un modo de partición que
puede replicar fragmentos, lo cual
es bueno para la recuperación ante desastres
1.5 clasificación NoSQL
Principalmente dividido en las siguientes cuatro categorías
clasificación | Por ejemplo | Escenarios de aplicación típicos |
---|---|---|
Base de datos del almacén de clave-valor (clave-valor) | Redis, MemcacheDB, Voldemort | Almacenamiento en caché de contenido, etc. |
Base de datos de almacén de columnas (WIDE COLUMN STORE) | Cassandra, HBase | Responder a los datos masivos del almacenamiento distribuido |
Base de datos de documentos (ALMACENAMIENTO DE DOCUMENTOS) | CouchDB, MongoDB | Aplicación web (puede considerarse una versión mejorada de la base de datos de valores clave) |
GRÁFICO DB | Neo4J, InfoGrid, Gráfico infinito | Redes sociales, sistemas de recomendación, etc., enfocándose en construir un gráfico de relaciones |
Base de datos del almacén de valores-clave (valor-clave)
Base de datos del almacén de columnas (almacén de columnas amplias)
Tienda de documentos
Bases de datos de gráficos
1.6 La relación entre NoSQL, BI y big data
- BI (Business Intelligence): Business Intelligence
Es un conjunto completo de soluciones.
Las aplicaciones de BI involucran modelos, que dependen del modelo.
BI principalmente soporta SQL estándar, y el soporte NoSQL es más débil que las bases de datos relacionales. - NoSQL tiene una alta correlación con Big Data.
Generalmente, las bases de datos de almacenamiento de columnas se utilizan en escenarios de Big Data,
como HBase y Hadoop.
2. Introducción a HBase
2.1 Descripción general de HBase
- HBase es una base de datos NoSQL líder. Es
una base de datos de almacenamiento orientada a columnas. Es
un mapa hash distribuido
basado en el documento Google Big Table.
Utiliza HDFS como almacenamiento y utiliza su confiabilidad. - Funciones de HBase
Velocidad rápida de acceso a datos, el tiempo de respuesta es de aproximadamente 2-20 milisegundos
Admite lectura y escritura aleatoria
, escalabilidad de cada nodo 20k ~ 100k + ops / s , se puede expandir a más de 20,000 nodos
2.2 Historia de desarrollo de HBase
hora | evento |
---|---|
año 2006 | Google publicó un artículo sobre Big Table |
2007 | La primera versión de HBase y Hadoop 0.15.0 se publican juntas |
Año 2008 | HBase se convierte en un subproyecto de Hadoop |
año 2010 | HBase se convierte en el principal proyecto de Apache |
año 2011 | Cloudera lanza CDH3 basado en HBase0.90.1 |
2012 | HBase lanzó la versión 0.94 |
2013-2014 | HBase ha lanzado la versión 0.96 / versión 0.98 |
2015-2016 | HBase ha lanzado la versión 1.0, la versión 1.1 y la versión 1.2.4 |
2017 | HBase lanzó la versión 1.3 |
2018 | HBase lanzó la versión 1.4 y la versión 2.0 |
2.3 grupos de usuarios de HBase
2.4 Escenarios de aplicación de HBase
- Escenario de aplicación-1
Datos incrementales de series de tiempo
Escritura de alta capacidad y alta velocidad
- Escenario de aplicación-2
Intercambio de información-mensajería
Lectura y escritura de alta capacidad y alta velocidad
- Escenario de aplicación-3
Servicio de contenido-Aplicación de backend web
Lectura y escritura de alta capacidad y alta velocidad
2.5 Ecosistema Apache HBase
Tecnología del ecosistema HBase
Lily - CRM
OpenTSDB basado en HBase - Gestión de datos de series temporales orientada a HBase
Kylin - OLAP
Phoenix
en HBase - Operación SQL Herramienta HBase Splice Machine - OLTP basado en HBase
Apache Tephra - Soporte de transacciones HBase
TiDB - Distributed SQL DB
Apache Gestión de transacciones Omid-Optimize
Servidor de línea de tiempo de la aplicación Yarn v.2 Migrar a HBase El
almacenamiento de metadatos de Hive se puede migrar a HBase
Ambari Metrics Server utilizará HBase para el almacenamiento de datos
Arquitectura 2.6HBase
1. Arquitectura física
HBase adopta la arquitectura maestro / esclavo
-
La función
de HMaster es el nodo maestro del clúster HBase, que se puede configurar con múltiples nodos para lograr la
administración y distribución de HA . La región
es responsable del equilibrio de carga de los RegionServers.
Encuentra los RegionServers que fallaron y redistribuye las regiones en ellos. -
RegionServer
RegionServer es responsable de la gestión y el mantenimiento de Region.
Un RegionServer contiene un WAL, un BlockCache (caché de lectura) y varias regiones.
Una región contiene varias áreas de almacenamiento y cada área de almacenamiento corresponde a una familia de columnas.
Un área de almacenamiento se compone de múltiples StoreFiles y MemStores.
Un StoreFile corresponde a Un HFile y una familia de columnas
HFile y WAL se almacenan como archivos de secuencia en HDFS, el
cliente interactúa con RegionServer
- Región 和 Tabla
2. Fila de arquitectura lógica
- Rowkey (clave de fila) es única y ordenada
- El esquema puede definir cuándo insertar registros
- Cada fila puede definir su propia columna, incluso si no se utilizan otras filas
- Las columnas relacionadas se definen como familias de columnas
- Mantenga múltiples versiones de Row con marcas de tiempo únicas
- El tipo de valor puede ser diferente en diferentes versiones
- Todos los datos de HBase se almacenan en bytes
2.7 Gestión de datos HBase
- Directorio de gestión de datos
- Tabla de catálogo del sistema hbase: meta
- Almacenar metadatos, etc.
- Archivos en el directorio HDFS
- Instancia de región en servidores
- Tabla de catálogo del sistema hbase: meta
- Datos HBase en HDFS
- Se puede reparar a través de un archivo HDFS
- Ruta de reparación
- RegionServer-> Tabla-> Región-> RowKey-> 列 族
Características de la arquitectura 2.8HBase
- Consistencia fuerte
- Expansión automática
- Se divide automáticamente cuando la región se vuelve grande
- Use HDFS para expandir datos y administrar el espacio
- Recuperación de escritura
- 使用 WAL (registro de escritura anticipada)
- Integración con Hadoop