Požadavky na služby úložiště
Úložné služby společnosti Datomic by obecně měly splňovat 3 požadavky:
- Implementujte sémantiku obchodu s páry klíč–hodnota :efektivní přístup pro čtení/zápis pomocí hodnot indexovaných klíčů
- Podporujte konzistentní čtení . např. číst své vlastní texty. V ideálním případě čtení bez sporů/bez zámku.
- Podporujte podmíněné vkládání . např. optimistické zamykání + izolace snímku.
Datomic používá služby úložišť k ukládání bloků setříděných, komprimovaných datomů, podobně jako tradiční databázové systémy používají systémy souborů a výše uvedené požadavky jsou do značné míry rozhraním API mezi základní službou úložiště a Datomic. Takže volba ve službách úložiště závisí na tom, jak dobře splňují tyto tři požadavky .
Škálovatelnost zápisu
Datomic obvykle nevyvíjí velký tlak na zápis na základní úložnou službu, protože do ní zapisuje pouze jedna komponenta, Transactor. Datomic také používá úlohu indexování na pozadí k integraci novinek do úložiště, jakmile je nashromážděno dostatečné množství (ve výchozím nastavení ~32 MB, ale lze jej nakonfigurovat), což dále snižuje zatížení konstantního zápisu. Jediná věc, kterou Datomic okamžitě zapíše, je protokol transakcí.
Přečtěte si škálovatelnost
Datomic používá více vrstev mezipaměti, tj. mezipaměť memcached a mezipaměť peers, takže za ideálních okolností, tj. když se pracovní sada vejde do paměti, systémy také nebudou vyvíjet velký tlak na čtení.
Zatížení systému
Pokud váš systém nevyžaduje obrovské škálovatelnost zápisu a data vaší aplikace se obvykle vejdou do paměti, pak je výběr konkrétní služby úložiště irelevantní samozřejmě kromě jejich provozních schopností (zálohy, nástroje pro správu atd.), které nemají s Datomic nic společného.
Pokud na druhou stranu váš systém vyžaduje obrovské škálovatelnost zápisu nebo máte velký počet vrstevníků, z nichž každý pracuje s více daty, než se vejde do jejich paměti (což je nuceno přenášet velké množství datových segmentů z úložiště), budete potřebovat úložný systém, který dokáže horizontálně škálovat, např. DynamoDB. Jak bylo zmíněno v jednom z komentářů, pokud potřebujete libovolnou škálovatelnost zápisu, Datomic pro vás stejně není ten správný systém.