Databáze je abstrakce nad souborovým systémem operačního systému, která vývojářům usnadňuje vytváření aplikací, které vytvářejí, čtou, aktualizujía mažou trvalá data.
Proč jsou databáze nutné?
Na vysoké úrovni webové aplikace ukládají data a prezentují je uživatelům vhodným způsobem. Například společnost Google ukládá data o silnicích a poskytujesměry, jak se dostat z jednoho místa na druhé jízdou prostřednictvím aplikaceMapy. Pokyny k jízdě jsoumožné, protože data jsou uložena ve strukturovaném formátu.
Databáze umožňují strukturované ukládání spolehlivé a rychlé. Dávají vám také mentální rámec pro to, jak by se data měla ukládat a načítat, místo toho, abyste museli při každém vytváření novéaplikace vymýšlet, co s daty dělat.
Relační databáze
Abstrakce databázového úložiště nejčastěji používaná při vývoji webových aplikací v jazyce Pythonje sada relačních tabulek. Alternativní abstrakce ukládání dat jsou vysvětlenyna stránce NoSQL.
Relační databáze ukládají data do řady tabulek. Vzájemné vazby mezi tabulkami jsou specifikovány jako cizí klíče. Cizí klíč je jedinečný odkaz z jednoho řádku relační tabulky na jiný řádek tabulky, což může být stejná tabulka, ale nejčastěji je to jiná tabulka.
Implementace ukládání dat v databázích se liší složitostí. SQLite, databáze obsažená v jazyce Python, vytváří jediný soubor pro všechna data pro každou databázi. další databáze, jako je PostgreSQL,MySQL, Oracle a Microsoft SQL Server, mají složitější schémata perzistence a zároveň nabízejí další pokročilé funkce, které jsou užitečné pro ukládání dat webových aplikací. Mezi tyto pokročilé funkce patří mimo jiné:
- replikace dat mezi hlavní databází a jednou nebo více podřízenými instancemi pouze pro čtení
- pokročilé typy sloupců, které mohou efektivně ukládat polostrukturovaná data, například JavaScript Object Notation (JSON)
- sharding, které umožňuje horizontální škálování více databází, které slouží jako instance pro čtení a zápis za cenu latence v datové konzistenci
- monitorování, statistik a dalších užitečných informací o běhu databázových schémat a tabulek
Typicky webové aplikace začínají s jednou instancí databáze, jako je PostgreSQL s jednoduchým schématem. Postupem času se databázové schéma vyvíjí do složitější struktury pomocí migrace schémat a pokročilé funkce, jako je replikace, sharding a monitorování, se stávají užitečnějšími, protože využití databáze se zvyšuje na základě potřeb uživatelů aplikace.
Nejběžnější databáze pro webové aplikace pro Python
PostgreSQL aMySQL jsou dvě nejběžnější open sourcedbáze pro ukládání dat webových aplikací pro Python.
SQLite je databáze, která je uložena v jednom souboru na disku. SQLite je zabudována do jazyka Python, ale je vytvořena pouze pro přístup pomocí jediného připojení v daném okamžiku. Proto se důrazně nedoporučuje provozovat produkční webové aplikace s SQLite.
Databáze PostgreSQL
PostgreSQL je doporučená relační databáze pro práci s webovými aplikacemi Python. Sada funkcí, aktivní vývoj a stabilita PostgreSQL přispívají k tomu, že se dnes používá jako backend pro miliony aplikací na webu.
Další informace o používání PostgreSQL s Pythonem najdete na stráncePostgreSQL.
Databáze MySQL
MySQL je další životaschopnou implementací open source databáze pro aplikace v Pythonu. MySQL má o něco snazší počáteční křivku učení nežPostgreSQL, ale není tak bohatá na funkce.
O aplikacích pro Python s podporou MySQL se dozvíte na stránce věnovanéMySQL.
Připojení k databázi pomocí Pythonu
Chcete-li pracovat s relační databází pomocí Pythonu, musíte použít knihovnu kódu. Nejběžnější knihovny pro relační databáze jsou:
-
psycopg2(zdrojový kód)pro PostgreSQL.
-
MySQLdb(zdrojový kód)pro MySQL. Všimněte si, že vývoj tohoto ovladače je většinou zmrazen, takže pokud používáteMySQL jako backend, je vhodné posoudit alternativní ovladače.
-
cx_Oracle proOracle Database (zdrojový kód).Oracle v roce 2017 přesunul zdrojový kód ovladačeiropen ze SourceForge na GitHub.
PodporaSQLite je zabudována do Pythonu 2.7+, a proto není nutná samostatná knihovna. Stačí „importovat sqlite3“ a můžete začít spolupracovat sjedinou databází založenou na souborech.
Objektově-relační mapování
Objektově-relační mapovače (ORM) umožňují vývojářům přistupovat k datům ze zadní strany psaním kódu Pythonu namísto dotazů SQL. Každý webový aplikační framework řeší integraci ORM jinak. O objektově-relačním mapování(ORM) existuje celá stránka, kterou byste si měli přečíst, abyste se v tomto tématu zorientovali.
Služby třetích stran pro databáze
Řada společností provozuje škálovatelné databázové servery jako hostované služby.Hostované databáze mohou často poskytovat automatizované zálohování a obnovu,zpřísněné konfigurace zabezpečení a snadné vertikální škálování, v závislosti na poskytovateli.
-
Amazon Relational Database Service (RDS)poskytuje předem nakonfigurované instance MySQL a PostgreSQL. Instance lze škálovat na větší nebo menší konfigurace podle potřeb úložiště a výkonu.
-
Google Cloud SQL je služba se spravovanými, zálohovanými, replikovanými a automaticky opravovanými instancemi MySQL. CloudSQL se integruje se službou Google App Engine, ale lze ji používat i samostatně.
-
BitCan poskytuje hostované databáze MySQL i MongoDB s rozsáhlými zálohovacími službami.
-
ElephantSQL je společnost poskytující software jako službu, která hostuje databáze PostgreSQL a stará se o konfiguraci serverů, zálohování a datová připojení nad instancemi Amazon Web Services.
SQL zdroje
Možná plánujete používat objektově-relační mapovač (ORM)jako hlavní způsob interakce s databází, ale přesto byste se měli naučit základy jazyka SQL, abyste mohli vytvářet schémata a rozumět kódu SQLgenerovanému ORM. Následující zdroje vám pomohou zrychlit výuku jazyka SQL, pokud jste jej dosud nepoužívali.
-
Vybraná hvězda SQL je interaktivní kniha pro výuku jazyka SQL. Vřele ji doporučujeme, i když máte pocit, že budete pracovat pouze s objektově-relační mapou ve svých projektech, protože nikdy nevíte, kdy budete muset sáhnout do SQL, abyste zlepšili pomalý výkon generovaného dotazu.
-
Průvodce SQL pro začátečníkydobře vysvětluje hlavní klíčová slova používaná v příkazech SQLjako jsou
SELECT
,WHERE
,FROM
,UPDATE
aDELETE
. -
SQL Tutoriál učí základy jazyka SQL, které lze použít ve všech hlavních implementacích relačních databází.
-
Život dotazu SQLvysvětluje, co se děje po koncepční i technické stránce v databázi při spuštění dotazu SQL. Autor používáPostgreSQL jako příklad databáze a syntaxe SQLv celém příspěvku.
-
Pravděpodobně neúplný, komplexní průvodce mnoha různými způsoby spojování tabulek v SQLrozvádí jednu z nejobtížnějších částí psaní příkazů SQL, které spojují jednu nebo více tabulek:
JOIN
. -
Psaní lepšího SQLje stručný průvodce stylizací kódu, díky němuž budou vaše dotazy přehlednější.
-
SQL Intermediate je výukový kurz přesahující základy, který využívá otevřená data zUS Consumer Financial Protection Bureaujako příklady počítání, dotazování a používání pohledů v PostgreSQL.
Obecné databázové zdroje
-
Jak funguje relační databáze je podrobný dlouhý příspěvek o třídění, vyhledávání, slučování a dalších operacích, které často považujeme za samozřejmé při používání zavedené relační databáze, jako je PostgreSQL.
-
Databáze 101 poskytuje přehled hlavních pojmů relačních databází, který je vhodný i pro nevývojáře jako úvod.
-
Pět chyb, které dělají začátečníci při práci s databázemivysvětluje, proč byste neměli ukládat obrázky do databází, a také proč být opatrní při normalizaci schématu.
-
DB-Engines řadí nejpopulárnější systémy pro správu databází.
-
DB Weekly je týdenní přehled obecných článků a zdrojů o databázích.
-
Designing Highly Scalable Database Architecturesobsahuje horizontální a vertikální škálování, replikaci a ukládání do mezipaměti v relačních databázových architekturách.
-
Online migrace v měřítkuje skvělé čtení o rozčlenění složitých databázových schématamigrace pro provozní databáze. Přístup, který autorův tým použil, byl čtyřkrokový duální vzor zápisu, který pečlivě vyvinul způsob ukládání dat pro odběry, aby mohl přejít na nový, efektivnější model ukládání.
-
Jedna velikost pro všechny databáze se nehodí pro nikohovysvětluje specifické důvody společnosti Amazon Web Services, proč má na své platformě tolik typů relačních a nerelačních databází, ale článek je také dobrým přehledem různých databázových modelů a případů jejich použití.
-
SQL je 43 let stará – zde je 8 důvodů, proč ji používáme i dnesuvádí, proč SQL běžně používají téměř všichni vývojáři, i když se tento jazyk blíží k padesátému výročí.
-
SQL klíče do hloubkyposkytuje skvělé vysvětlení toho, co jsou to primární klíče a jak byste je měli používat.
-
Zkoumání datového souboru v SQLje dobrým příkladem toho, jak lze samotný SQL použít pro analýzu dat. Tento tutoriál využívá data Spotifya ukazuje, jak z datové sady získat to, co se chcete dozvědět.
-
Strategie testování integrace databázípokrývá obtížné téma, které se objevuje na každém reálném projektu.
-
GitLab poskytl svoupostmortem výpadku databáze 31. lednajako způsob, jak být transparentní pro zákazníky a pomoci ostatním vývojovýmtýmům dozvědět se, jak zpackali své databázové systémy a pak našli způsob, jakse zotavit.
-
Asynchronní Python a databázeje podrobný článek zabývající se tím, proč mnoho ovladačů databází v Pythonu nelzepoužít bez úprav kvůli rozdílům v blokačním versusasychronním modelu událostí. Rozhodně stojí za přečtení, pokud používáteWebSockets přes Tornado nebo gevent.
-
PostgreSQL vs. MS SQL Serverje jedním z pohledů na rozdíly mezi oběma databázovými servery od datového analytika.
Kontrolní seznam pro výuku databází
-
Instalace PostgreSQL na váš server. Předpokládáme, že jste použili Ubuntu run
sudo apt-get install postgresql
. -
Ujistěte se, že knihovna psycopg2 je v závislostech vašíaplikace.
-
Konfigurujte svou webovou aplikaci tak, aby se připojila k instanci PostgreSQL.
-
Vytvořte modely ve svém ORM, buď pomocí vestavěného ORM v Django, nebo pomocíSQLAlchemy s Flask.
-
Vytvořte své databázové tabulky nebo synchronizujte modely ORM s instancí PostgreSQL, pokud používáte ORM.
-
Začněte vytvářet, číst, aktualizovat a mazat data v databáziz vaší webové aplikace.
Vyhledávání dat v databázi.