Manejo de particiones en nosql

La partición de la palabra se utiliza para dos conceptos diferentes en la tierra NoSQL. LA partición de datos

es un mecanismo para asegurar que los datos se distribuye uniformemente a través de un clúster. Por otro lado, una partición de red se produce cuando dos partes de la misma agrupación de bases de datos no pueden comunicarse.

En sistemas muy grandes en clúster, es cada vez más probable que un fallo de una pieza de equipo va a suceder. Si un conmutador de red entre los servidores de un clúster falla, un fenómeno conocido como (en la jerga informática) cerebro dividido ocurre. En este caso, los servidores individuales se siguen recibiendo peticiones, pero no pueden comunicarse entre sí.

Este escenario puede conducir a la inconsistencia de los datos o simplemente a la capacidad reducida de almacenamiento de datos, como la partición de la red con menos servidores se retira del cluster (o " votado de " al más puro estilo Gran Hermano).

Particiones Tolerar

Usted tiene dos opciones cuando una partición de red que sucede:

  • Continuar, en algún nivel, para dar servicio a las operaciones de lectura y escritura.

  • " votar off " una parte de la partición y deciden solucionar los datos más tarde, cuando las dos partes se pueden comunicar. Esto implica generalmente el cluster votando una réplica leer como el nuevo maestro para cada nodo de partición maestra desaparecida.

Riak le permite determinar cuántas veces los datos se replica (tres copias, por defecto - es decir, n = 3) y el número de servidores debe ser consultada con el fin de una lectura para tener éxito. Esto significa que, si el maestro principal de una clave está en el lado equivocado de una partición de red, operaciones de lectura todavía puede tener éxito si los otros dos servidores están disponibles (es decir, la disponibilidad r = 2 lectura).

Riak maneja escrituras cuando el servidor de partición primaria desciende mediante un sistema llamado traspaso insinuado. Cuando los datos se replican en un principio, el primer nodo para una partición clave particular se escribe, junto con (por defecto) dos de los siguientes nodos vecinos.

Si la primaria no se puede escribir, el siguiente nodo en el anillo se escribe. Estas escrituras se efectivamente entregan al siguiente nodo. Cuando el servidor primario vuelve a subir, las escrituras se reproducen a ese nodo antes de que se hace cargo de las operaciones de escritura primaria de nuevo.

En ambas operaciones, las inconsistencias de versiones pueden suceder porque las diferentes réplicas pueden estar en diferentes estados de versión, aunque sólo sea por unos pocos milisegundos.

Riak emplea otro sistema llamado contra activa# 8208-entropía para aliviar este problema. Este sistema de redes de arrastre a través de valores actualizados y asegura que las réplicas se actualizan en algún momento, de preferencia más temprano que tarde. Esto ayuda a evitar conflictos en lectura, manteniendo una velocidad de ingestión elevada, lo que evita dos # 8208-fase de confirmación utilizado por otras bases de datos NoSQL con el maestro # 8208-esclavo, # 8208, nada ayuda agrupación compartida.

Si un conflicto de lectura ocurre, Riak utiliza leer reparación para tratar de devolver sólo los datos más recientes. Eventualmente, sin embargo, y dependiendo de la configuración de coherencia y de la disponibilidad que usted use, la aplicación cliente puede presentarse con múltiples versiones y pidió que decidir por sí mismo.

En algunas situaciones, esta compensación es deseable, y muchas aplicaciones puede intuitivamente sabe, a partir de los datos presentados, la versión de utilizar ya que la versión de desprenderse.

Indexación Secundaria

Índices secundarios son índices sobre datos específicos dentro de un valor. La mayoría de Clave # 8208-valor tiendas dejan esta indexación hasta la aplicación. Sin embargo, Riak es diferente, el empleo de un esquema llamado documento# 8208-partición basada que permite para la indexación secundaria.

Particionamiento Documento # 8208 basada en presupone que usted está escribiendo estructuras JSON a la base de datos de Riak. A continuación, puede crear índices en determinadas propiedades con nombre dentro de esta estructura JSON, como se muestra:

