Vereisten voor opslagservices
De opslagdiensten van Datomic moeten over het algemeen aan 3 vereisten voldoen:
- Implementeer key-value store-semantiek :efficiënte lees-/schrijftoegang met behulp van de waarden van geïndexeerde sleutels
- Ondersteunt consistente leesbewerkingen . bijv. lees je eigen teksten. In het ideale geval lezen zonder twist/lock-free.
- Ondersteun voorwaardelijke puts . bijv. optimistische vergrendeling + snapshot-isolatie.
Datomic gebruikt opslagservices om blokken gesorteerde, gecomprimeerde datoms op te slaan, vergelijkbaar met de manier waarop traditionele databasesystemen bestandssystemen gebruiken en de bovenstaande vereisten zijn vrijwel de API tussen de onderliggende opslagservice en Datomic. Dus de keuze in opslagservices zijn afhankelijk van hoe goed ze deze drie vereisten ondersteunen .
Schrijfschaalbaarheid
Datomic oefent meestal niet veel schrijfdruk uit op de onderliggende opslagservice, omdat er maar één component naar schrijft, de Transactor. Datomic gebruikt ook een achtergrondindexeringstaak om nieuwigheid in de opslag te integreren zodra er genoeg van is verzameld (standaard ~32 MB, maar kan worden geconfigureerd), wat de constante schrijfbelasting verder vermindert. Het enige dat Datomic meteen schrijft, is het transactielogboek.
Lees Schaalbaarheid
Datomic gebruikt meerdere cachinglagen, d.w.z. memcached en peers cache, dus in ideale omstandigheden, d.w.z. wanneer de werkset in het geheugen past, zullen de systemen ook niet veel leesdruk uitoefenen.
Systeembelasting
Als uw systeem geen enorme . nodig heeft schrijfschaalbaarheid en uw applicatiegegevens passen meestal in het geheugen, dan is de keuze voor een bepaalde opslagservice irrelevant behalve natuurlijk hun operationele mogelijkheden (back-ups, beheertools, enz.) die niets te maken hebben met Datomic.
Als uw systeem daarentegen wel enorme . nodig heeft schrijfschaalbaarheid of u hebt een groot aantal peers, die elk met meer gegevens werken dan in hun geheugen passen (waardoor er veel gegevenssegmenten uit de opslag moeten worden gehaald), hebt u een opslagsysteem nodig dat horizontaal kan schalen, b.v. DynamoDB. Zoals vermeld in een van de opmerkingen, als je willekeurige schrijfschaalbaarheid nodig hebt, is Datomic sowieso niet het juiste systeem voor jou.