Mají tabulkové databáze v dnešní době smysl?

bck

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #105 kdy: 11. 09. 2018, 22:38:19 »
Dalsi zasadni problem byl v tom, ze uz pri navrhu systemu se muselo dobre pocitat s tim, jak se bude s daty pracovat a kolik jich bude. Nejednou jsem zazil situaci, kdy byl napriklad algoritmus pro nejakou uzaverku navrzen pro mnohem mensi mnozstvi dat, a pak se po par letech provozu ukazalo, ze vypocet trva den nebo dva.

To je divné, ty síťové a hierarchicke databáze maji predikovatelne odezvy a to jedine, co se s poctem dat zvysuje je prumerna doba vyhledani prvku v tom stromu a to se ridi podle tech znamych vzorecku s temi logaritmy.



Kit

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #106 kdy: 11. 09. 2018, 22:58:25 »
Dalsi zasadni problem byl v tom, ze uz pri navrhu systemu se muselo dobre pocitat s tim, jak se bude s daty pracovat a kolik jich bude. Nejednou jsem zazil situaci, kdy byl napriklad algoritmus pro nejakou uzaverku navrzen pro mnohem mensi mnozstvi dat, a pak se po par letech provozu ukazalo, ze vypocet trva den nebo dva.
To je divné, ty síťové a hierarchicke databáze maji predikovatelne odezvy a to jedine, co se s poctem dat zvysuje je prumerna doba vyhledani prvku v tom stromu a to se ridi podle tech znamych vzorecku s temi logaritmy.

Pokud máš v databázi uloženo třeba 1000 záznamů, tak zřejmě do té databáze bylo 1000 dotazů. Pro správně použitou relační databázi je to jen jeden dotaz. Navíc může být tím jedním dotazem provedena celá transakce.

agent

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #107 kdy: 11. 09. 2018, 23:03:13 »
Tenkrat predevsim programator vykon proste musel resit, byla to jeho primarni prace, nemoh splacat neco a spokojit se s tim, ze ono to nejak funguje. Ono to taky muselo fungovat pouzitelne rychle.
Tak nějak naivně předpokládám, že tohle je normální i dneska.
Neřeším a nesnažím se optimalizovat jen reporty, které vrací výsledky v jednotkách sekund. Pokud musím čekat minutu na normální report, je to určitě chyba a problém k řešení.
A pokud jde o nějaké dotazy ve vytíženější části aplikace, kde jich můžou běhat i desítky za sekundu, tak musí být odezva DB v milisekundách (ale to už je o návrhu, ne jen o optimalizaci). 

bck

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #108 kdy: 11. 09. 2018, 23:15:50 »
zde tak nějak nechápu, co jste chtěl sdělit. Jsou rel. databáze zlo, protože se musel hledat nějaký jiný způsob jejich programováni, aby to alespoň trochu fungovalo?
A ještě trochu jinak: tato diskuse je v podstatě stejná jako ta klasická "jaký má smysl C (nebo dokonce C++), když můžu psát v assembleru a bude to pořádně optimalizované?"

aha, tak teď si myslím, že začínám chápat to nedorozumnění.

Takže, nejde o tu rychlost, jde jen a pouze o tu modularitu. Z hlediska modularity je assembler a C rovnocené řešení, protože mohu s oběma stejně dobře rozdělit problém na menší části. Jestliže ale začnu míchat imperativní jazyky s deklarativním dotazováním  dat, nastane ten známý impedance missmatch a jeho výsledkem je, že mohu modularitu zapomenout.

Kdybych se pokusi dosáhnout modularitu za pomoci RDBMS prostředků (tedy s deklarativním SQL jazykem), tak pak bych do sebemnší funkce zapsal nějaký select-statement. Taková funkce by formálně splňovala ten information hiding princip, prakticky je to ale nepoužitelné. Taková funkce může bý samozřejmě použita jakkoliv - tedy v nějaké smyčce se 100 tisic voláni. A v tu chvíli je to pomalé, nepoužitelné a tím jsme u té rychlosti , která zdánlivě zapříčiní ten problém s tou modularitou - ve skutečnosti je to ta SQL.

