sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur påverkar lagringsbackend Datomic?

Krav för lagringstjänster

Datomics lagringstjänster bör generellt uppfylla tre krav:

  1. Implementera key-value store semantics :effektiv läs-/skrivåtkomst med indexerade nycklars värden
  2. Stöd för konsekventa läsningar . t.ex. läs dina egna texter. Helst läser inga problem/låsningsfria.
  3. Stöd villkorliga sättningar . t.ex. optimistisk låsning + ögonblicksbildsisolering.

Datomic använder lagringstjänster för att lagra block av sorterade, komprimerade datomer, på samma sätt som traditionella databassystem använder filsystem och kraven ovan är i stort sett API:et mellan den underliggande lagringstjänsten och Datomic. Så valet i lagringstjänster beror på hur väl de stöder dessa tre krav .

Skrivskalbarhet

Datomic lägger vanligtvis inte mycket skrivtryck på den underliggande lagringstjänsten eftersom det bara finns en komponent som skriver till den, Transactor. Dessutom använder Datomic ett bakgrundsindexeringsjobb för att integrera nyhet i lagringen när tillräckligt mycket av det har ackumulerats (som standard ~32MB men kan konfigureras) vilket ytterligare minskar den konstanta skrivbelastningen. Det enda Datomic direkt skriver är transaktionsloggen.

Läs skalbarhet

Datomic använder flera lager av caching, dvs. memcachad och peers-cache, så under idealiska omständigheter, dvs. när arbetsuppsättningen passar i minnet, kommer systemen inte heller att utöva mycket lästryck.

Systembelastning

Om ditt system inte kräver stora skrivskalbarhet och dina programdata tenderar att passa i minnet, då är valet av en viss lagringstjänst irrelevant förutom, naturligtvis, för deras operativa kapacitet (säkerhetskopior, adminverktyg, etc.) som inte har något med Datomic att göra.

Om ditt system å andra sidan kräver enormt skrivskalbarhet eller så har du ett stort antal kamrater, var och en av dem arbetar med mer data än vad som får plats i deras minne (vilket tvingar många datasegment att hämtas från lagringen), behöver du ett lagringssystem som kan skalas horisontellt, t.ex. DynamoDB. Som nämnts i en av kommentarerna, om du behöver godtycklig skrivskalbarhet, är Datomic inte rätt system för dig ändå.




  1. Hur man skapar en totalrad i Access

  2. Hittar fråga från oracle som blockerar sessionen

  3. Hur upptäcker man om en sträng innehåller specialtecken?

  4. MySQL visar alla användardefinierade variabler