¿Cómo influye el backend de almacenamiento en los datos?


¿Cómo debo elegir el servicio de almacenamiento backend para Datomic?

¿Es una cuestión de preferencia seleccionar, digamos, DynamoDB en lugar de Postgres, o cada opción tiene diferentes compensaciones? Si es así, ¿qué son?

Author: tosh, 2013-07-29

1 answers

Requisitos de los Servicios de Almacenamiento

Los servicios de almacenamiento de Datomic deben cumplir generalmente 3 requisitos:

  1. Implementar semántica de almacén de clave-valor : acceso eficiente de lectura / escritura utilizando los valores de las claves indexadas
  2. Soporta lecturas consistentes. por ejemplo, lea sus propias escrituras. Idealmente, lecturas sin contención / sin bloqueo.
  3. Soporte condicional pone. por ejemplo, bloqueo optimista + aislamiento de instantáneas.

Datomic utiliza los servicios de storages para almacenar los bloques de datoms ordenados y comprimidos, similares a la forma en que los sistemas de bases de datos tradicionales usan los sistemas de archivos y los requisitos anteriores son más o menos la API entre el servicio de almacenamiento subyacente y Datomic. Así que la opción en los servicios de almacenamiento depende de qué tan bien soportan esos tres requisitos.

Escalabilidad de escritura

Datomic no suele poner mucha presión de escritura en el servicio de almacenamiento subyacente, ya que solo hay un componente escribiendo en él, el Transactor. Además, Datomic utiliza un trabajo de indexación en segundo plano para integrar la novedad en el almacenamiento una vez que se ha acumulado suficiente cantidad (por defecto ~32MB pero se puede configurar), lo que reduce aún más la carga de escritura constante. Lo único que Datomic escribe inmediatamente es el registro de transacciones.

Escalabilidad de lectura

Datomic utiliza múltiples capas de almacenamiento en caché, es decir, memcached y la caché de pares, por lo que en circunstancias ideales, es decir, cuando el conjunto de trabajo encaja en la memoria, los sistemas no pondrán mucho o leer de presión.

Carga del sistema

Si su sistema no requiere una gran escalabilidad de escritura y los datos de su aplicación tienden a caber en la memoria, entonces la elección de un servicio de almacenamiento en particular es irrelevante excepto, por supuesto, por sus capacidades operativas (copias de seguridad, herramientas de administración, etc.) que no tienen nada que ver con Datomic.

Si, por otro lado, su sistema requiere enorme escalabilidad de escritura o tiene un gran número de pares, cada uno de al trabajar con más datos de los que caben en su memoria (lo que obliga a traer muchos segmentos de datos del almacenamiento), necesitará un sistema de almacenamiento que pueda escalar horizontalmente, por ejemplo, DynamoDB. Como se mencionó en uno de los comentarios, si necesita escalabilidad de escritura arbitraria, Datomic no es el sistema adecuado para usted de todos modos.

 22
Author: a2ndrade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-29 21:58:05