Š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
DocStoresa 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.