PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment le backend de stockage influence-t-il Datomic ?

Exigences des services de stockage

Les services de stockage Datomic' doivent généralement répondre à 3 exigences :

  1. Mettre en œuvre la sémantique du magasin clé-valeur :accès efficace en lecture/écriture en utilisant les valeurs des clés indexées
  2. Prise en charge de lectures cohérentes . par exemple. lisez vos propres écrits. Idéalement, lectures sans conflit/sans verrouillage.
  3. Prend en charge les puts conditionnels . par exemple. verrouillage optimiste + isolation d'instantané.

Datomic utilise des services de stockage pour stocker des blocs de données triées et compressées, de la même manière que les systèmes de base de données traditionnels utilisent des systèmes de fichiers et les exigences ci-dessus correspondent à peu près à l'API entre le service de stockage sous-jacent et Datomic. Alors le choix dans les services de stockage dépendent de la manière dont ils prennent en charge ces trois exigences .

Évolutivité d'écriture

Datomic n'exerce généralement pas beaucoup de pression d'écriture sur le service de stockage sous-jacent car il n'y a qu'un seul composant qui y écrit, le Transactor. En outre, Datomic utilise un travail d'indexation en arrière-plan pour intégrer la nouveauté dans le stockage une fois qu'une quantité suffisante a été accumulée (par défaut ~ 32 Mo mais peut être configurée), ce qui réduit encore la charge d'écriture constante. La seule chose que Datomic écrit immédiatement est le journal des transactions.

Lire l'évolutivité

Datomic utilise plusieurs couches de mise en cache, c'est-à-dire memcached et peers cache, donc dans des circonstances idéales, c'est-à-dire lorsque l'ensemble de travail tient dans la mémoire, les systèmes ne mettront pas non plus beaucoup de pression en lecture.

Charge du système

Si votre système ne nécessite pas énorme l'évolutivité en écriture et les données de votre application ont tendance à tenir en mémoire, alors le choix d'un service de stockage particulier est non pertinent sauf, bien sûr, pour leurs capacités opérationnelles (sauvegardes, outils d'administration, etc.) qui n'ont rien à voir avec Datomic.

Si, d'autre part, votre système nécessite énorme l'évolutivité d'écriture ou si vous avez un grand nombre de pairs, chacun d'entre eux travaillant avec plus de données que leur mémoire ne peut en contenir (forçant le stockage de nombreux segments de données), vous aurez besoin d'un système de stockage pouvant évoluer horizontalement, par ex. DynamoDB. Comme mentionné dans l'un des commentaires, si vous avez besoin d'une évolutivité d'écriture arbitraire, Datomic n'est de toute façon pas le bon système pour vous.