Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Zabanovaný Anonymní Troll 28. 03. 2020, 23:34:04

Název: NoSql document databaze
Přispěvatel: Zabanovaný Anonymní Troll 28. 03. 2020, 23:34:04
Mam dotaz na vsechny mistni no-typed-language a no-sql fandy. Muze mi nekdo z vas vysvetlit, proc, kdyz mam potrebu ukladat ve sve aplikaci rovnez i data typu "document", bych mel pouzit NoSql databazi namisto klsicke Postgres, kde si document-like data muzu strcit do sloupce s formatem JSON? Jdou nad tim normalne delat queries, muzu si jednotlive libovolne vnorene atributy toho JSONu dokonce i indexovat, pak si ten column muzu i v ORM namapovat na prislusnou tridy. Tak proc bych na to pouzil NoSQL databazi, kdyz muzu pouzit klasicke kombo ORM+SQL, a muzu pak ve sve databazi pouzivat jak relacni data, tak i document data, podle potreby.
Název: Re:NoSql document databaze
Přispěvatel: BoneFlute 28. 03. 2020, 23:41:15
1. NoSQL vznikly v době, kdy podpora pro JSON a XML sloupce a dotazování nad ním nebyly ještě tak rozšířené jak stále nejsou nyní.

2. NoSQL mají (obvykle) dobré vlastnosti co se replikace týče.
Název: Re:NoSql document databaze
Přispěvatel: Filip Jirsák 28. 03. 2020, 23:55:52
PostgreSQL budete třeba těžko provozovat v režimu „repliky po celém světě, a dokud vidím n/2+1 repliky, v pohodě funguju“. Nad PostgreSQL musíte ručně stavět indexy. Partitioning a dotazování přes víc serverů také v PostgreSQL nejdou dělat úplně snadno.

Pokud potřebuju v databázi ukládat dokumenty, proč bych se mořil s nějakým SQL nebo dokonce ORM?
Název: Re:NoSql document databaze
Přispěvatel: Zabanovaný Anonymní Troll 29. 03. 2020, 00:32:30
1. PostgreSQL budete třeba těžko provozovat v režimu „repliky po celém světě, a dokud vidím n/2+1 repliky, v pohodě funguju“.


2. Nad PostgreSQL musíte ručně stavět indexy.

3. Partitioning a dotazování přes víc serverů také v PostgreSQL nejdou dělat úplně snadno.

4. Pokud potřebuju v databázi ukládat dokumenty, proč bych se mořil s nějakým SQL nebo dokonce ORM?

1. Proc by mi nemel nejaka replika relacni databaze bezet? To prece neni vubec nromalni stav. Vam uz se nekdy na produkci snad stalo, ze vam z niceho nic nebezela replika Oraclu? A to jste na to nadaval, ze to tak je? Databaze ma byt schopna bezet NONSTOP. Takze tuhle vyhodu NoSql neberu, nevim co to je za usecase.

2. Nemusite si delat klidne zadne indexy :-) Date je tam jen kdyz budetep potrebovat. Ale ok, tohle beru, je to vice prace.

3. Podobne jako bod c. 1 - naco?

4. Protoze uz mate projekt kde mate nakonfigurovane ORM? Na to bych vam rekl proc bych se najednou jeste k tomu moril s NoSQL jenom proto ze potrebuju ukladat json a vyrabel k tomu dalsi konfiguraci.
Název: Re:NoSql document databaze
Přispěvatel: alex6bbc 29. 03. 2020, 01:53:04
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Název: Re:NoSql document databaze
Přispěvatel: Zabanovaný Anonymní Troll 29. 03. 2020, 03:01:26
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.

blablabla.
Název: Re:NoSql document databaze
Přispěvatel: Jiří Havel 29. 03. 2020, 09:57:54
1. Proc by mi nemel nejaka replika relacni databaze bezet? To prece neni vubec nromalni stav. Vam uz se nekdy na produkci snad stalo, ze vam z niceho nic nebezela replika Oraclu? A to jste na to nadaval, ze to tak je? Databaze ma byt schopna bezet NONSTOP. Takze tuhle vyhodu NoSql neberu, nevim co to je za usecase.
Protože spadla, indiáni vytrhali kabely, nebo nějaký jiný neplánovaný průser. Úplně normální stav, jen se děje zřídka.

A ve chvíli, kdy celý systém celý běží i ve chvíli kdy pár strojů ne, mám jako bonus i možnost ty stroje udržovat, aktualizovat a podobně bez jakéhokoliv viditelného výpadku. Tohle se u vás v korporátu nepovažuje za normální?
Název: Re:NoSql document databaze
Přispěvatel: Zabanovaný Anonymní Troll 29. 03. 2020, 11:39:08
1. Proc by mi nemel nejaka replika relacni databaze bezet? To prece neni vubec nromalni stav. Vam uz se nekdy na produkci snad stalo, ze vam z niceho nic nebezela replika Oraclu? A to jste na to nadaval, ze to tak je? Databaze ma byt schopna bezet NONSTOP. Takze tuhle vyhodu NoSql neberu, nevim co to je za usecase.
Protože spadla, indiáni vytrhali kabely, nebo nějaký jiný neplánovaný průser. Úplně normální stav, jen se děje zřídka.

