Treci la conținut

Scalare și limite

storh este o stocare bazată pe fișiere, nu un motor de interogări relaționale. Limitele practice, cu valori de referință din benchmark-uri (50k de înregistrări, Apple M1 Pro):

  • Accesul direct este practic nelimitat atunci când sistemul de fișiere poate gestiona numărul de fișiere, iar colecția folosește partiționarea UUID după ultimele caractere. O citire directă durează câteva microsecunde; scrierile durabile ale unui singur record sunt limitate de fsync la câteva mii pe secundă.
  • Scanările jurnalului segmentat, citirile cu cursor și citirile pe intervale de timp funcționează bine până la aproximativ 1M de înregistrări, atunci când dimensiunile segmentelor sunt configurate pentru volumul de lucru. Adăugările în lot ating zeci de mii de înregistrări pe secundă; recuperarea unui final de jurnal incomplet reprocesează sute de mii de înregistrări pe secundă la redeschidere.
  • Operațiile de coadă adaugă evenimente compacte într-un singur jurnal durabil, astfel că introducerea, revendicarea, finalizarea, repunerea în coadă și golirea evită modificările repetate ale directoarelor cu câte un fișier per sarcină. Revendicarea și finalizarea în lot distribuie costul blocării și al fsync pe întregul lot.
  • Scanările câmpurilor per fișier din DocStore încetinesc peste aproximativ 10k de înregistrări, deoarece fiecare scanare potrivită trebuie să parcurgă fișiere individuale. Declarați indexuri pentru câmpurile după care filtrați; interogările de egalitate indexate răspund în aproximativ o milisecundă, indiferent de dimensiunea colecției.
  • storh nu este destinat interogărilor relaționale ad-hoc, join-urilor, filtrării intensive pe indexuri secundare sau scanărilor analitice pe multe câmpuri. Împingeți colecțiile într-o oglindă SQL când aveți nevoie de aceste tipare de citire; păstrați sistemul de referință într-o bază de date reală când aveți nevoie de tranzacții pe mai multe înregistrări.

Folosiți DocStore când predomină citirile directe, SegmentedLog când predomină adăugările și citirile ordonate și Queue pentru distribuirea simplă și durabilă a sarcinilor. Consultați Alegerea unui motor pentru o comparație alăturată.