PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie beeinflusst das Speicher-Backend Datomic?

Anforderungen an Speicherdienste

Die Speicherdienste von Datomic sollten im Allgemeinen drei Anforderungen erfüllen:

  1. Implementieren Sie Schlüsselwertspeicher-Semantik :Effizienter Lese-/Schreibzugriff mit indizierten Schlüsselwerten
  2. Unterstützung konsistenter Lesevorgänge . z.B. lesen Sie Ihre eigenen Texte. Idealerweise Lesevorgänge ohne Konflikte/Sperren.
  3. Unterstützt bedingte Puts . z.B. Optimistisches Sperren + Snapshot-Isolation.

Datomic verwendet Speicherdienste, um Blöcke sortierter, komprimierter Daten zu speichern, ähnlich wie herkömmliche Datenbanksysteme Dateisysteme verwenden, und die oben genannten Anforderungen sind so ziemlich die API zwischen dem zugrunde liegenden Speicherdienst und Datomic. Also die Auswahl bei Speicherdiensten hängen davon ab, wie gut sie diese drei Anforderungen unterstützen .

Skalierbarkeit schreiben

Datomic übt normalerweise keinen großen Schreibdruck auf den zugrunde liegenden Speicherdienst aus, da nur eine Komponente darauf schreibt, der Transactor. Außerdem verwendet Datomic einen Hintergrundindizierungsjob, um Neuheiten in den Speicher zu integrieren, sobald sich genug davon angesammelt haben (standardmäßig ~32 MB, können aber konfiguriert werden), wodurch die konstante Schreiblast weiter reduziert wird. Das einzige, was Datomic sofort schreibt, ist das Transaktionslog.

Skalierbarkeit lesen

Datomic verwendet mehrere Caching-Ebenen, d. h. Memcached und Peer-Cache, sodass die Systeme unter idealen Umständen, d. h. wenn der Arbeitssatz in den Speicher passt, auch keinen großen Lesedruck ausüben.

Systemlast

Wenn Ihr System riesig nicht benötigt Schreibskalierbarkeit und Ihre Anwendungsdaten neigen dazu, in den Arbeitsspeicher zu passen, dann ist die Wahl eines bestimmten Speicherdienstes irrelevant außer natürlich für ihre operativen Fähigkeiten (Backups, Admin-Tools usw.), die nichts mit Datomic zu tun haben.

Wenn Ihr System andererseits riesige benötigt Schreibskalierbarkeit oder Sie haben eine große Anzahl von Peers, von denen jeder mit mehr Daten arbeitet, als in seinen Speicher passen (wodurch viele Datensegmente aus dem Speicher gebracht werden müssen), benötigen Sie ein Speichersystem, das horizontal skalieren kann, z. DynamoDB. Wie in einem der Kommentare erwähnt, ist Datomic ohnehin nicht das richtige System für Sie, wenn Sie beliebige Skalierbarkeit beim Schreiben benötigen.