transactions - Aclaración ACID de Aerospike
(1)
Como se indica en la parte inferior de la página 2 del documento al que hizo referencia: http://www.aerospike.com/docs/architecture/assets/AerospikeACIDSupport.pdf
y en nuestra documentación en el sitio web que usted señaló: http://www.aerospike.com/acid
Para operaciones de lectura / escritura en un solo registro , Aerospike ofrece garantías estrictas sobre la atomicidad de estas operaciones:
Si continúa leyendo cualquiera de las fuentes, abordan todas las propiedades ACID de Atomicidad, Consistencia, Aislamiento y Durabilidad tal como se aplican a un solo registro .
Con bases de datos NoSQL, el término ACID se usa comúnmente para referirse a las copias múltiples de un registro dentro de un único entorno de servidor distribuido (clúster), y que todas las copias del mismo registro se escriben de manera ACID . Se guardan varias copias de un registro en la base de datos distribuida para proporcionar alta disponibilidad y conmutación por error. La mayoría de nuestros clientes de producción están satisfechos con 2 copias debido a la naturaleza robusta de nuestra base de datos.
Aerospike se compromete con esto en una única instancia agrupada de la base de datos. Si elige tener varias instancias en clúster en diferentes ubicaciones / centros de datos (para la estrategia de geolocalización o recuperación de desastres), nos comprometemos con el cumplimiento de ACID solo para una instancia de base de datos individual .
Nuestro XDR (Cross Data Center Replication) replicará automáticamente el registro en instancias remotas de Aerospike en otras ubicaciones, por lo que nuestro proceso de envío de registros a las otras ubicaciones aparecerá como cliente Aerospike en la instancia remota y nuevamente, el cumplimiento de ACID es para un solo registro que se envía a la instancia remota. Esto ocurre en el orden de segundos para tener en cuenta las latencias de la red y otros factores que no están bajo el control de Aerospike. NO admitimos ACID en varias instancias / geografías.
Aerospike no tiene una API de administración de transacciones en este momento, por lo que incluso al utilizar Funciones definidas por el usuario (UDF) no podrá deshacer una serie de pasos como describió en su ejemplo, si uno de los pasos falla. Aerospike nunca ha hecho esta afirmación, pero como sucede a menudo en la industria de la tecnología, las palabras se usan en contextos múltiples, y es fácil confundir las situaciones.
La base de datos de Aerospike dice que es
[...] estructurado con tres objetivos clave:
Para crear una plataforma flexible y escalable que satisfaga las necesidades de las aplicaciones de escala web actuales
Proporcionar la solidez y fiabilidad (es decir, ACID) que se espera de las bases de datos tradicionales.
Para proporcionar eficiencia operativa (participación manual mínima)
Y en otro lugar :
Aerospike está optimizado para trabajar con lo último en tecnología de almacenamiento y bases de datos para exprimir la mayor cantidad posible de transacciones, al tiempo que garantiza una coherencia sólida (ACID).
En primer lugar, no encontré ninguna definición de transacción en Aerospike. Normalmente lo obtengo como una secuencia de operaciones en una base de datos. Sin embargo, al leer más tarde, no veo que las transacciones sean ACID:
Al leer una descripción detallada del Aeroscopio Aeroscopio , descubrí que solo pretende garantías ACID.
Ejemplos:
- Quiero hacer una secuencia de operaciones (a, b, c) en una transacción. Cada operación es una consulta DB independiente. Si c falla, entonces quiero que ayb se reviertan mediante un sistema DB. No encontré esta característica en Aerospike.
Consideremos dos transacciones simultáneas que modifican los documentos A y B. Al principio A = 0 y B = 0:
- T1 agrega 1 a
A
yB
- T2 multiplica A y B por 2.
Espero que siempre terminemos con
A==B
, el resultado será:-
A=1 & B=1
cuando T2 primero bloqueará / tomará posesión de los documentos A y B -
A=2 & B=2
cuando T2 primero bloqueará / tomará posesión de los documentos A y B
¿Cuál es la garantía de este resultado?
- T1 agrega 1 a
1. ¿Puedes confirmar mis resultados de mis ejemplos?
2. ¿ Las funciones definidas por el usuario ayudan de alguna manera aquí?
PD
Para ser claro, no quiero decir que Aerospike es malo. Veo una gran pieza de buen trabajo allí. Me faltan unas buenas aclaraciones cuando las garantías de ACID fallan allí.