Preskočiť na obsah

Škálovanie a limity

storh je úložisko založené na súboroch, nie relačný dotazovací nástroj. Praktické hranice s referenčnými číslami z benchmarkov (50-tisíc záznamov, Apple M1 Pro):

  • Prístup ku konkrétnym záznamom je v praxi neobmedzený, ak súborový systém zvláda počet súborov a kolekcia používa delenie podľa koncových znakov UUID. Čítanie konkrétneho záznamu trvá niekoľko mikrosekúnd; trvalý zápis jedného záznamu je obmedzený synchronizáciou fsync na niekoľko tisíc za sekundu.
  • Skenovanie segmentovaného denníka, čítanie pomocou kurzora a čítanie časového rozsahu pohodlne zvládajú približne milión záznamov, ak sú veľkosti segmentov nastavené podľa pracovného zaťaženia. Hromadné pridávanie dosahuje desaťtisíce záznamov za sekundu; obnova neúplného koncového segmentu pri opätovnom otvorení spracuje státisíce záznamov za sekundu.
  • Operácie s frontom pridávajú kompaktné udalosti do jedného trvalého denníka, takže vloženie, prevzatie, dokončenie, opätovné zaradenie a vyčistenie frontu nevyžadujú samostatný súbor pre každú úlohu a nevytvárajú nápor operácií v adresári. Hromadné prevzatie a dokončenie rozložia náklady na zamykanie a fsync na celé dávky.
  • Skenovanie polí v jednotlivých súboroch v DocStore sa spomaľuje nad približne 10-tisíc záznamov, pretože každé zodpovedajúce skenovanie musí prechádzať jednotlivé súbory. Deklarujte indexy pre polia, podľa ktorých filtrujete; indexované dotazy rovnosti sa vykonajú približne za milisekundu bez ohľadu na veľkosť kolekcie.
  • storh nie je určené na ad hoc relačné dotazy, spájanie, filtrovanie náročné na sekundárne indexy ani analytické skenovanie mnohých polí. Keď potrebujete takéto vzory čítania, presúvajte kolekcie do zrkadla SQL; ak potrebujete transakcie nad viacerými záznamami, uchovávajte hlavné dáta v skutočnej databáze.

Použite DocStore, keď prevládajú čítania konkrétnych záznamov, SegmentedLog, keď prevládajú pridávanie a zoradené čítania, a Queue na jednoduché trvalé smerovanie práce. Porovnanie vedľa seba nájdete v časti Výber modulu.