Title: matfyz / MDB

Q: kolik cca stojí hadoop licence?
A: hadoop je open source :D

Q: z jakých komponent se skládá hadoop?
A: HDFS ~ logika, kde a jak se data ukládají
YARN ~ manage-uje hardware resources in real time
MapReduce ~ logika pro distribuovanou analýzu dat
Hadoop Common ~ základ hadoop infrastruktury, ze kterého čerpá zbytek programu

Q: jaký je v map-reduce výstup po provedení operace map?
A: key-value páry, přičemž key je, do jaké group-by skupiny daný pár patří

jaké jsou různé role uzlů v map reduce?

Q: jaké jsou modernější alternativy pro storage vrstvu od hadoop-like workflow?
A: amazon S3, MinIO

Q: jsou objekty v S3 modelu mutable?
A: ne

Q: jak se logicky organizují data v S3 modelu?
A: bucket / object
často se použivají i logické prefixy, ale ty ve skutečnosti neovlivňují, kde a jak data jsou ukládaná

Q: do jaké paměti se ukládají mezivýsledky batch processů?
A: map-reduce na disk
spart se snaží využívat RAM, jak jen to jde

Q: jak se dělí pokyny, které se mohou předat Sparku?
A: transformace ~ líné
akce ~ spustí samotné query

Q: podle jaké hierarchie se dělí úkoly ve sparku?
A: ● Action starts a job
● Job is divided into stages
● Stages consist of parallel tasks
  ○ Shuffle usually creates stage boundaries

Q: co je výsledkem spark query?
A: několik souborů
pokud chceme vše na jednom místě, musíme udělat vlastní postprocessing

Q: co je nejdražší operace ve spark queries?
A: shuffling

Q: co je to spark closure?
A: ve spark query se často implicitně odkazujeme na objekty, které potřebujeme
pokud jsou velké nebo nejsou serializovatelné, pak je problém je rozdistribuovat mezi všechny uzly
o to se spark closure mechanismus stará
musíme si dát pozor, ať nešíříme omylem velké objekty v closure ~ zpomaluje to

Q: spark broadcast variables
A: zajistí, že proměnné jsou jednou broadcastnuty na začátku query a udržovány v paměti po celou dobu procesu, ne posílané s každým podúkolem zvlášť
takový distribuovaný caching mechanismus
používá se pro velká read-only data
Without broadcast, every chef receives their own copy
of the recipe book for each dish they prepare. With
broadcast, each kitchen gets one shared recipe book
that all chefs reuse.

Q: v jaké formě jsou data ukládána v parquet formátu?
A: po sloupcích
zkompresovaná
lepší performance

Q: co je spark coalesce() ?
A: zredukuje počet částí, do kterých se partitionuje, když dáme 'partition data by field'
pokud by byly příliš malé, mělo by to vysoký overhead

Q: jaké výhody má 'partition data by field'? v MinIO
A: pokud potřebujeme pouze data ve specifickém úseku, můžeme je rychle najít, aniž bychom procházeli zbytkem
pokud potřebujeme full O(n) search, můžeme ho provézt paralelně na více zařízeních zároveň

jak dlouho trvá čtení z jednotlivých druhů paměti?

Q: co je redis hash?
A: strukturovaný slovník
není to podhierarchie, spíš opravdu jeden chunked payload

Q: co je redis list
A: je to deque :D
je schopný rychle přidávat i na začátek
jakmile se vyprázdní, automaticky se kompletně odalokuje spolu se svým klíčem

Q: vyjmenuj kolekce v redisu
A: list, set, sorted_set, hash

Q: jak se nastavuje ttl pro konkrétní část redis hash struktury?
A: nelze, ttl se vždy vztahuje ke klíčí a ničemu jinému

Q: vyjmenuj cache patterny
A: cache-aside, write-through, write-back

Q: cache aside
A: do cache načítáme při cache miss

Q: co je write-through cache a kdy se používá?
A: do cache zapisujeme při zápisu
používají se typicky pro data vyžadující silnou konzistenci ~ finance

