sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan påvirker storage-backend Datomic?

Krav til lagertjenester

Datomic' lagringstjenester bør generelt opfylde 3 krav:

  1. Implementer nøgleværdi butikssemantik :effektiv læse-/skriveadgang ved hjælp af indekserede nøglers værdier
  2. Understøtte konsistente læsninger . for eksempel. læs dine egne skriverier. Ideelt set læsninger uden stridigheder/låse.
  3. Støt betingede puts . for eksempel. optimistisk låsning + snapshot-isolering.

Datomic bruger lagringstjenester til at gemme blokke af sorterede, komprimerede datomer, svarende til den måde, traditionelle databasesystemer bruger filsystemer på, og kravene ovenfor er stort set API'en mellem den underliggende lagringstjeneste og Datomic. Så valget i lagertjenester afhænger af hvor godt de understøtter disse tre krav .

Skriveskalerbarhed

Datomic lægger normalt ikke meget skrivepres på den underliggende lagertjeneste, da der kun er én komponent, der skriver til den, Transactor. Datomic bruger også et baggrundsindekseringsjob til at integrere nyheder i lageret, når nok af det er blevet akkumuleret (som standard ~32MB, men kan konfigureres), hvilket yderligere reducerer den konstante skrivebelastning. Det eneste Datomic umiddelbart skriver, er transaktionsloggen.

Læs skalerbarhed

Datomic bruger flere lag af caching, dvs. memcached og peers-cache, så under ideelle omstændigheder, dvs. når arbejdssættet passer i hukommelsen, vil systemerne heller ikke lægge et stort læsetryk.

Systembelastning

Hvis dit system ikke kræver enorme skrive skalerbarhed og dine applikationsdata har en tendens til at passe i hukommelsen, så er valget af en bestemt lagertjeneste irrelevant bortset fra naturligvis deres operationelle muligheder (sikkerhedskopier, admin-værktøjer osv.), som intet har med Datomic at gøre.

Hvis dit system på den anden side kræver enormt skrive skalerbarhed, eller du har et stort antal peers, som hver især arbejder med flere data, end der kan passe i deres hukommelse (hvorved der skal hentes en masse datasegmenter fra lageret), skal du bruge et lagersystem, der kan skalere vandret, f.eks. DynamoDB. Som nævnt i en af ​​kommentarerne, hvis du har brug for vilkårlig skriveskalerbarhed, er Datomic alligevel ikke det rigtige system for dig.




  1. Hvordan vælger man flere kolonner med samme navn ved hjælp af JPA native forespørgsel?

  2. Sådan designes en databasemodel til et biografreservationssystem

  3. Cayenne, Postgres:primær nøglegenerering

  4. Brug af local.js til at gemme sails-mysql adgangskode