El misterio del origen de la base de datos columnar HBase

Un masivo de datos del amanecer

  Anteriormente, debido a la falta de forma rentable para almacenar toda la información, muchas empresas ignoran algunas fuentes de datos, pero ahora este enfoque hará que la compañía no competitivo. Necesidad de almacenar y analizar cada punto de datos en el creciente aumento de la demanda condujo directamente a la plataforma de comercio electrónico para las empresas que producen más datos.

  En el pasado, la única opción se guarda después de la eliminación de los datos recogidos, como guardar solamente los últimos N días de datos. Sin embargo, este enfoque sólo es factible en el corto plazo, no puede almacenar todos los datos durante meses o años para cobrar, por lo tanto, para construir un modelo matemático que cubre todo el período de tiempo o mejorar un algoritmo de re-corrió todos los datos anteriores con el fin de lograr mejores resultados.

  Google y Amazon es reconocer el valor del modelo de datos, se han comenzado a desarrollar soluciones que satisfagan sus necesidades de negocio. Por ejemplo, Google en una serie de publicaciones técnicas describir almacenamiento escalable de productos de hardware basado en el sistema mango. comunidad de código abierto de Google para usar estas ideas para lograr el proyecto Hadoop de código abierto de dos módulos: HDFS y MapReduce.

  Hadoop es bueno en cualquier tienda, los datos semi-estructurados, e incluso los datos no estructurados, los usuarios pueden ayudar en el análisis de los datos para decidir cómo interpretar los datos, al tiempo que permite al usuario cambiar la clasificación de datos modo, una vez que el usuario ha actualizado el algoritmo, sólo se necesidad de volver a analizar los datos.

  Hadoop es actualmente casi un complemento a todos los sistemas de bases de datos existentes, que proporciona al usuario un espacio ilimitado de almacenamiento de datos, permitiendo a los usuarios almacenar y recuperar datos en el momento adecuado, y para el almacenamiento de archivos de gran tamaño, acceso por lotes y streaming de acceso para hacer optimizado.

II. La base de datos en columnas

  Como una columna de base de datos en la unidad de polimerización de datos, entonces los valores de columna se almacenan secuencialmente en el disco, esta realización difiere de la línea de base de datos almacenada tradicional almacenado en la memoria de línea almacena sucesivamente toda la base de datos de línea. La figura siguiente:

  

  

  Aparece columna de almacenamiento basados ​​principalmente en la suposición: Para cualquier consulta, no todos los valores especificados son necesarios. Especialmente en la base de datos analítica, este supuesto es muy común, por lo que elegir un modo de almacenamiento más adecuado. En este nuevo diseño, reduce el O total es sólo uno de múltiples de E / factores, también tiene otras ventajas: debido a que el tipo de datos de la columna es similar a una natural, incluso con una ligera diferencia entre cada uno de la lógica, pero todavía de acuerdo a la estructura de las líneas de datos almacenados juntos más propicio a la compresión, porque la mayor parte del algoritmo de compresión sólo se limita la atención a la ventana de compresión.

  Como compresión o prefijo algoritmos de compresión incrementales dicha experiencia se basa en el tipo de tiendas columna personalizada, mejorando así la relación de compresión. Una mejor relación de compresión ayuda a reducir el consumo de ancho de banda resultados se devuelven.

  Cabe señalar que, desde la perspectiva de un RDBMS típica, el almacenamiento de base de datos HBase no es una columna, pero que utiliza un formato de almacenamiento de la columna en el disco para almacenar datos en un formato de columna en el disco. Sin embargo, la base de datos convencional es diferentes columnas: Columna de base de datos tradicional más adecuado para el escenario de acceso a datos en tiempo real, HBase clave más adecuadas para el acceso de datos o acceso a datos ordenados.