{" para-id # 148 ;: 5001, " id-cliente # 148 ;: 1429857, “, y el auto-fecha # 148 ;: " 09.24.2014 ", " # 148 ;: total de 134,24}

Si usted tiene una aplicación que está mostrando las órdenes de un cliente para el mes anterior, a continuación, desea consultar todos los registros, como se muestra, en el que el ID de cliente es un valor fijo (1.429.857) y el orden # 8208-fecha está dentro de un rango particular (al principio y al final del mes).

En la mayoría de los 8.208 de valor clave # tiendas, se crea otro cubo cuya clave es el número de clientes combinada y el mes y el valor es una lista de identificadores de orden. Sin embargo, en Riak, sólo tiene que añadir un índice secundario, tanto al cliente # 8208-id (entero) y el orden # 8208-fecha (fecha), que hace tomar el espacio de almacenamiento adicional, pero tiene la ventaja de ser transparente para el desarrollador de la aplicación.

Estos índices también se actualizan en vivo - lo que significa que no hay desfase entre la actualización de un valor documento en Riak y los índices de estar al día. Este acceso directo a los datos es más difícil de lograr de lo que parece. Después de todo, si los índices no son coherentes, nunca encontrar los datos en poder constantemente!

La evaluación de Riak

Basho, la entidad comercial detrás de Riak, dice que su base de datos NoSQL próxima versión 2.0 siempre tiene una fuerte consistencia, una afirmación que otros vendedores NoSQL hacen. La reclamación por los vendedores NoSQL tener siempre una fuerte consistencia es como dice ser un fuerte vegetariano. . . excepto los domingos cuando se tiene carne asada.

Riak no es una base de datos de ACID # 8208 conforme. Su configuración no se puede modificar de tal manera que se ejecuta en modo de cumplimiento de ACID. Los clientes pueden obtener datos inconsistentes durante las operaciones normales o durante las particiones de red. Riak comercia coherencia absoluta para aumentar la disponibilidad y la tolerancia de la partición.

Correr Riak en modo consistencia fuerte significa que sus réplicas de lectura se actualizan al mismo tiempo que el maestro primario. Se trata de un dos # 8208-fase de cometer - básicamente, el nodo maestro escrito a los otros nodos antes de que se confirma que la escritura es completa.

En el momento de escribir estas líneas, fuerte modo de consistencia de Riak no soporta índices secundarios o tipos de datos complejos (por ejemplo, JSON). Con suerte, Basho solucionará este problema en las próximas versiones de la base de datos.

Riak Búsqueda (un motor de búsqueda de Apache Solr renombrado e integrado utiliza un modelo de actualización con el tiempo constante) puede producir falsos positivos cuando se utiliza una fuerte consistencia. Esta situación se produce porque los datos pueden ser escritos y luego la transacción abandonados, pero los datos todavía se utiliza para la indexación - dejando un resultado de la búsqueda "falso positivo" - el resultado no es en realidad por más tiempo válido para la consulta de búsqueda.

Riak también utiliza una separada proceso de centinela para determinar qué nodo se convierte en un maestro de las condiciones de conmutación por error. Este proceso, sin embargo, no es altamente disponible, lo que significa que durante unos segundos, es posible que, mientras que una nueva copia de la proceso de centinela se pone en línea, un nuevo nodo no se puede añadir o un nuevo maestro elegido. ¡Tienes que ser consciente de esta posibilidad en la escuela # condiciones de conmutación por error 8208-estrés.

Riak tiene algunas características interesantes para los desarrolladores de aplicaciones, tales como la indexación secundaria y # 8208-en JSON apoyo valor construido. La replicación de bases de datos para la recuperación de desastres a otros centros de datos está disponible sólo en la versión pagada, cuyo precio se puede encontrar en su página web (los precios de alquiler muestran, precios de las licencias perpetuas dadas en aplicación sólo).

La herramienta de monitoreo de control de clúster Riak tampoco está muy bien considerado por su tiempo de demora al supervisar los clústeres. Riak tiene un montón de promesas, y si Basho agregará más empresa# 8208-nivel clúster # 8208 de gestión de instalaciones en futuras versiones, que se convertirá en un mejor # 8208-en el # 8208 de productos de clase.




» » » » Manejo de particiones en nosql