Към съдържанието

Мащабиране и ограничения

storh е хранилище, ориентирано към файлове, а не релационна машина за заявки. Практическите граници, с референтни стойности от сравнителните тестове (50k записа, Apple M1 Pro):

  • Достъпът до отделен запис е практически неограничен, ако файловата система може да обработи броя файлове и колекцията използва сегментиране по последните знаци UUID. Едно четене отнема няколко микросекунди; трайният запис на един запис е ограничен от fsync и достига няколко хиляди в секунда.
  • Сканирането на сегментиран журнал, четенето с курсор и четенето по времеви диапазон са удобни при обем до около 1M записа, когато размерите на сегментите са конфигурирани според натоварването. Масовото добавяне достига десетки хиляди записа в секунда; възстановяването след прекъснат край преиграва стотици хиляди записа в секунда при повторно отваряне.
  • Операциите с опашката добавят компактни събития към един траен журнал, така че добавянето в опашката, поемането, завършването, повторното поставяне и изчистването избягват натрупването на директории с по един файл за всяка задача. Масовото поемане и завършване разпределят разхода за заключване и fsync върху цели партиди.
  • Сканирането на полета по отделни файлове в DocStore се забавя при над приблизително 10k записа, защото всяко съвпадащо сканиране трябва да обходи отделните файлове. Декларирайте индекси за полетата, по които филтрирате; заявките за равенство с индекс връщат отговор за около милисекунда независимо от размера на колекцията.
  • storh не е предназначен за произволни релационни заявки, съединения, филтриране с много вторични индекси или аналитични сканирания по множество полета. Изпращайте колекциите към огледало в SQL, когато са ви нужни такива модели на четене; когато са ви нужни транзакции с няколко записа, използвайте реална база данни като основно хранилище.

Използвайте DocStore, когато преобладава достъпът до отделни записи, SegmentedLog, когато преобладават добавянето и подреденото четене, и Queue за просто и трайно разпределяне на задачи. Вижте Избор на машина за сравнение едно до друго.