A ve chvíli, kdy celý systém celý běží i ve chvíli kdy pár strojů ne, mám jako bonus i možnost ty stroje udržovat, aktualizovat a podobně bez jakéhokoliv viditelného výpadku. Tohle se u vás v korporátu nepovažuje za normální?

1. Tak presmerujete trafic na jinou repliku na jinem stroji
2. Nebo rozjedete svoji relacni databazi v Cloudu a nemusite se uz o udrzovani stroju starat vubec
3. A pokud pouzijete NoSQL abyste mel vyhodu kterou popisujete, tak musite prejit KOMPLETNE NA NOSQL, protoze system vam porad nebude fungovat, kdyz nejste schopni se o nej postarat kvuli relacnim databazim, ikdyz jich mate jen trochu. Proste bud tak, a nebo tak, a nic mezitim.

Takze jeste jednou:

Naco NoSQL???
Název: Re:NoSql document databaze
Přispěvatel: Pavel Tišnovský 29. 03. 2020, 14:47:32
Chápu správně, že ten dotaz je na porovnání databáze s ACID (řekněme tedy RDBMS dnes typicky založené na SQL) a dokumentových databází? Asi nejkratší odpověď bude, že databáze s ACID garantují jiné dvě vlastnosti z CAP teorému, než dokumentové databáze - konzistence vs. dostupnost.
Název: Re:NoSql document databaze
Přispěvatel: qelurg 29. 03. 2020, 16:54:46
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Název: Re:NoSql document databaze
Přispěvatel: Johnny 29. 03. 2020, 17:34:44
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?
Název: Re:NoSql document databaze
Přispěvatel: alex6bbc 29. 03. 2020, 17:53:58
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?

no samozrejme :-)

tazatelovi neni jasne, ze muze pouzit jakoukoliv technologii, rozplyval se tam nad sql db a nechapal pouziti no_sql db.
akorat tazatelovi neni jasne, ze to zavisi na situaci jaka technologie je vhodna, klidne lze mit data v RAM, nebo nacistat soubory.
Název: Re:NoSql document databaze
Přispěvatel: Miroslav Šilhavý 29. 03. 2020, 18:48:17
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?

no samozrejme :-)

Ne, neměla. Každá databáze má svá specifika, svůj vlastní dialekt a je jinak silná v jiných operacích.
Když použijete ORM nebo jiný způsob zuniverzálnění práce s daty, připravíte se o největší sílu databází.

Pokud děláte malou aplikaci s malými daty, stojí za to používat ORM a neřešit to.
Kdykoliv děláte něco většího, je to už koule u nohy a nikdy nic nevyladíte.
Název: Re:NoSql document databaze
Přispěvatel: Johnny 29. 03. 2020, 19:33:44
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?

no samozrejme :-)

Ne, neměla. Každá databáze má svá specifika, svůj vlastní dialekt a je jinak silná v jiných operacích.
Když použijete ORM nebo jiný způsob zuniverzálnění práce s daty, připravíte se o největší sílu databází.

Pokud děláte malou aplikaci s malými daty, stojí za to používat ORM a neřešit to.
Kdykoliv děláte něco většího, je to už koule u nohy a nikdy nic nevyladíte.
Ale měla, měla. Já jsem ochoten uznat, že nějaká specifika, neboli nějaké takové rozdíly jsou např. mezi db typu key/value vs. relační db vs. grafovou db, (případně relační vs. objektovou, tam má ta odlišnost i teoretický základ), ale i tak jsem to myslel trochu jinak.
Ve chvíli, kdy relační databáze umožní uložit libovolný dokument (json) do jednoho sloupce, tak v tom okamžiku se na ni můžu dívat jako implementaci dokumentové databáze, a v tomto ohledu jsou ekvivalentní v tom smyslu, že nemůžu říct, která je vhodnější, nebo není. Prostě jsou na tom stejně. Pochopitelně jedna implementace bude rychlejší v tom, jedna pomalejší v onom, ale jako koncept umí totéž. Ale proč bych kvůli změně měl přepisovat aplikaci?

