Zdravím, zkoumám v článku zmíněnou databázi Monetdb a SciteDb. SciteDb zřejmě nevyužiju, i když kdo ví, každopádně to je trochu odlišná filosofie.
Ale co Monetdb? Když čtu dokumentaci, vypadá to jako běžná SQL databáze. Pracuje se pomocí SQL, v podstatě to lze asi používat bez učení, kdož zná třeba PostgreSQL.
Chápu to dobře, že základní rozdíl třeba oproti PostgreSQl je ukryt pod kapotou? A velice zjednodušeně řečeno, pokud používám převážně SELECT a případně INSERT, bude na velké databáze vhodnější Monetdb, zatímco pokud používám často UPDATE, pak je asi lepší zůstat u PostgreSQL ?
V podstatě asi ano, ale je to složitější - záleží na tom jaké dotazy nad tím spouštíte.
PostgreSQL je výborná na OLTP zátěž, tj. spousta malý transakcí - operace nad jednotlivými řádky (nebo malým počtem řádků), ke kterým se typicky přístupuje přes PK.
Lze ho samozřejmě použít i na DWH/DSS zátěž, tj. dotazy pracující s velkým počtem řádků najednou - typicky třeba měsíční uzávěrka, joiny velkých tabulek, agregace apod. Má to ale tu nevýhodu že PostgreSQL je "row store" tj. řádky jsou uloženy pohromadě a i když čtete jenom jeden sloupec tak se musí načíst celý řádek.
MonetDB je "column store" což je výhodné právě pro DWH/DSS zátěž, ale při OLTP s tím budete mít výkonnostní problém (hlavně při modifikacích).
Díky. Už chápu, klíčová slova jsou OLAP versus OLTP :-)
Překvapilo mne, že se vývojář nemusí nic učit, aby přešel třeba z PostgreSQl na Monetdb. Inu, je to stále SQL databáze.
Takže kdybych uvažoval o nějaké NoSQL databázi kvůli rychlosti nad obrovským množstvím dat (což se uvádí jako důvod užití těchto databází), pak je na zváženou použít nějakou SQL databázi s OLAP ukládáním dat.
SQL je stejné, ale zbytek je dost odlišný - i když třeba na úrovni ETL nástrojů se rozdíly stírají - extrémně záleží na velikosti analyzovaných dat - MonetDB je částečně paměťová databáze - je velice rychlý v případě, že se Vám data vejdou do RAM - pak může být stejně rychlý jako Cčkový program - tedy, klidně o dva řády rychlejší než PostgreSQL na stejném hw.
Pokud se nevejdete do RAM, tak zrychlení klesá zhruba o řád - nicméně stále budete mít jednodušší hromadné nalévání. Sloupcových, případně paměťových SQL databází je víc - a mezi nimi jsou podstatně větší rozdíly než např. mezi MySQL a PostgreSQL.
NoSQL databáze se mohou hodit v případě ultra velkých dat (TB) - kdy můžete díky map/reduce redistribuovat zpracování dat mezi větší množství serverů.