III. Cuestión sistema de base de datos relacional

  RDBMS juego en el diseño e implementación de aplicaciones de negocio un papel indispensable [por lo menos siendo así en el futuro previsible]. Siempre que el usuario necesita para retener la información del usuario, productos, sesiones, y otras órdenes, algunos servicios se pueden utilizar para proporcionar backend de almacenamiento de datos persistente para el servidor de aplicaciones front-end. Esta estructura es muy adecuado para una cantidad limitada de datos, pero en el caso de la rápida expansión de los datos, esta estructura se convierte en insuficiente.

  Además, la base de datos también puede utilizar las características incorporadas, tales como procedimientos almacenados. Cuando las necesidades del sistema de datos para asegurar la consistencia de los datos es siempre más de una tabla, puede utilizar procedimientos almacenados [asuntos] para resolver el problema de la consistencia de varios clientes de forma simultánea datos de actualización. Transacciones proporcionan propiedades atómicas sobre la mesa para actualizar datos, puede realizar modificaciones al mismo tiempo visibles o invisibles. RDBMS proporciona una de las llamadas propiedades ACID, lo que significa que los datos de usuario es fuerte consistencia. Al referirse a la relación entre los diferentes responsables de la estructura de la tabla de restricción de integridad, el uso del lenguaje específico de dominio que puede escribir cualquier consulta SQL compleja. Con el tiempo, el usuario no necesita la relación es en realidad cómo se almacenan los datos, sólo la relación entre el concepto de un nivel superior, por ejemplo, la estructura de la tabla, estructura de la tabla ofrece un modelo de acceso muy fija en la aplicación.

  A menudo, este modelo está diseñado para satisfacer las necesidades de un período de tiempo más largo. Pero con el aumento en el número de usuarios, el servidor de base de datos compartida será el aumento de la presión. Aumentar el número de servidores de aplicación es relativamente fácil, ya que el servidor de aplicaciones es compartida entre la base de datos central, pero con la CPU compartida, y tomo la carga del servidor central de E / S, que será difícil de predecir cuánto tiempo puede soportar el crecimiento.

  El primer paso es reducir la presión para aumentar desde un servidor, de lectura y de escritura separado leen en paralelo. Este programa mantiene un servidor de base de datos principal, pero el servidor de base de datos primaria ahora sólo sirven a la petición de escritura para hacerlo principalmente a causa de la mayor parte de la solicitud de los principales usuarios del navegador se genera, por lo que la solicitud de escritura es mucho más pequeña que la solicitud de lectura. Si este programa es también debido al continuo aumento en el número de usuarios y fallar, o reducir el rendimiento del sistema, ¿cómo debemos hacer?

  El siguiente paso es una práctica común para aumentar la memoria caché, tales como Memcached. Ahora puede leer el acceso a los datos del sistema de memoria caché de alta velocidad, pero este programa puede no consistencia de los datos de garantía, porque el usuario para actualizar los datos a la base de datos y la base de datos no va a tomar la iniciativa para actualizar los datos en el sistema de caché, por lo que es necesario vistas de bases de datos y tampones de sincronización lo más rápidamente posible, la caché de tiempo de actualización de datos para actualizar los datos de bases de datos para minimizar la diferencia.

  Si bien este enfoque puede ayudar a aliviar la presión de las solicitudes de lectura, las solicitudes de escritura, pero la presión aumenta el problema no se resuelve. Una vez que la base de datos primaria degradación del rendimiento del servidor de escritura, podemos fortalecer el servidor principal en un servidor que la expansión vertical, de modo que el servidor utiliza más recursos para fortalecer. Si está utilizando un esquema de configuración maestro-esclavo, es necesario hacer el mismo rendimiento desde el servidor al servidor principal, de lo contrario no va a mantenerse al día con el servidor maestro de la velocidad de actualización del servidor. En resumen, el caso inicial para gastar más recursos en comparación.

  Con el uso del proyecto, el proyecto tendrá que añadir más características nuevas, pero estas nuevas características, sin duda, será transformado consulta la base de datos para el fondo. La aplicación con éxito de la anterior de SQL unirse sentencia se ejecuta repentinamente más lento, o simplemente no se puede realizar, esta vez tuvo que utilizar la estructura de almacenamiento de paradigma inverso. Si la situación es cada vez peor, tenemos que dejar de utilizar procedimientos almacenados, procedimientos almacenados porque con el tiempo lento inaplicable. Esencialmente, reducir el almacenamiento de los datos en la base de datos para el acceso a optimizar.

  A medida que más y más usuarios, la carga continuará aumentando manera, lógica para conseguir el tiempo más caro antelación del programa de investigación, dando a los usuarios más rápidos servicios de datos. Al final, tuvo que abandonar el uso de índices secundarios, la razón es aumentar la cantidad de datos al mismo tiempo, la cantidad índice es lo suficientemente grande como para permitir el funcionamiento de la base de datos declive recta. El modo de consulta última se puede proporcionar solamente de acuerdo con la consulta de clave principal.