Příklad - nejblíž té univerzálnosti má podle mě GraphQL, ne ORM, a jaká je tam databáze je pak jedno.
Název: Re:NoSql document databaze
Přispěvatel: Miroslav Šilhavý 29. 03. 2020, 20:44:50
Ale měla, měla. Já jsem ochoten uznat, že nějaká specifika, neboli nějaké takové rozdíly jsou např. mezi db typu key/value vs. relační db vs. grafovou db, (případně relační vs. objektovou, tam má ta odlišnost i teoretický základ), ale i tak jsem to myslel trochu jinak.
Ve chvíli, kdy relační databáze umožní uložit libovolný dokument (json) do jednoho sloupce, tak v tom okamžiku se na ni můžu dívat jako implementaci dokumentové databáze, a v tomto ohledu jsou ekvivalentní v tom smyslu, že nemůžu říct, která je vhodnější, nebo není. Prostě jsou na tom stejně. Pochopitelně jedna implementace bude rychlejší v tom, jedna pomalejší v onom, ale jako koncept umí totéž. Ale proč bych kvůli změně měl přepisovat aplikaci?

Příklad - nejblíž té univerzálnosti má podle mě GraphQL, ne ORM, a jaká je tam databáze je pak jedno.

Uznávám, pokud nevyžadujete relační funkce, tak se to dá zuniverzálnit.
Neumím si představit situaci, kdy potřebujete ukládat dokument a zároveň nepotřebujete relační funkce, ale možné to je. Např. mít jedno spojení na relační databázi (a využívat specifické vlastnosti), a nezávislé spojení na získání dokumentu (a to může být univerzální).

Já jsem spíš (asi off topic) komentoval dnešní snahy o ORM, která databáze výkonově degraduje v podstatě na úroveň dBase nebo FoxPro (a dohání se to rostoucím výkonem hardware).
Název: Re:NoSql document databaze
Přispěvatel: qelurg 29. 03. 2020, 21:35:43
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?
Jestli je to filosofická otazka, tak se filosoficky ptam, a proc by na tom melo nezalezet? Jakakoliv netrivialni aplikace a reseni stejne pouziva konkretni vlastnosti konkretni databaze a jejich vymena je netrivialni.
Název: Re:NoSql document databaze
Přispěvatel: qelurg 29. 03. 2020, 21:37:21
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?

no samozrejme :-)

Ne, neměla. Každá databáze má svá specifika, svůj vlastní dialekt a je jinak silná v jiných operacích.
Když použijete ORM nebo jiný způsob zuniverzálnění práce s daty, připravíte se o největší sílu databází.

Pokud děláte malou aplikaci s malými daty, stojí za to používat ORM a neřešit to.
Kdykoliv děláte něco většího, je to už koule u nohy a nikdy nic nevyladíte.

Souhlas.
Název: Re:NoSql document databaze
Přispěvatel: Johnny 29. 03. 2020, 21:49:33
volba technologie je vec vhodnosti, pouzijte technologii co se vam hodi.
klidne si drzte data v RAMce.
Spravna odpoved.
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?
Jestli je to filosofická otazka, tak se filosoficky ptam, a proc by na tom melo nezalezet? Jakakoliv netrivialni aplikace a reseni stejne pouziva konkretni vlastnosti konkretni databaze a jejich vymena je netrivialni.
A bavíme se o tom, jestli takové aplikace existují (jistě ano), nebo o tom, jestli to v takovém případě dělají správně? (imho nedělají).
Název: Re:NoSql document databaze
Přispěvatel: Filip Jirsák 29. 03. 2020, 21:52:22
Neměla by být ale databázová vrstva spíš od aplikace oddělená tak, aby naopak nezáleželo na tom, jakou databázi použiju?
Pokud „databází“ myslíte to, že má být jedno, jestli to bude SQL relační databáze, dokumenová databáze, grafová databáze, XML databáze nebo souborový systém, pak to rozhodně jedno není. Pokud vám tohle je jedno, pak nejspíš žádnou databázi nepotřebujete…

Ve chvíli, kdy relační databáze umožní uložit libovolný dokument (json) do jednoho sloupce, tak v tom okamžiku se na ni můžu dívat jako implementaci dokumentové databáze, a v tomto ohledu jsou ekvivalentní v tom smyslu, že nemůžu říct, která je vhodnější, nebo není. Prostě jsou na tom stejně. Pochopitelně jedna implementace bude rychlejší v tom, jedna pomalejší v onom, ale jako koncept umí totéž. Ale proč bych kvůli změně měl přepisovat aplikaci?
Auto, letadlo i loď jako koncepty také umí totéž – dopravovat náklad z místa na místo. Jenže když začnete vyvíjet s autem, skončíte nakonec s tím, že budete i tu loď a letadlo tahat po zemi.

Myslím, že se na to totiž díváte z opačné strany. Pro aplikaci není důležité, co databáze umožňuje, ale co neumožňuje.Tomu, co neumožňuje, se budete v aplikaci snažit vyhnout. A tím se vaše aplikace přizpůsobí konkrétní databázové technologii – protože bude obcházet to, v čem je slabá, a využívat toho, v čem je silná. Takže klidně můžete ukládat dokumenty do PostgreSQL, ale nezískáte tím žádnou výhodu relační databáze, ale přijdete o výhody dokumentové databáze.