Q: write-back=write-behind cache
A: zapisujeme do cache
perzistentně zapisuje až background job
riskujeme ztrátu dat

Q: jaké jsou nejčastější cache eviction strategie?
A: LRU = least recently used ~ ten, který byl použit "nejdávněji"
LFU = least frequentyl used
FIFO = oldest item

Q: jak zvolit vhodný klíč v redisu?
A: mělo by v něm být zakódované přesně, co hledáme ~ request, který reprezentuje
např. product:1:keywords
doporučuje se využívat konzistentní jmenné schéma

Q: key explosion
A: když cache-ujeme příliš specifická data
poté se typicky stává, že stejné přesné query se nebude opakovat
řeší se tak, že cache-ujeme větší celky ~ např. id v nějakém range-i

Q: co je schema-on-read vs schema-on-write?
porovnej sql a mongo
A: schema-on-read: parsujeme strukturu až při čtení ~ flexibilní struktura ~ mongo
schema-on-write: strukturu validujeme už při zápisu ~ neměnná struktura ~ sql

jaká je hierarchie dat v mongu?

Q: jaké jsou naming konvence pro fieldy v mongu?
A: _id ~ primary key
nesmějí začínat $ ~ rezervované pro operátory
nesmějí obsahovat "." ~ rezervované pro zanořování

Q: co je to multikey index?
A: používá se v mongo array-ích
vhodné např. pro tags array ~ najdi mi všechny výrobky s daným tagem

Q: MongoEngine
A: python knihovna pro mongo ODM

Q: jak funguje model replikace v MongoDB?
A: master-slave architektura
jeden primary zdroj
ten si zápisové přízaky vezme k sobě do oplogu a stejné příkazy pošle svým otrokům
při čtení se primárně ptají primárního zdroje, ale při vytížení mají všechny zdroje stejnou váhu (dá se nastavit i explicitně jinak)

Q: co se stane, když v mongu shoří primární zdroj dat?
co to znamená pro performance systému?
A: začnou volby
ty mohou trvat cca minutu
v tu dobu je zakázané zapisovat

Q: co se stane, když se v mongu znova připojí původní primární zdroj nějakých dat?
A: začnou nové volby
má šanci, že se z něj opět stane primary, ale nemusí

Q: kdy se v mongo volbách využívá vetování?
kdo může vetovat?
A: když někdo ví, že uzel, který volby inicioval, měl špatné informace
vetovat může libovolný uzel datasetu, klidně i secondary

Q: jaká jsou speciální nastavení / role pro secondaries v mongo clusteru?
A: priority 0 ~ can't become primary
hidden ~ pouze pro účely zálohy, aplikace z něj nemohou číst, ale může volit
delayed ~ pro archivační účely

Q: souhrnný pojem pro mastera udržující daná data a otroky, kteří od něj kopírují
A: replica set

Q: jak funguje sharding v mongu?
A: každý shard je replica set

Q: co je v mongu query router?
A: gateway do databáze
dispatchuje požadavky tam, kam patří
bývá víc než jeden, aby se rozložil load

Q: mongo config server
A: celý uzel, který udržuje metadata clusteru
např. kde je jaký shard

Q: jaký je trade-off u velikosti shardů?
A: velký shard → méně migrací
malý shard → rovnoměrnější rozložení zátěže

Q: jak funguje atomicita transakcí v mongu?
A: operace jsou atomické na úrovni jednoho dokumentu
↓
u velkých hodně frekventovaných dokumentů může vznikat choke point
lze vynutit i klasické transakce jako v sql pomocí explicitního povelu start/commit
dříve se používalo $isolated:1 u writeMany, ale už je deprecated (přestože to je ve slidech)

Q: jaké jsou verze monga k dostání?
A: community vs enterprise edition

Q: jak se nazývají tabulky ve wide-column databázích?
A: column family

Q: z čeho se skládá jeden cassandra column?
A: key, value, timestamp

Q: co jsou user defined typy v cassandře?
A: custom key-value objekt ~ agregát
je to hodnota jednoho sloupce