Kit

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #109 kdy: 12. 09. 2018, 00:02:43 »
Kdybych se pokusi dosáhnout modularitu za pomoci RDBMS prostředků (tedy s deklarativním SQL jazykem), tak pak bych do sebemnší funkce zapsal nějaký select-statement. Taková funkce by formálně splňovala ten information hiding princip, prakticky je to ale nepoužitelné. Taková funkce může bý samozřejmě použita jakkoliv - tedy v nějaké smyčce se 100 tisic voláni. A v tu chvíli je to pomalé, nepoužitelné a tím jsme u té rychlosti , která zdánlivě zapříčiní ten problém s tou modularitou - ve skutečnosti je to ta SQL.

Takže pokud v aplikaci chci tu funkci zavolat v cyklu 100000×, tak jsem nepochopil, jak se s relační databází pracuje. Musím zavolat jinou funkci, která provede jen jeden db dotaz na těch 100000 záznamů s případnou agregací.

Bohužel se k té "jiné funkci" mnoho vývojářů nedopracuje. Místo pochopení SQL pak hledají řešení v NoSQL.


bck

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #110 kdy: 12. 09. 2018, 00:06:31 »

Tipoval bych, že Vám ani nevadí relační model, jako SQL.

Přesně.

Na stranu druhou - tento hard code přístup měl hodně strmou křivku učení,

to teď nevím co přesně myslíte, ale já jsem se těch 5 funkcí, co čtou a manipulují ta data naučil za 5 minut a od té doby to používám.

ale musel jste počkat 2-3 dny, možná týden, než Vám programátor napsal report.

tak tu dobu jsem už nezažil, za mne už byly ty reporty součástí nějaké aplikace. Ale je pravda, že tak do roku 1975 to tak bylo.


To je jeden z důvodů proč vzniklo SQL - efektivitu nikdo až tak moc neřešil, ale uživatelé přes terminál mohli mít data během několika minut.

já vím, ze tohle se vykládá a my to nyní také zákazníkům vyprávíme, že mají tu možnost. Ale z vlastní zkušenosti vím, zrovna tak jako někteří diskutující zde, že to není tak horké.

Jasně, dnes jsou ty RDBMS to jediné, s čím je možné k zákazníkovi přijít. Přesto nechápu, jak mohli inženýři dovolit, aby se tak rozmohlo.

Zlatovlaska

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #111 kdy: 12. 09. 2018, 01:19:45 »
To je jeden z důvodů proč vzniklo SQL - efektivitu nikdo až tak moc neřešil, ale uživatelé přes terminál mohli mít data během několika minut./quote]

Hnidopich NOTE.

SQL vzniklo v IBM jako nahrada za konkurencni dotazovaci jazyk QUEL od Stonebrakera (autor postgresu). SQL = SeQUEL to QUEL. Ten nakonec ve svych databazich nahradil quel sqlkem ne proto, ze bylo lepsi, ale ze bylo pouzivanejsi. To jen diky tomu, ze za nim stala IBM.

Doporucuju shlidnout nejaky video kde to Stonebraker vysvetluje. Treba jeho turing award speech.

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #112 kdy: 12. 09. 2018, 05:36:53 »

aha, tak teď si myslím, že začínám chápat to nedorozumnění.

Takže, nejde o tu rychlost, jde jen a pouze o tu modularitu. Z hlediska modularity je assembler a C rovnocené řešení, protože mohu s oběma stejně dobře rozdělit problém na menší části. Jestliže ale začnu míchat imperativní jazyky s deklarativním dotazováním  dat, nastane ten známý impedance missmatch a jeho výsledkem je, že mohu modularitu zapomenout.

Kdybych se pokusi dosáhnout modularitu za pomoci RDBMS prostředků (tedy s deklarativním SQL jazykem), tak pak bych do sebemnší funkce zapsal nějaký select-statement. Taková funkce by formálně splňovala ten information hiding princip, prakticky je to ale nepoužitelné. Taková funkce může bý samozřejmě použita jakkoliv - tedy v nějaké smyčce se 100 tisic voláni. A v tu chvíli je to pomalé, nepoužitelné a tím jsme u té rychlosti , která zdánlivě zapříčiní ten problém s tou modularitou - ve skutečnosti je to ta SQL.

