Odebírat podcast.

Víte, jak vybrat vhodnou databázi a vyhnout se nejčastějším chybám?

Buďte vždy o krok před konkurencí, získejte přístup k celé sérii podcastů. Přihlaste se k odběru našeho newsletteru.

Nové technologické okénko je zde

Tentokrát si v našem technologickém okénku povídal CEO Pixape Radek Semančík a programátoři Vojtěch Seidler, Josef Štěpánek a Jan Chuchvalec o databázích, o jejich druzích i o tom, jak si vybrat tu ideální a jak nechybovat při jejím vytváření.

Co je to databáze?

Databáze, laicky řečeno, je jakási „excelovská tabulka“, do které aplikace ukládá strukturovaná data a může do ní kdykoliv sáhnout a znovu je použít. K těmto datům může patřit třeba seznam uživatelů, popř. cokoliv, co si uživatel může uložit přes webové rozhraní a následně znovu načíst. Patří sem ale i cokoliv, co aplikace ukládá skrze nějaký webový formulář.

Jaké jsou druhy databází?

Dnes jsou nejpoužívanější relační a nerelační databáze, ale mimo nich jsou tu i další. Jaké jsou?

Hierarchická databáze – v této databázi jsou data uspořádána ve stromově struktuře. Šlo o první druh databáze vůbec. Jeho nevýhodou však bylo, že podřízený záznam se mohl vztahovat jen k jednomu nadřízenému záznamu, otci.

Síťová databáze – tímto druhem databáze byla nahrazena hierarchická databáze. Oproti ní pak zde může mít jeden záznam více nadřízených záznamů, otců.

Relační databáze – tento druh databáze se řadí k tzv. SQL databázím, je tvořený pomocí jazyka SQL, a nahradil síťovou databázi. Dnes patří k nejpoužívanějším. Databáze je založená na tabulkách, kde řádky zpravidla chápeme jako záznamy, které pomocí některých sloupců (tzv. cizích klíčů) párujeme a jiných sloupců (tzv. primárních klíčů) jednoznačně identifikujeme. To umožňuje rychlou manipulaci a přístup k datům. Nejpoužívanější systémy pro relační databáze jsou MySQL, PostgreSQL, MariaDB, Microsoft SQL a Oracle.

Objektová databáze – tento typ databáze nepracuje s tabulkami jako relační databáze, ale umožňuje ukládat data v objektech, tzn. uložíte nějaký objekt a v tom objektu je objekt a v tom objektu je další objekt. Data se zde tedy seskupují do objektů.

Nerelační databáze – jsou to NoSQL databáze a na rozdíl od relačních databází zde neukládáte data do pevně definovaných tabulek, ale do nějakého pole objektů a poté se s nimi dále pracuje – můžete je zpracovat třeba do relační databáze. Tuto databázi lze využít třeba pro ukládání dat, které dále nepotřebujete propojovat, nebo pro ukládání dat, u kterých nevíte, jak budou vypadat. Jde tedy třeba o ukládání dat o návštěvnosti webu. To jsou zpravidla data, které dále nepotřebuji propojovat. Nepoužívají se zde SQL dotazy. Příklad NoSQL systému pro databáze je třeba MongoDB.

Jaký systém pro databáze je ideální?

Při výběru vždy záleží na tom, s jakým objemem dat chcete pracovat. Jestli budete pracovat s pár tisíci záznamů, pak stačí třeba i MySQL, ale jestli budete pracovat s milióny nebo miliardami záznamů, je třeba zvolit takovou databázi, která to zvládne. V takovém případě je totiž menší riziko, že databáze spadne a vy přijdete o data, jestli je nebudete mít zálohovaná.

Protože jsou však databáze často srovnatelné, je ještě zajímavější mezi nimi vybírat podle toho, co potřebujete a databáze to nativně podporuje.

Jaké jsou rozdíly mezi jednotlivými databázemi?

MySQL – jedná se o jednu z nejpoužívanějších databází, co se týče webových aplikací. Je zdarma a je součástí každého webhostingu.

PostgreSQL – tato databáze je oproti MySQL výkonnější – dokáže zpracovat mnohem větší objem dat. Tato databáze navíc nativně podporuje vyhledávání podle geolokace, tzn. data můžete filtrovat i podle nějakého rádiusu. Má též v sobě JSON field.

Oracle – je to podobně výkonná databáze jako PostgreSQL, ale jedná se však o placenou databázi.

Microsoft SQL – opět jde o podobně výkonnou databázi, jako je Oracle, ale je placená. Microsoft má však k databázi přidává balíčky různých nástrojů, které umožňuje pracovat s reporty. Pokud byste chtěli tedy vytvářet aplikaci, ze které potřebujete získávat reportové data, tato databáze je na to nejvhodnější.