Q: co je cassandra keyspace?
A: logická jednotka, která určuje např. jak jsou data v jednom keyspace replikovaná
ekvivalent "database" v sql světě

Q: z čeho se v cassandře skládá primary key?
A: partition key ~ první složka primary key, určuje, jak jsou data distribuovaná po clusteru; může být i composite
clustering column ~ ostatní složky, určují setřídění v jednom partition

Q: jak se v cassandře implementuje time-series pattern?
A: partition key ~ kdo poslal data
with clustering order by timestamp desc

Q: má cassandra built-in TTL?
A: ano

Q: podporuje cassandra nested kolekce?
A: ano
• set — a set of unique values
• list — an ordered list of values
• map — key–value pairs

Q: co je v cassandře truncate příkaz?
A: smaže všechny hodnoty, ale zachová schéma

Q: kdy je povolené group by v cassandře?
A: pouze přes součásti primárního klíče

Q: co se v cassandře stane, když selectujeme negroupnutý sloupeček u group by?
A: vrátí to jeden náhodný sample

Q: python cassandra ORM framework
A: cqlengine

Q: jaké struktury Cassandra používá pro rychlé zápisy?
A: memtable ~ RAM cache
jakmile je dost velká, flushne se na disk jakožto SSTable a smaže se commit log
commit log ~ zajišťuje durabilitu dat

Q: jak fungují coordinator nodes v cassandře?
A: klient může kontaktovat jakýkoli node a tím se z něj automaticky stane koordinátor
ten předá repliky všem uzlům, které vlastní modifikovaná data

Q: co je cassandra write consistency level?
A: kolik replik musí potvrdit úspěšný zápis, aby se write request označil za dokončený
za potvrzený zápis se považuje zápis do memtable a logu

Q: co je read consistency level?
A: čte se z tolika replik, kolik je read consistency level
v případě nekonzistentních výsledků se bere ten s nejnovějším timestampem a může se provézt korekce ostatních

Q: jaké různé faktory v cassandře existují, co se týče replikace dat?
A: replication factor ~ kolik replik dat existuje?
read factor ~ kolik replik musí přečíst, než se odpověď potvrdí
write factor ~ kolik zápisů musí být potvrzených, abychom považovali dotaz za vyřízený?

Q: co je quorum v cassandře?
A: doporučený postup pro nastavování R a W faktorů na základě RF
oba se berou jako nadpoloviční většina RF, abychom měli zajištěnou silnou konzistenci

Q: jak cassandra handluje delete operace na HW úrovni?
A: staví hrobečky
ty se sloučí s daty při kompakci

Q: co je gossip?
A: nodes si mezi sebou šuškají, kdo je naživu a kdo umřel
každá zpráva má timestamp

Q: jak se u grafových databází jmenují schema-first a schema-later approaches?
A: TPG ~ typed property graph ~ schema first
LPG ~ labeled property graph ~ schema later

Q: v neo4j, kolik labelů může mít jeden node či vztah?
A: node může mín 0..n
každý vztah má právě jeden label

Q: jak jsou data uložená na disku v neo4j ?
A: spojový seznam vlastností
spojový seznam vztahů

Q: podporuje neo4j ACID vlastnosti?
A: ano

Q: co je posting list se seznamem pozic?
A: pro každý pojem / token se ukládá posting list = seznam dokumentů, které daný token obsahují
seznam pozic se přidává, aby se daly rychle vyhledat fráze

Q: co je TF-IDF?
jaké je ve srovnání s BM25?
A: search ranking kritérium
TF-IDF = TF / IDF
TF ~ frekvence v dokumentu
IDF ~ frekvence v celé prohledávané databázi
BM25 je vylepšení TF-IDF
normalizuje vůči délce dokumentu
oslabuje opakující se pojmy

Q: polystore vs multi-model
A: polystore ~ několik databází s jedním šéfem
multi-model ~ jedna dadtabáze staví několik modelů nad stejnými daty

Q: jaké je časté rozdělení v array datech?
A: sparse vs dense

Q: jak se v array based systémech distribuují data?
A: dělí se na chunky, přičemž chunky, které jsou vedle sebe jsou na zařízeních, která jsou vedle sebe
umožňuje paralelní zpracování

