====== Databáze ====== **Databáze** je organizovaná kolekce informací, která je navržena tak, aby k ní mohl počítačový program rychle přistupovat a manipulovat s ní. Data v databázi jsou typicky strukturována tak, aby modelovala aspekty reality (například dostupnost zboží ve skladu nebo profily uživatelů sociální sítě). Rozdíl mezi pojmy: * **Data:** Surové informace (např. "Jan Novák", "30"). * **Databáze:** Soubor těchto dat uložený na disku. * **DBMS:** Program, který umožňuje s databází pracovat (např. [[mysql|MySQL]], Oracle). ---- ====== Základní typy databází ====== Podle způsobu, jakým jsou data uvnitř organizována, dělíme databáze do dvou hlavních kategorií: ===== 1. Relační databáze (SQL) ===== Nejrozšířenější typ. Data jsou uložena v pevných **tabulkách** (řádky a sloupce). Tabulky jsou mezi sebou propojeny pomocí relací (vztahů). Pro práci s nimi se používá jazyk [[sql|SQL]]. * **Vhodné pro:** Účetnictví, bankovnictví, e-shopy (kde je klíčová přesnost a integrita). * **Příklady:** [[mysql|MySQL]], PostgreSQL, MS SQL Server, Oracle. ===== 2. Nereleleční databáze (NoSQL) ===== Umožňují ukládat nestrukturovaná nebo měnící se data. Místo tabulek používají dokumenty (JSON), grafy nebo dvojice klíč–hodnota. * **Vhodné pro:** Big Data, analýzu sociálních sítí, real-time zprávy. * **Příklady:** MongoDB (dokumentová), Redis (klíč–hodnota), Neo4j (grafová). [Image comparing SQL table structure vs NoSQL document structure] ---- ====== Klíčové vlastnosti databází ====== Pro zajištění kvality dat musí moderní databáze splňovat několik kritérií: * **Integrita:** Zajištění, že data jsou správná a konzistentní (např. nelze smazat zákazníka, který má aktivní objednávku). * **Bezpečnost:** Řízení přístupu – různí uživatelé mají různá práva (čtení, zápis, mazání). * **Škálovatelnost:** Schopnost databáze růst spolu s množstvím dat a počtem uživatelů. * **Transakčnost ([[acid|ACID]]):** Záruka, že operace proběhne buď celá, nebo vůbec (klíčové u převodů peněz). ---- ====== Architektura: Jak databáze funguje ====== Většina databází funguje v režimu **klient–server**: 1. **Klient:** Aplikace (např. váš prohlížeč nebo mobilní aplikace) pošle dotaz. 2. **DBMS (Server):** Přijme dotaz, najde data na disku, ověří oprávnění a data zpracuje. 3. **Odpověď:** Server pošle výsledná data zpět aplikaci. [Image of database client-server architecture diagram] ---- ====== Proč nepoužívat běžné soubory (Excel)? ====== Ačkoliv se Excel může zdát jako jednoduchá databáze, pro profesionální použití nestačí z těchto důvodů: * **Souběžný přístup:** Do databáze mohou zapisovat tisíce lidí naráz, v Excelu se soubor při otevření pro ostatní uzamkne. * **Objem dat:** Databáze pojmou miliardy řádků bez ztráty rychlosti (díky [[indexovani|indexování]]). * **Vztahy:** Propojení složitých dat (např. auto -> motor -> součástky) je v souborech nepraktické. ---- //Související pojmy: SQL, NoSQL, RDBMS, ACID, CRUD, MySQL, Indexování, CAP teorém.//