Vlákno názorů k článku Používání indexů v PostgreSQL: krátce a pro začátečníky od Skalimil Vuk - Zdravím, zkoumám v článku zmíněnou databázi Monetdb a...

  • Článek je starý, nové názory již nelze přidávat.
  • 4. 9. 2012 19:27

    Skalimil Vuk (neregistrovaný)

    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 ?

  • 4. 9. 2012 19:51

    Tomáš Vondra

    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).

  • 4. 9. 2012 22:50

    Skalimil Vuk (neregistrovaný)

    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.

  • 4. 9. 2012 23:34

    Pavel Stěhule

    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ů.