Jest to bardzo zależne od systemu, ale są prawie pewne, że przeskoczymy obok dowolnego klifu i wpadniemy w Prawdziwe Kłopoty. Jestem ciekawy, jakie są podstawowe zasady dobrego stosunku pamięci RAM do miejsca na dysku. Planujemy następną rundę systemów i musimy dokonać pewnych wyborów dotyczących pamięci RAM, dysków SSD i ilości każdego nowego węzła.
Ale teraz trochę szczegółów wydajności!
Podczas normalnego przepływu pracy w ramach jednego projektu projekt MongoDB zostaje dotknięty bardzo wysokim odsetkiem zapisów (70–80%). Po osiągnięciu drugiego etapu potoku przetwarzania jego odczyt jest niezwykle wysoki, ponieważ musi zduplikować rekordy zidentyfikowane w pierwszej połowie przetwarzania. Jest to przepływ pracy, dla którego stworzono „zachowaj zestaw roboczy w pamięci RAM”, a my projektujemy wokół tego założenia.
Cały zestaw danych jest nieustannie trafiany losowymi zapytaniami ze źródeł pochodzących od użytkowników końcowych; chociaż częstotliwość jest nieregularna, rozmiar jest zwykle dość mały (grupy 10 dokumentów). Ponieważ dotyczy to użytkownika, odpowiedzi muszą znajdować się poniżej progu „znudzonego” wynoszącego 3 sekundy. Ten wzorzec dostępu znacznie rzadziej znajduje się w pamięci podręcznej, więc bardzo prawdopodobne jest, że spowoduje trafienie dysku.
Drugi proces przetwarzania to wysoki odczyt poprzednich przebiegów przetwarzania, które mogą mieć dni, tygodnie, a nawet miesiące, i jest uruchamiany rzadko, ale nadal musi być spakowany. Dostęp do 100% dokumentów z poprzedniego przebiegu przetwarzania będzie możliwy. Podejrzewam, że nie może pomóc w tym ocieplenie pamięci podręcznej.
Rozmiary gotowych dokumentów różnią się znacznie, ale średni rozmiar wynosi około 8 KB.
Wysoki odczyt normalnego przetwarzania projektu zdecydowanie sugeruje użycie replik w celu dystrybucji ruchu Read. Czytałem gdzie indziej, że RAM-GB 1:10 na HD-GB to dobra zasada dla wolnych dysków, ponieważ poważnie rozważamy użycie znacznie szybszych dysków SSD, chciałbym wiedzieć, czy istnieje podobna reguła kciuka za szybkie dyski.
Wiem, że używamy Mongo w taki sposób, że pamięć podręczna - wszystko naprawdę nie będzie latać, dlatego szukam sposobów na zaprojektowanie systemu, który przetrwa takie użycie. Cały zestaw danych będzie prawdopodobnie większość z TB w ciągu pół roku i stale rosnąć.