Skalowanie i limity
storh to magazyn oparty na plikach, a nie relacyjny silnik zapytań. Praktyczne ograniczenia, wraz z danymi liczbowymi z testów wydajności (50k rekordów, Apple M1 Pro):
- Dostęp punktowy jest praktycznie nieograniczony, jeśli system plików obsługuje daną liczbę plików, a kolekcja korzysta z partycjonowania według końcówki identyfikatora UUID. Odczyt punktowy trwa kilka mikrosekund; trwały zapis pojedynczego rekordu jest ograniczony przez fsync do kilku tysięcy operacji na sekundę.
- Skanowanie dziennika segmentowego, odczyty z kursorem i odczyty zakresów czasu sprawdzają się przy około 1M rekordów, jeśli rozmiary segmentów są dostosowane do obciążenia. Zbiorcze dopisywanie obsługuje dziesiątki tysięcy rekordów na sekundę; odzyskiwanie po niekompletnej końcówce odtwarza setki tysięcy rekordów na sekundę przy ponownym otwarciu.
- Operacje kolejkowe dopisują zwarte zdarzenia do jednego trwałego dziennika, więc umieszczenie w kolejce, pobranie, ukończenie, ponowne umieszczenie i opróżnienie nie powodują zmian w katalogach związanych z obsługą osobnych plików dla każdego zadania. Zbiorcze pobieranie i kończenie zadań rozkładają blokowanie i fsync na całe partie.
- Skanowanie pól w poszczególnych plikach w
DocStorestaje się wolniejsze po przekroczeniu około 10k rekordów, ponieważ każdy pasujący skan musi przejść przez pojedyncze pliki. Zadeklaruj indeksy dla filtrowanych pól; zapytania równości korzystające z indeksów odpowiadają w około milisekundę niezależnie od wielkości kolekcji. - storh nie służy do doraźnych zapytań relacyjnych, złączeń, filtrowania intensywnie korzystającego z indeksów pomocniczych ani skanów analitycznych obejmujących wiele pól. Przenieś kolekcje do SQL mirror, jeśli potrzebujesz takich wzorców odczytu; gdy potrzebujesz transakcji obejmujących wiele rekordów, zachowaj główne dane w prawdziwej bazie danych.
Użyj DocStore, gdy dominują odczyty punktowe, SegmentedLog, gdy dominują dopisywanie i uporządkowane odczyty, a Queue do prostego, trwałego rozdzielania zadań. Zobacz Wybór silnika, aby porównać je obok siebie.