La 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 preguntas que siguen son capaces de acceder a los datos y obtener una visión consistente de los datos. En la práctica, esto significa que si se escribe un registro a una base de datos y luego inmediatamente solicitar dicho registro, tiene la garantía de verlo. Es particularmente útil para cosas como las órdenes de Amazon 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 consistencia general cae en uno de los dos campos:

  • ACID Consistencia (ácido significa Atomicidad, Consistencia, Aislamiento, Durabilidad): ÁCIDO 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 se escriben datos, 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 no se requiere absolutamente (traducir gente a departamentos de marketing empresas NoSQL!).

La realidad es que en algún punto intermedio. Qué importa que una persona de Facebook post no es visto por todos sus amigos durante cinco minutos? No, probablemente no. Cambio “Facebook post” a la “transacción mil millones de dólares-financiera”, sin embargo, y su actitud cambia rápidamente! ¿Qué consistencia método que elija depende de la situación. En mi experiencia, sin embargo, una fuerte consistencia es siempre la elección en situaciones de sistemas empresariales de misión crítica.

ÁCIDO

ACID es un conjunto general de los principios de los sistemas transaccionales, no es algo puramente ligada a los sistemas relacionales, o incluso sólo las bases de datos, por lo que vale la pena conocer. ÁCIDO significa básicamente “Esta base de datos cuenta con instalaciones que le impida datos se dañen o pierdan,”Que no es un hecho para todas las bases. De hecho, la gran mayoría de las bases de datos NoSQL no proporcionan garantías ACID.

Fundación DB, MarkLogic y Neo4j notables excepciones. Algunas bases de datos NoSQL proporcionan una garantía de calidad inferior llamada Comprobar y establecer que verifica si alguien ha alterado un documento antes de permitir que una transacción se complete. Este comportamiento es generalmente limitada, ya que tiende a ser implementado en una base de un solo registro.

MongoDB es una base de datos notable que proporciona capacidades de comprobar y ajustar. Con MongoDB, todo un nodo-el valor de los datos se puede bloquear durante una actualización, evitando así todo como leído todas las operaciones de escritura y hasta que se complete la operación. 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 los datos. Este es típicamente el caso cuando los nodos en una base de datos acto grupo determinado como gestores principales de una parte de la base de datos, y otros nodos contienen réplicas de sólo lectura.

Video: Videotutorial de jQuery parte 9: Método css()

Para asegurar que cada cliente ve todas las actualizaciones (es decir, tienen una visión consistente de los datos), una escritura en el nodo principal contiene los datos necesita bloquear hasta que todo réplicas de lectura están al día. Esto se llama una dos-fase de confirmación - el cambio se realiza a nivel local, pero confirmó que el cliente sólo cuando se actualizan todos los demás nodos y aplica.

BASE relaja este requisito, que requiere sólo un subconjunto de los nodos que mantienen los mismos datos que se actualizará a fin de que la operación tenga éxito. En algún momento después de que se confirme la transacción, la réplica de sólo lectura se actualiza.

La ventaja de este enfoque es que las transacciones se confirman más rápido. Tener réplicas en vivo legibles también significa que se puede propagar los datos leídos de carga, haciendo que la lectura más rápida.

La desventaja es que los clientes que se conectan a algunas de las réplicas de lectura pueden ver la información fuera de fecha para un período de tiempo no especificado. En algunos casos, este estado está muy bien. Si publica un nuevo mensaje en Facebook y 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 réplicas de sólo lectura es tener una compartido-nada clúster en el que sólo un nodo en un clúster siempre sirve una parte particular de la base de datos.

Compartida nada no significa que se 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 lee y escribe en cualquier momento.

Shared-nothing grupos tienen la ventaja de un modelo de consistencia más simple pero requieren una confirmación de dos fases a las réplicas. Este hecho significa que los bloqueos de transacciones, mientras que todas las réplicas se actualizan. (Una cerradura interna más de bloqueo para otros nodos le da dos fases.)

Normalmente, esto tiene un impacto menor que las agrupaciones de datos compartidos con réplicas de sólo lectura, sin embargo, porque las áreas de datos de réplica shared-nothing no reciben solicitudes de lectura para esa parte de la base de datos. Por lo tanto, se compromete bifásicos son más rápidos en un clúster no se comparte nada 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 NoSQL pueden diferenciarse de sus competidores, alegando un enfoque diferente, único. Es interesante notar, sin embargo, el número de proveedores de NoSQL con ácido cumplimiento de su plan de trabajo.

Video: Conversiones de unidades (Factores de Conversión)

Algunas bases de datos NoSQL tienen ÁCIDO-cumplimiento de su plan de trabajo, a pesar de que son partidarios de la base, que muestra la relevancia de garantías ACID son a la empresa, la misión-crítico Los sistemas.

Muchas empresas utilizan productos BASE-consistencia al probar las ideas, porque son libres, pero luego migran a una base de datos de pago para ÁCIDO-compatible cuando quieren ir a vivir en un sistema de misión crítica.

La forma más fácil de decidir si necesita ACID es tener en cuenta las interacciones de las personas y otros sistemas tienen con sus datos. Por ejemplo, si se agrega o actualización de los datos, es importante que la consulta siguiente, es capaz de ver el cambio? En otras palabras, son decisiones importantes que cuelgan sobre el estado actual de la base de datos? Sería ver un poco fuera de datos actualizados significan que esas decisiones podrían ser defectuoso fatalmente?

En los servicios financieros, la necesidad de coherencia es obvia. Pensar en la compra de los comerciantes de valores. Que necesitan para 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á consultando sólo es coherente con el tiempo, que no pueden ver la falta de fondos suficientes, exponiendo así a su organización a un riesgo financiero.

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.

Artículos Relacionados