Teradata – tato databáze dokáže pracovat až s miliardami záznamů, což je však v případě webových aplikací zpravidla nezajímavé a nepoužitelné.

MariaDB – patří též k těm nejpoužívanějším. Oproti ostatním má tu výhodu, že je jednodušší a snazší na údržbu.

MongoDB – je to NoSQL databáze, kterou můžete použít pro sběr polostrukturovaných dat, jež nemusíte dále propojovat nebo strukturovat s nějakými dalšími. Je vhodná třeba pro ukládání dat návštěvnosti webu apod.

Je dobré nakonec pak zmínit, že u klasických aplikací běžný uživatel rozdíly ve výkonnosti jednotlivých systémů nepozná, proto většina vývojářů skončí u MYSQL, PostgreSQL nebo u dnes velmi populární MariaDB.

Víte, jaké jsou nejčastější chyby při vytváření databází?

Nejčastější chybou u databáze jsou chybějící klíče (indexy). Když pak voláte na hlavní stránce, kam chodí stovky uživatelů, dotaz, který není zaindexovaný, zahltí to databází a ta spadne.

Další chybou jsou často nedostatky v cizích klíčích, díky kterým se vytváří vztahy mezi záznamy. Kvůli tomu pak nesedí data a není zajištěná konzistence.

Také se stává, že chybí primární klíče, tj. neexistuje sloupec, podle které by šlo zjistit, jak jdou záznamy po sobě. 

Chybou jsou též hesla uložená v plaintextu v databázi. Když by totiž kdokoliv takovou databázi ukradl, tak má automaticky přístupy ke všem heslům uživatelů. Protože pak má většina uživatelů zpravidla stejné heslo ke všem svým účtům (banky apod.), je pohroma na světě.

Dalším velký problémem je také databáze nezabezpečená proti tzv. útoku SQL injection. Tento útok napadá databázovou vrstvu vložením kódu přes neošetřený vstup. Tímto způsobem pak může útočník získat citlivá data (hesla, čísla kreditních karet nebo přihlašovací údaje vašich uživatelů), smazat data z databáze nebo ji jakkoliv upravit. Nejčastěji se k tomu používají dotazy typu SELECT, UPDATE, INSERT či DELETE a podmínky WHERE.

V moderních frameworcích naštěstí tento problém prakticky neexistuje, protože se o něj postará databázová vrstva. S tím vám pak rádi pomůžeme.

Chcete vědět více o databázích nebo rovnou potřebujete vývojářský tým? Ozvěte se nám.

Buďte vždy o krok před konkurencí

Odebírejte naše podcasty a objevte, proč nejčastěji aplikace neuspějí a jak tomu zabránit. Naservírujeme vám nejnovější přístupy i technologie, díky kterým budou vaše aplikace oblíbenější, ziskovější a budete s nimi mít méně starostí. Sledujte nás a uspějte na poli aplikací.


Buďte vždy o krok před konkurencí

Odebírejte naše podcasty a objevte, proč nejčastěji aplikace neuspějí a jak tomu zabránit. Naservírujeme vám nejnovější přístupy i technologie, díky kterým budou vaše aplikace oblíbenější, ziskovější a budete s nimi mít méně starostí. Sledujte nás a uspějte na poli aplikací.


Mohlo by se Vám líbit.

11 důvodů, proč si zamilujete Docker

Docker zrychluje přípravu, údržbu i aktualizaci serveru potřebného pro běh aplikace a pomáhá s jejím testováním a vývojem. Objevte více v novém podcastu.

Chci vědět víc

Víte, kdy použít pro běh aplikace hosting, virtuální server a kdy cloud?

Víte, kdy je nejvýhodnější použít na provoz aplikace hosting, kdy virtuální server a kdy cloud? V našem dalším podcastu se to dozvíte.

Chci vědět víc

7 výhod, proč při vývoji aplikace využít microservices!

S pomocí microservices zjednodušíte vývoj i správu aplikací a vytvoříte bezpečnější, stabilnější a na provoz levnější aplikace. Objevte jejich 7 výhod.

Chci vědět víc

8 tipů, jak zrychlit webovou aplikaci a nepřicházet o uživatele!

Pomalé webové nebo mobilní aplikace nejsou mezi uživateli oblíbené. Objevte 8 tipů, jak zrychlit vaši aplikaci. Nenechte si utéct další podcast.

Chci vědět víc

Automatické testování: jaké má výhody a použití

Automatické testování webových nebo mobilních aplikací vám může ušetřit čas i peníze při vývoji a kontrole aplikací. Zjistěte jeho druhy i ideální využití.

Chci vědět víc