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.

Klientský portál pro vodárenské společnosti

V reakci na novou legislativu v energetice, která klade významné požadavky na pravidelné informování o spotřebě tepla a teplé vody, přinášíme klientský portál navržený speciálně pro energetické společnosti.

Chci vědět víc

Zákaznický portál pro leasingové společnosti

Poznejte náš portál pro leasingové společnosti a půjčovny strojů a aut, který zvyšuje efektivitu, zlepšuje zákaznickou spokojenost a otevírá nové obchodní příležitosti.

Chci vědět víc

Klientský portál pro dealery v zemědělské, komunální a stavební technice

Správa objednávek a komunikace s dealery mohou být náročné, pokud nemáte správné nástroje. Náš klientský portál pro dealery je navržen tak, aby zjednodušil a zefektivnil tyto procesy.

Chci vědět víc

B2B portál pro výrobní firmy a velkoobchody

Objevte, jak náš B2B portál pro výrobní firmy může zefektivnit vaše obchodní procesy a posílit vztahy se zákazníky. Nabízíme vynikající poprodejní servis, automatizované notifikace, rychlé řešení reklamací a personalizované služby.

Chci vědět víc

Klientský portál pro energetické společnosti: reakce na novelu v energetice

V reakci na novou legislativu v energetice, která klade významné požadavky na pravidelné informování o spotřebě tepla a teplé vody, přinášíme klientský portál navržený speciálně pro energetické společnosti.

Chci vědět víc