Si se espera que la carga en los próximos meses para aumentar un orden de magnitud o cómo debería hacer más? En este punto, el usuario puede tener en cuenta los datos de la partición a través de múltiples bases de datos, sino que hará uso de esta operación y esquema de las operaciones de mantenimiento en una pesadilla, y muy costosa, y por lo tanto no es la solución más razonable. Pero, en esencia, el uso de RDBMS sino también porque nadie más puede elegir.

  Esquema de particionamiento describe los niveles lógicos de datos divididas. Las características de este esquema es que los paquetes de datos o servidor de almacenamiento sub-archivo, en lugar de almacenarse de forma continua.

  partición de datos se lleva a cabo dentro de un rango fijo: Antes de los datos de entrada, debe dividirse antes de la gama de almacenamiento de datos es buena, si una división nivel de presión superior a su capacidad de oferta, es necesario re-partición de los datos para migrar datos y. Repartition y migrar los datos son muy recursos operación que consume, equivalente a rehacer datos, y luego re demarcación lateralmente resuelto. operación de copia a gran escala va a consumir una gran cantidad de E / S de los recursos, a la vez que aumenta temporalmente las necesidades de almacenamiento. En los datos de re-partición de proceso, la aplicación cliente todavía tendrá que realizar operaciones de actualización, pero esta vez la actualización se lleva a cabo de repartición afectados muy lentamente.

  métodos de partición virtual se puede utilizar para reducir el consumo de recursos, las particiones virtuales definidas por palabra clave más amplia gama de particiones de datos, cada uno de las cargas del servidor de datos igual número de particiones. Pero en el nuevo servidor cuando la necesidad de recargar la partición de datos, y este proceso aún necesitan datos de migrar a un nuevo servidor. Partición está completamente fuera operación del usuario después sencilla, sin el apoyo de base de datos, puede causar graves daños al sistema de producción.

IV. Los sistemas de bases de datos no relacionales [ No-Sólo-SQL, NoSQL ]

  marca simbólica es en realidad una buena opción: los más modernos sistemas de almacenamiento no proporcionan por SQL medios para proporcionar datos de consulta sólo algunos de los más simple, similar a la API de interfaz de la manera de acceder a los datos. Sin embargo, hay algunas herramientas para NoSQL proporciona almacenamiento de datos SQL idioma de entrada de base de datos relacional utilizado para realizar algunas condiciones de consulta complejas. Por lo tanto, las restricciones a la consulta, las bases de datos relacionales y bases de datos no relacionales y no hay distinción estricta.

  De hecho, tanto en la capa inferior hay una diferencia, particularmente en relación con el modo o ACID propiedades de transacción, de modo que la arquitectura de almacenamiento actual es relevante. Muchos nuevo sistema de este tipo es, ante todo, hay que hacer: abandonar una serie de limitaciones para mejorar la escalabilidad. Por ejemplo, por lo general no son compatibles con las transacciones o índice secundario. patrón más importante aún, este tipo de sistema no es fija, se puede cambiar con la aplicación de cambio flexible.

Supongo que te gusta

Origin www.cnblogs.com/yszd/p/12587825.html
Recomendado
Clasificación