Názory ke článku Teoretický úvod do relačních databází
jen tak dál, pokračuj...
toto ještě vím, ale moc se těším na nové mnou neprobádané oblasti...
9. 11. 2007
Pokud se někdy hodláte databázím věnovat podrobněji, raději se nesnažte chápat relační databázi jako "relační protože jsou v ní vztahy". Nastudujte si napřed matematický pojem "relace" a až potom se vrhněte na relační databáze.
9. 11. 2007
Proc to vase schema vypada tak jak vypada. Argument typu, jde jen o ukazkove schema je spatny.
Cizi klic tam je proto, ze u takovhle databaze muze nastat celkem logicky pozadavek na zmenu jmena autora (treba jen malou) a v pripade ze by se jmeno ukladalo k logu mate o zabavu postarano. Takto zmenite jeden zaznam a zmena se promitne vsude. Dale vam spravne nastaveny cizi klic udrzuje konzistenci dat v databazi. Nestane se vam, ze maznete autora a zbydou po nem logy bez autora. Tohle pri mazani musite osetrit.
Kdyz jste u te relace, jaky vztah je mezi autorem a logem? To je dalsi vec, kterou byste mel rici. Z tabulky je patrne ze to bude 1:N tj, log muze mit prave jednoho autora, ale autor muze mit 0 vice logu.
Propojovani tabulek pres join zas tak tezke neni a hlavne vse zavisi na navrhu. Pokud ho zmatlate, nesmite se pak divit ze spojovani tabulek pripomina nocni muru.
Souhlasim s Bagrem.
Databáze není pouhým uložištěm dat. Je škoda, že většina lidí si pod pojmem databáze představí MySQL. Přestože hlavní náplní je právě ukládání dat, databáze poskytuje daleko širší možnosti. Pokud se posuneme o úroveň výše, můžeme v databázi mít velkou část aplikační logiky, která s daty pracuje (to je reprezentováno stored procedurami - Oracle PL/SQL, Microsoft T-SQL apod.). Výhodou je, že na vygenerování analytických výpočtů potřebujeme zpravidla zlomek času, než který bychom museli investovat na aplikačním nebo webovém serveru. Důvod je prostý, přenášíme na "klienta" (tlustý klient nebo jiný než databázový server) menší množství dat a zároveň nám databáze umožňuje pokročilé techniky cachování nejen dat, ale i prováděcích plánů dotazů (popisuje, jakým způsobem se budou tabulky prohledávat, spojovat atd.).
Proč používáme k ukládání dat databázi? Hlavně proto, že jsou poměrně jednoduché na přístup k datům, zachovávají referenční integritu dat (primární/cizí klíče, constraints, triggery), podporují transakční zpracování a jsou škálovatelné a bezpečné.
Pod škálovatelností si můžete představit dostupnost dat pro jiné systémy, ať už se jedná o jiné databáze (využívají propojení pomocí tzv. gateway) nebo vnitropodnikové aplikace (ERP, CRP a další buzzwords). Bezpečnost zajišťujeme třeba centrální autentizací uživatelů (např. přes LDAP) a širokým arzenálem podpůrných funkcí, jako je definování rolí, profilů, auditování nebo proprietárními řešeními konkrétních dodavatelů (viz odkazy) - Oracle nabízí Virtual Private Database (VPD), pro tvoření virtuálních databází pro uživatele, nebo Label Security.
Do bezpečnosti spadá samozřejmě i zálohování... u transakčních systémů je velice důležitá doba obnovy, tj. kolik času zabere zprovoznění databáze s daty (u velikosti ve stovkách GB/TB se počítá na hodiny/dny). Při on-line provozu 24/7 je kompletní zálohování databáze prakticky nemožné, proto je důležitá možnost přírustkových záloh. Samozřejmostí je exportování/importování velkého objemu dat v binární (nebo jinak komprimované) podobě. Textový soubor se sekvencí příkazů insert je použitelný možná u vás doma, ale v praxi na to můžete rychle zapomenout :-) kolik vám zabere importování jedné tabulky o šířce sloupce 200 bajtů, která obsahuje 200 mil. záznamů? (V praxi těch dat je samozřejmě mnohem víc.)
Už na začátku seriálu o relačních databázích, bychom si měli říci, že je potřeba rozlišovat server jako takový a uložená data. Jednoduše řečeno (opravdu hodně jednoduše), databáze je tvořena datovými soubory, které máme uloženy na disku (přesněji, diskovém poli). Databázový server je konkrétní instance, která k datům přistupuje. V prostředí Oracle, totiž může k datům přistupovat několik instancí (tzv. RAC, viz odkazy), čímž se zvyšuje výkon a zároveň bezpečnost (vypadne-li jedna instance, nahradí ji další, aniž to pocítí uživatel).
Přiznávám, že problematika databází není jednoduchá :-) proto bych seriál přejmenoval na "Teoretický úvod do SQL" a pokročilejší věci třeba nechal do dalšího seriálu. Komentář jsem napsal především proto, že nevidím rozdíl oproti jiným seriálům, které už na internetu vyšly.
Na závěr několik odkazů (CZ), aby jste si nemysleli, že kecám :-)
Bezpečnostní mechanismy databáze
http://www.oracle.com/global/cz/database/database_security_overview_cz3.pdf
Real Application Cluster (RAC)
http://www.oracle.com/global/cz/collateral/oracle_rac_web.pdf
9. 11. 2007
myslim, ze toto tvrzeni neni pravda:
"Databáze poskytuje rychlejší přístup k datům než soubory."
Spis bych rekl, ze to je obracene :-) Urcite toto neni nejaka podstatna vlastnost databazi.
To Bagr: Určitě souhlasím, ale pro běžné využívání DB není nutné pro normálního programátora znát RELAČNÍ ALGEBRU a TEORII RELACÍ. Však pro detailní pohled na věc je dobré znát vše.
9. 11. 2007
To stepan: souhlasim s tebou. Ale opakovani neni nikdo dost. Tak dalsi serial o databazich neuskodi.
Pro zacinajici programatory je tato forma vyhodnejsi. Dost lidi odrazi cist cely tutorial najednou, tak forma serialu je ctivejsi.
To honza: Máte 100% pravdu ani jsem se nezmínil o relacích 1:n,1:1,m:n ,bohůžel jsem na ně zapoměl. Ale pevně věřím, že většina čtenárů tento fakt zná :)
[seznam]Databáze poskytuje rychlejší přístup k datům než soubory.[/seznam]
K tomuhle bych se rád vyjádřil, protože to co dělá databáze databázemi je hlavně to, že mají nějaký pevný řád. Když do souboru uložíš data mezi značky s určitým významem (XML), rázem se ze souboru stává databáze.
Jinak bych šetřil s kritikou, zvlášť když se jedná o první článek. Ono je těžké najít kompromis mezi „čtivostí pro nezasvěcené" a „odborností".
Není to k články ale hodí se to sem :-) Potřebuju vědět, kolik znaků se mi maximálně vejde do typů jako TINYTEXT, TEXT popř VARCHAR? Jaké jsou maximální hodnoty? V dokumentaci jsem to neoběvil dík
To RobinHood: TINYTEXT 2na(8)-1 = 255
TEXT 2na(16)-1 = 65535 - dlouhej článek :smile1:
VARCHAR 1 až 255 znaků
To RobinHood: ak niekto neobjavil popis datových typov v dokumentácii znamená, že ju ani nečítal! http://dev.mysql.com/doc/refman/5.1/en/data-types.html
10. 11. 2007
Ten nadpis bych teda úplně změnil. Označit datábazi za úložiště dat a začít popisovat tabulky, to by tě teoretici hnali :) Asi by bylo vhodnější "Úvod do MySQL" nebo něco podobného.
12. 11. 2007
Takovy clanek je nahodou dobry pro kluky, kteri zacli s HTML strankami, pak potrebovali databazi (zvlastni ze MySQL) a navrhuji schema bez zkusenosti od oka. Postupne se dopracuji a doptaji nebo dohledaji k takovymto informacim. Videl jsem to u syna i u jinych.
Myslim, ze takovi kluci potrebuji strucne rychle vysvetleni, jak to udelat a za dva-tri dny dalsi dil serialu, aby mohli zkouset nebo pouzit dalsi veci.
Tempo moderni doby neni se neco naucit, ale oprasknout kus reseni, aby to rychle zaclo fungovat.
Pak uz se to "nejak" udela.
Dalsi svuj projekt uz udela s nabytymi zkusenostmi.
14. 11. 2007
xdrm píše:
myslim, ze toto tvrzeni neni pravda:
"Databáze poskytuje rychlejší přístup k datům než soubory."
Spis bych rekl, ze to je obracene :-) Urcite toto neni nejaka podstatna vlastnost databazi.
Tak pokud mohu mluvit ze zkušeností z praxe z poměrně velkého projektu...
Dříve byla používaná, ehm "databáze" ve formě souborů, měla řádově desítky tisíc záznamů. Nyní je používána opravdová databáze, která má řádově stvoky tisíc záznamů (trochu se to rozrostlo). Rozdíl je řádově v sekundách ve prospěch databáze i přes to že má víc jak 10x tolik záznamů. Myslím, že je jasné co je rychlejší...
18. 12. 2007
No, jelikoz vetsina databazi jsou fyzicky ulozena v souborech, tak asi tezko muze byt pristup do databaze rychlejsi nez pristup do souboru. Jenomze databazi netvori jenom ulozena data, ale take cache a indexy. S nimi je pristup k pozadovanym informacim radove rychlejsi a to hlavne proto, ze se minimalizuje cteni z disku a lepe vyuziva pamet. To, ze je mezi daty a aplikaci cache navic umoznuje sofistikovanejsi zamky na urovni treba jednoho zaznamu nebo stranky, kdezto kdyz se pristupuje primo k souboru, tak se zamyka cely soubor, coz ma zas negativni dopad na vykonost.
4. 2. 2008
To xdrm: musim striktne nesouhlasit. databaze se pouzivaji prave proto, ze jsou rychlejsi nez prace se soubory, je to opravdu jeden z hlavnich duvodu, tim dalsim je napriklad nesrovnatelny komfort pri zpracovavani dat. zpracovat data z databaze je snazsi nez data ze souboru...
10. 9. 2010
ja píše:
Takovy clanek je nahodou dobry pro kluky, kteri zacli s HTML strankami, pak potrebovali databazi (zvlastni ze MySQL) a navrhuji schema bez zkusenosti od oka. Postupne se dopracuji a doptaji nebo dohledaji k takovymto informacim. Videl jsem to u syna i u jinych.
Myslim, ze takovi kluci potrebuji strucne rychle vysvetleni, jak to udelat a za dva-tri dny dalsi dil serialu, aby mohli zkouset nebo pouzit dalsi veci.
Tempo moderni doby neni se neco naucit, ale oprasknout kus reseni, aby to rychle zaclo fungovat.
Pak uz se to "nejak" udela.
Dalsi svuj projekt uz udela s nabytymi zkusenostmi.
Tak to Ti nepreju, aby Ti podobni "kluci" spravovali auto nebo staveli barak...