La transición de un modelo rdbms a hbase

Video: Using HBase Coprocessors to Build a Distributed, Transactional RDBMS

Si estás frente a la fase de diseño para su aplicación y cree que HBase sería una buena opción, a continuación, el diseño de sus teclas de la fila y el esquema para ajustar el modelo de datos HBase y la arquitectura es el enfoque correcto. Sin embargo, a veces tiene sentido para mover una base de datos diseñada originalmente para un RDBMS a HBase.

Un escenario común donde este enfoque tiene sentido es una instancia de base de datos MySQL que ha llegado a su límite de capacidad de ampliación. Existen técnicas para escalar horizontalmente una instancia de MySQL (sharding, en otras palabras), pero este proceso suele ser engorroso y problemático ya que MySQL simplemente no fue diseñado originalmente para sharding.

La transición desde el modelo relacional al modelo HBase es una disciplina relativamente nueva. Sin embargo, ciertos patrones establecidos de pensamiento están surgiendo y se han unido en tres principios clave para seguir al acercarse a una transición. Estos principios son desnormalización, duplicación, y llaves inteligentes (DDI).

  • desnormalización: El modelo de base de datos relacional depende de a) un esquema de base de datos normalizada y b) se une entre las mesas para responder a las operaciones de SQL. la normalización de bases de datos es una técnica que protege contra la pérdida de datos, la redundancia y otras anomalías como datos se actualiza y se recupera.

    Video: Apache Hadoop HBase Training Tutorials

    Hay una serie de reglas que los expertos siguen para llegar a un esquema de base de datos normalizada (y normalización de bases de datos es un estudio conjunto en sí), pero el proceso generalmente implica dividir las tablas más grandes en tablas más pequeñas y la definición de las relaciones entre ellos. desnormalización base de datos es lo contrario de la normalización, donde más pequeño, las mesas más específicos se unen en grandes mesas, más generales.

    Este es un patrón común en la transición a HBase porque se une no se proporcionan a través de tablas, y se une puede ser lento ya que implican las operaciones de disco costosos. Protección contra la actualización y recuperación de anomalías es ahora la tarea de la aplicación cliente HBase, ya que las protecciones se proporcionaron por la normalización son nulos y sin efecto.

  • Duplicación: A medida que Desnormalizar tu base de datos, es probable que terminan la duplicación de los datos, ya que puede ayudar a evitar costosas operaciones de lectura a través de múltiples tablas. No preocuparse por el almacenamiento extra (a razón de campo) - se puede utilizar la escalabilidad automática de HBase a su ventaja.

    Tenga en cuenta, sin embargo, que el trabajo adicional será requerido por la aplicación cliente para duplicar los datos y recordar que de forma nativa HBase sólo proporciona operaciones atómicas nivel de fila no fila transversal (con la excepción descrita en el hbase-5229 JIRA) o una tabla cruzada.

  • Teclas inteligentes: Debido a que los datos almacenados en HBase es ordenado por clave de fila, y la clave de fila es el único índice nativa proporcionada por el sistema, el diseño inteligente cuidado de la clave de fila puede hacer una gran diferencia. Por ejemplo, la clave de fila podría ser una combinación de un número de orden de servicio y el número de identificación del cliente que hizo la orden de servicio.

    Este diseño clave de fila le permitirá buscar datos relacionados con la orden de servicio o buscar datos relacionados con el cliente utilizando la misma clave fila en la misma mesa. Esta técnica será más rápido en algunas consultas y evitar costosos tabla une.

Para aclarar estos patrones particulares de pensamiento, tomar un cliente Contacto tabla Información y colocarlo dentro del contexto de una base de datos típica orden de servicio. La figura muestra lo que es un esquema de base de orden de servicio normalizado podría ser similar.

Siguiendo las reglas de normalización RDBMS, configurar la tabla de información de contacto de la muestra al cliente para que sea independiente de la tabla de orden de servicio con el fin de evitar la pérdida de datos de los clientes cuando las órdenes de servicio están cerradas y posiblemente eliminar. Adoptar el mismo enfoque para la mesa de los productos, lo que significa que los nuevos productos se pueden agregar a la base de datos compañía ficticia con independencia de las órdenes de servicio.

Al confiar en RDBMS operaciones de combinación, este esquema es compatible con las consultas que permitan conocer el número de órdenes de servicio que se abren frente a un producto particular, junto con la ubicación del cliente en el que el producto está en uso.

Eso es todo lo fino y elegante, pero es un esquema que tendría que utilizar con RDBM. ¿Cómo se hace la transición este esquema para un esquema HBase? La siguiente figura ilustra un posible esquema HBase - uno que sigue el patrón de diseño DDI.

La tabla de información de contacto del cliente se ha desnormalizado incluyendo el nombre del cliente y la información de contacto en lugar de las claves externas utilizadas anteriormente. Además, los datos se duplica, manteniendo el cliente Contacto tabla de información de inmediato. Ahora se une a través de la mesa de mesa y atención al cliente Información de contacto de órdenes de servicio no son necesarias.

Además, un diseño de la llave inteligente fila ha sido empleado que combina el número de productos con el número de cliente para formar el número de orden de servicio (A100 | 00001, por ejemplo). El uso de esta llave inteligente, la tabla de orden de servicio puede proporcionar informes vitales sobre las deficiencias del producto y los clientes que actualmente están experimentando problemas con el producto.

Todas estas consultas pueden ser soportados por HBase de una forma atómica nivel de fila para la aplicación. Porque sabes que HBase teclas de órdenes de fila y los ordena de forma lexicográfica, la aplicación puede hacer ciertas conjeturas sobre la localidad de datos al emitir las exploraciones de los informes. (Todos los números de producto A * de la serie se almacenarán juntos, por ejemplo).

La base de datos de orden de servicio representada por el esquema HBase es un ejemplo relativamente simple, pero ilustra cómo HBase puede, en ciertos casos, se cruzan con el mundo RDBMS y proporcionar un valor significativo. Si la compañía ficticia tiene terabytes o incluso petabytes de datos de llamadas de servicio para almacenar, HBase haría una gran diferencia en términos de coste, fiabilidad, rendimiento y escala.

Puede, por supuesto, el diseño de su orden de servicio HBase esquema de varias maneras diferentes. Es cierto que todo el diseño depende de las consultas que deben ser soportadas, pero usted tiene la capacidad de transición algunas bases de datos relacionales a muy potentes aplicaciones HBase para su uso en producción, siempre y cuando se trabaja a partir de una sólida comprensión de la arquitectura HBase y el patrón de diseño DDI.

En este ejemplo se ha asumido que las consultas fueron realizadas por una aplicación Java aprovechando las API de cliente HBase, o tal vez a través de otro idioma usando Apache Thrift. Este modelo de solicitud puede adaptarse a los requisitos muy bien y proporcionar opciones de rendimiento y personalización útiles para la empresa de servicios de ficción.

Artículos Relacionados