Aplicación de métodos de consistencia en nosql

los consistencia

propiedad de una base de datos significa que una vez que se escriben datos en una base de datos con éxito, las consultas que siguen son capaces de acceder a los datos y obtener una vista consistente de los datos. En la práctica, esto significa que si usted escribe un registro a una base de datos e inmediatamente solicitar ese registro, usted está garantizado para verlo. Es particularmente útil para cosas como Amazon órdenes y transferencias bancarias.

La consistencia es una escala móvil, sin embargo, y un tema demasiado profundo para cubrir aquí. Sin embargo, en el mundo NoSQL, la coherencia general cae en uno de los dos campos:

  • ÁCIDO Consistencia (ACID significa atomicidad, coherencia, aislamiento, durabilidad): ACID significa que una vez que los datos se escriben, tiene plena coherencia en las lecturas.

  • La consistencia eventual (BASE): BASE significa que una vez que los datos se escriben, con el tiempo aparecerá para la lectura.

Una batalla se ha desatado entre las personas que creen que no es necesaria una fuerte coherencia en una base de datos y los que creen que se requiere absolutamente (Traducir gente a Los departamentos de marketing de las empresas NoSQL '!).

La realidad está en algún lugar en el medio. ¿Importa que mensaje de Facebook de una persona no es visto por todos sus amigos durante cinco minutos? No, probablemente no. Cambiar " Facebook post " a " # 8208 millones de dólares # 8208-financiera transacción, " sin embargo, y su actitud cambia rápidamente! ¿Qué coherencia enfoque que elija depende de la situación. En mi experiencia, sin embargo, una fuerte consistencia es siempre la elección en situaciones de misión # 8208-críticos del sistema empresarial.

ÁCIDO

ACID es un conjunto general de principios para los sistemas transaccionales, no es algo vinculado exclusivamente a los sistemas relacionales, o incluso sólo las bases de datos, por lo que vale la pena conocer. ACID significa básicamente, "Esta base de datos cuenta con instalaciones que le impida datos corromper o perder," que no es un hecho para todas las bases de datos. De hecho, la gran mayoría de las bases de datos NoSQL no proporcionan garantías de ácido.

Fundación DB, MarkLogic y Neo4j son excepciones notables. Algunas bases de datos NoSQL proporcionan una menor garantía de # 8208-grado llamada Comprobar y Ajustar que verifica si alguien ha alterado un documento antes de permitir que una transacción se complete. Este comportamiento generalmente se limita, ya que tiende a ser implementado en una sola base # 8208-registro.

MongoDB es una base de datos notable que ofrece comprobar y establecer capacidades. Con MongoDB, todo un nodo # 8208-valor de los datos se puede bloquear durante una actualización, lo que impide toda leer y escribir todas las operaciones hasta que la operación se complete. La compañía está trabajando en la eliminación de esta limitación, sin embargo.

BASE

BASE significa que en lugar de hacer que las garantías ACID, la base de datos tiene un equilibrio armonioso de la coherencia y la disponibilidad de datos. Este suele ser el caso cuando los nodos de un clúster acto de base de datos dada como gestores principales de una parte de la base de datos, y otros nodos asimiento leer # 8208 de sólo réplicas.

Para asegurar que cada cliente ve todas las actualizaciones (es decir, tienen una visión consistente de los datos), una escritura en el nodo primario sosteniendo los datos necesitan para bloquear hasta que todos leen réplicas están al día. Esto se llama una de dos# 8208-fase de cometer - el cambio se hace a nivel local pero aplicado y se confirmó que el cliente sólo cuando todos los demás nodos se actualizan.

BASE relaja este requisito, requiriendo sólo un subconjunto de los nodos que llevan a cabo los mismos datos para ser actualizado a fin de que la transacción tenga éxito. En algún momento después de la transacción se confirma, la lectura # 8208-única réplica se actualiza.

La ventaja de este enfoque es que las transacciones se comprometen más rápido. Tener réplicas vivas legibles también significa que usted puede difundir los datos leídos de carga, por lo que la lectura más rápida.

La desventaja es que los clientes se conecten a algunas de las réplicas de lectura pueden ver fuera # 8208 de # información 8208-fecha para un período de tiempo no especificado. En algunos casos, este estado está muy bien. En caso de publicar un nuevo mensaje en Facebook y en algunos de sus amigos no lo ve durante un par de minutos, no es una gran pérdida. Si envía una orden de pago a su banco, sin embargo, es posible que desee una operación inmediata.

Un enfoque alternativo para leer # 8208-réplicas solamente es tener una compartido# 8208-nada clúster en el que sólo un nodo en un clúster siempre sirve una parte particular de la base de datos.

# Compartido 8208-nada no significa que usted pierde la replicación, sin embargo. Bases de datos que emplean este método típicamente hacen replicar sus datos a un área secundaria en otro nodo primario o nodos - pero sólo un nodo es el maestro para lecturas y escrituras en cualquier momento.

# Compartido racimos 8208-nada tienen la ventaja de un modelo de consistencia más simple pero requieren un dos # 8208-fase se comprometen a réplicas. Este hecho significa que los bloqueos de transacciones, mientras que todas las réplicas se actualizan. (Un bloqueo interno además de bloqueo para otros nodos le da dos fases.)

Esto normalmente tiene menos impacto que las agrupaciones de datos compartidos con réplicas de sólo lectura, sin embargo, porque # compartida áreas de datos de réplica 8208-nada no reciben solicitudes de lectura para que parte de la base de datos. Por lo tanto, dos confirmaciones # 8208 de fase son más rápidos en un # compartida 8208 nada clúster que en un clúster con réplicas legible.

La elección de ácido o base?

Como era de esperar, la mayor parte de la discusión se debe a que los vendedores de NoSQL pueden diferenciarse de sus competidores al afirmar un enfoque diferente, único. Es interesante notar, sin embargo, el número de vendedores NoSQL con ACID # 8208-cumplimiento en su hoja de ruta.

Algunas bases de datos NoSQL tienen ACID # 8208-el cumplimiento de su plan de trabajo, a pesar de que son partidarios de la BASE, lo que demuestra la relevancia de garantías ACID son la empresa, la misión# 8208-crítico sistemas.

Muchas empresas utilizan BASE # productos 8208-consistencia al probar las ideas porque son libres, pero luego migran a una ACID # 8208-a la base de datos 8208-compliant # pagado cuando quieren ir a vivir en una misión # sistema 8208-crítico.

La manera más fácil de decidir si usted necesita ACID es considerar las interacciones de personas y otros sistemas tienen con sus datos. Por ejemplo, si agrega o actualización de los datos, es importante que la siguiente consulta es capaz de ver el cambio? En otras palabras, son decisiones importantes que cuelgan sobre el estado actual de la base de datos? ¿Quieres ver un poco fuera # 8208 de # 8208-fecha de los datos significan que esas decisiones podrían ser defectuosos fatalmente?

En los servicios financieros, la necesidad de coherencia es evidente. Piense en los comerciantes que compran acciones. Tienen que comprobar el saldo de caja antes de negociar para asegurarse de que tienen el dinero para cubrir el comercio. Si no ven el equilibrio correcto, se decidan a gastar dinero en otra transacción. Si la base de datos que está preguntando es solamente el tiempo consistente, que no pueden ver la falta de fondos suficientes, exponiendo así a su organización a riesgos financieros.

Casos similares se pueden construir para ÁCIDO BASE más en el cuidado de la salud, defensa, inteligencia, y otros sectores. Todo se reduce a los datos, sin embargo, y la importancia de la puntualidad y la seguridad de los datos.




» » » » Aplicación de métodos de consistencia en nosql