Q: jaké je dilemma při vybírání velikosti chunků v array databázích?
A: malé chunky mají příliš velký overhead
velké chunky nevyužívají plně paralelismu

Q: jaký může být chunk placement policy u array-based databází?
i. e. podle čeho se rozhodujeme, kam dát jaký chunk?
jaké přináší trade-offy?
A: hash-based ~ dobré rozložení práce, dlouhý přesun dat mezi dvěma sousedními chunky arraye
range-based ~ dobré pro range-scany, zachovává lokalitu, může docházet ke špatnému vyvážení
cost-aware/adaptive ~ dává k sobě blízko chunky, které často bývají využívány zaráz; těžké na údržbu

Q: overlaping v array-based databázích
A: často se dělá, že okraje chunku se ukládají v obou chuncích, které spolu sousedí
zvyšuje overhead
umožňuje plynulejší navázání
komplexnější na údržbu

Q: jak vyvinutý bývá typický array db dotazovací systém?
A: podobně jako SQL podporuje plánování a reordering operací

Q: IVF ve vektorových databázích ~ inverted file index
A: vektory jsou nejdříve shlukované do podobných skupin
když se vyhledává, tak se nejdříve podíváme do skupiny, kam daný vektor patří, a hledáme jen tam
vyšší rychlost, nižší přesnost

Q: HNSW (Hierarchical Navigable Small World) ve vektorové databázu
A: vektory se uspořádají do hierarchie
vyhledávání v log(n)
velmi rychlé, ale náročné na paměť

Q: PostGis
A: Postgressové rozšíření o GeoSpatial data

Q: R tree
A: stromová hierarchie v Geo-Datech
postupně chunkuje k sobě objekty, které jsou si blízko, do stromu

Q: jaké jsou základní poučky při migraci distribuovaných systémů?
A: rolling deployment ~ deployuyeme postupně jeden node po druhém
continuous velidation ~ děláme hodně sanity checků, jelikož se často může něco nečekaně zvrtnout
rollback planning ~ vždy počítáme s možností rollbacku ~ necháváme si zálohy

Q: jaké jsou možné (vzájemně výlučné) postupy při evoluci dat?
A: big bang ~ vše se zastaví, přemigruje a znova rozjede
blue-green ~ oba systémy jedou vedle sebe
dual write ~ aplikace dočasně zapisuje do staré i nové databáze
Change Data Capture ~ změny se replikují background workerem, který čte z logu

Q: co je stream enrichment?
A: přidáváme při migraci do dat nové informace
např. z lookup tabulky

Q: co je flyway?
A: migrační program, který se na verze schématu kouká jako na git repozitář

Q: debezium
A: systém implementující CDC

Q: apache NiFi
A: program, který umožňuje vizualizovat migrace dat pomocí grafového GUI

Q: backwards vs forward compatibility
A: backwards: nový konzument spapá stará data
forwards: starý konzument spapá nová data
vždy z pohledu konzumenta, ne z pohledu dat

Q: confluent schema registry
A: program, který ukládá schémata a zkoumá, která jsou kompatibilní se kterými

Q: jak se ve fulltext searchi nazývá vytvořený index s tím, ve kterém dokumentu je co a kde?
A: posting lists & position

Q: jaké jsou 2 základní algoritmy ve full-text searchi?
A: TF-IDF
BM25

Q: apache lucene
A: low-level indexovací a rankovací základ elastic searche

Q: 3 základní složky elastic stacku
A: ElasticSearch
Logstash ~ vcucávání dat
Kibana ~ sumarizace dat

Q: multikey index
A: index v mongo array-ích
vhodné např. pro tags array ~ najdi mi všechny výrobky s daným tagem

Q: cassandra keyspace
A: v cassandře logická jednotka, která určuje např. jak jsou data replikovaná
ekvivalent "database" v sql světě

Q: nástroje, které dovolují ukládat migrace schémat jako git repozitář
A: flyway, liquibase

Q: iceberg
A: versioned storage aplikace