Jasně, a to je přesně to, co byste neměl v SQL dělat - tam platí, co můžete udělat jednou hromadnou operací, tak byste měl udělat jednou hromadnou operací. Pokud byste chtěl zapouzdřit nějaké dotazy, tak od toho tu jsou pohledy. Modularita v SQL db pro přístup v databázi se nedá udělat na aplikační straně funkcemi.

Porušení tohoto pravidla vede k tomu, že uživatelé mají pocit, že relační db jsou pomalé - už od dob COBOLu - a v každé best practices k SQL db se to dočtete na prvním místě. Tak jak v COBOLu, v IMS budu muset psát jiným stylem (což mi ani nezbyde, protože tam mám jiné vyjadřovací možnosti), tak v SQL se zase píše jiným způsobem než v těchto databázích. To je opravdu diskuze, která se vede od dob COBOLu a pro to, abyste mohl efektivně s SQL pracovat, tak musíte pochopit, že existují hromadné operace, a pohledy. Pokud to pochopíte, tak ok, pokud ne, tak pak vlastně tu databázi používáte tím nejhorším možným způsobem.

A i když ji už používáte tím nejhorším možným způsobem - pokud se použijí prepared statements a máte indexy, tak i při tom ISAM přístupu se dostanete k časům pod 1ms, což si myslím, že na těch starých mašinách jste neměli. Jenomže, pokud čtu 1000 řádků po jednom, tak jsem možná na 100ms, možná na vteřině. Pokud to udělám hromadnou operací, tak jsem na 1-10ms. Samozřejmě záleží jestli ještě do toho mám síťový traffic nebo nemám. Mám zákazníka u kterého reporty trvají minuty, bo jsou napsány funkcionálně - což je to nejhorší, co může být. Když je napíšu čistě, tak trvají několik málo vteřin - protože optimalizátor dostane prostor k optimalizaci. Ale tohle je blbost těch programátorů, kteří ignorovali fakt, že už nedělají v ISAM db, ale v Oracle.

Každá technologie má něco, co musíte respektovat, a pokud to nechcete nebo neumíte, tak to nepoužívejte. Excel je super, ale když ho začnu ohýbat na databázi, tak je to zoufale pomalé. A opačně - multidimenzionální reporting se mi dobře udělá v Excelu a relační databázi je to oser.


Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #113 kdy: 12. 09. 2018, 05:45:39 »

SQL vzniklo v IBM jako nahrada za konkurencni dotazovaci jazyk QUEL od Stonebrakera (autor postgresu). SQL = SeQUEL to QUEL. Ten nakonec ve svych databazich nahradil quel sqlkem ne proto, ze bylo lepsi, ale ze bylo pouzivanejsi. To jen diky tomu, ze za nim stala IBM.

Doporucuju shlidnout nejaky video kde to Stonebraker vysvetluje. Treba jeho turing award speech.

To jste asi úplně nepochopil. SQL a QUEL vznikalo paralelně. Nicméně QUEL vznikal na Berkeley univerzitě a vycházel z matematického zápisu, a SQL bylo cíleno na vojenskou sféru a bezpečnost, a vycházelo z angličtiny. Hned od začátku měl Quel lepší optimalizátor než DB2, Oracle a začátkem 80 let se Ingres masivně používala. Nicméně trh převálcoval Oracle - a už v druhé půli 80let se do Ingresu dopsal překladač z SQL do Quelu.

To, co rozhodlo, byl byznys Oracle - a Oracle vydělal na tom, že za poloviční cenu dodával, to co IBM. Nedokážu posoudit, ale myslím si, že určitou roli hrála i čitelnost pro běžného uživatele - přeci jen je rozdíl mezi zjednodušenou angličtinou a matematickým zápisem.
« Poslední změna: 12. 09. 2018, 05:51:51 od Pavel Stěhule »

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #114 kdy: 12. 09. 2018, 05:50:00 »
Jasně, dnes jsou ty RDBMS to jediné, s čím je možné k zákazníkovi přijít. Přesto nechápu, jak mohli inženýři dovolit, aby se tak rozmohlo.

