NodeJS, MongoDB performance

V návaznosti na svůj minulý post, ve kterém mi šlo spíše o demonstraci realizace stejné věci v různých jazycích, v tomto příspěvku rozvinu řešení v NodeJS s ohledem na velikost zpracovávaných dat a výkonosti.

Načítání dat ze serveru je zprostředkováno skrze event data a finalyzace požadované funkcionality pak přes even end. Oba eventy jsou odchytnuty metodou on na objektem cursor.

Implementace by pak mohla vypadat takto:

Výsledný kód je složitější, protože data se již nezpracovávají v pipline volání, jejíž výsledkem je pole s kompletním datovým setem, ale jen sada funkcí, která se volají v momentě obdržení dané události.

Důvod proč použít eventy je jasný: výsledný datový set může být tak velký, že se vám nevejde do paměti a je potřeba nezpracovávat jej celý naráz, ale postupně, takže výsledkem je menší footprint v RAM.

Dalším důvodem může být ve finále i samotný performance aplikace, protože správa velké paměti také spolkne nějakoi režii a výsledná aplikace pouřívající pole může být ve svém důsledku pomalejší.

Snad jedinou nevýhodou tohot řešení je nutnost znalost práce s eventy a to, že kód na 1. pohled už nevypadá tak jednoduše.