Protože, když se to používá správně, tak je to rychlé. Navíc je to variabilnější. Potřebuji cokoliv z db, pokud mám ODBC, ADO, BDE, připojím se z libovolného klienta - Excel, Access, libovolná aplikace a udělám, co potřebuji. Vzpomínám na doby, kdy když jsme chtěli udělat import dat do systému, tak nám dodavatel nabízel speciální moduly za 10K dolarů. S databází, ke které máte alespoň ODBC driver, máte data.

jirik66

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #115 kdy: 12. 09. 2018, 07:23:17 »
Není lepší nástroj pro práci se složitě strukturovanými daty velkých objemů než relační databáze :-)

Radovan.

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #116 kdy: 12. 09. 2018, 07:28:34 »
Mám zákazníka u kterého reporty trvají minuty, bo jsou napsány funkcionálně - což je to nejhorší, co může být.
Registr vozidel? ;D

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #117 kdy: 12. 09. 2018, 07:57:04 »
Mám zákazníka u kterého reporty trvají minuty, bo jsou napsány funkcionálně - což je to nejhorší, co může být.
Registr vozidel? ;D
Registr vozidel to není :)

j

Re:Maji tabulkove databaze v dnesni dobe smysl?
« Odpověď #118 kdy: 12. 09. 2018, 08:31:49 »
Tenkrat predevsim programator vykon proste musel resit, byla to jeho primarni prace, nemoh splacat neco a spokojit se s tim, ze ono to nejak funguje. Ono to taky muselo fungovat pouzitelne rychle.
Tak nějak naivně předpokládám, že tohle je normální i dneska.
...
Je to jedna z veci ktery pravidelne resim ... takze predpoklad je mylny. V nekterych pripadech sem schopnej jen zasahama do struktury dat zrychlit nektery operace o 3 rady. Cemuz nerikam optimalizace, to je prasecina tvurce. On to totiz ten dobytek na strane dodavatele, pokud vubec, tak otestuje na databazi o 10 zaznamech, a ani ve snu ho nenapadne, ze ta databaze tech zaznamu muze mit taky treba desitky milionu.

Znas Svijany? Ten pivovar? Ti si za miliony nechali napsat zadavatko pro vydej piva ... protoze jejich uzasnej ERP system nestihal na HW za miliony vytvaret neco tako primitivniho jako doklady vydeju. Takze oni v prubehu dne vlastne netusili, kolik toho aktualne maji, protoze do stavu skladu se to prenaselo az pres noc.

...tam platí, co můžete udělat jednou hromadnou operací, tak byste měl udělat jednou hromadnou operací. ...
A proto to spousta vsemoznych patlalu nedela. Moh bych ukazat desitky funci v ruznych aplikacich ktery nastavujou nejaky parametr na zaznamech, a delaji to ... po jednom zaznamu. A kdyz to nekdo stopne, tak to pekne po jednom rollbackuji. Takze to trva a trva a trva. Typicky to pak vypada zhruba tak, ze zamestnanci chodi za administratorem na tema "uz zas potrebuju spustit tuhle pitomost" a admin ma napsany nejaky query, ktery udela totez, jen za desetitisicinu casu.

Jeden priklad za vsechny, karta zbozi ma jako jeden z parametru novou cenu s platnosti od. System ma funkci na prepsani tyhle ceny (pokud uz plati) do aktualni ceny produktu. Ta funce je schopna pri desitkach tisic produktu bezet i nekolik hodin. Nacte si totiz vzdy jeden zaznam, ten aktualizuje a tak porad dokola. Update na vse do databaze dobehne v radu nekolika sekund.

j

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #119 kdy: 12. 09. 2018, 08:34:02 »
Edit: Jeste jsem zapomel podoknouti, ze ona funkce na ceny si zamkne vsechny karty zbozi, takze se tech par hodin neda v dotycne aplikaci vlastne vubec nic delat.