Az adatbázis egy absztrakció az operációs rendszer fájlrendszere felett, amely megkönnyíti a fejlesztők számára olyan alkalmazások készítését, amelyek tartós adatokat hoznak létre, olvasnak, frissítenek és törölnek.
- Miért van szükség adatbázisokra?
- Relációs adatbázisok
- A Python webes alkalmazások leggyakoribb adatbázisai
- PostgreSQL adatbázis
- MySQL adatbázis
- Az adatbázishoz való csatlakozás Pythonnal
- Objekt-relációs leképezés
- Az adatbázisok harmadik féltől származó szolgáltatásai
- SQL-források
- Általános adatbázis-források
- Databases learning checklist
Miért van szükség adatbázisokra?
A webes alkalmazások magas szinten adatokat tárolnak, és azokat a felhasználók számára hasznos módon mutatják be. Például a Google adatokat tárol az utakról, és útbaigazítást ad, hogy az egyik helyről a másikra eljusson az ember vezetéssel aMaps alkalmazáson keresztül. A vezetési útvonalak azért lehetségesek, mert az adatok strukturált formában vannak tárolva.
Az adatbázisok megbízhatóvá és gyorsan teszik a strukturált tárolást. Emellett mentális keretet adnak az adatok mentésének és lekérdezésének módjára, ahelyett, hogy minden alkalommal, amikor új alkalmazást készítünk, ki kell találnunk, mit kezdjünk az adatokkal.
Relációs adatbázisok
A Python webfejlesztésben leggyakrabban használt adatbázis-tárolási absztrakció a relációs táblák halmazai. Az alternatív tárolási absztrakciókat a NoSQL oldalon ismertetjük.
A relációs adatbázisok táblák sorozatában tárolják az adatokat. A táblák közötti kapcsolatokat idegen kulcsokként határozzák meg. Az idegen kulcs egy relációs tábla egyik sorából egy másik táblára való egyedi hivatkozás, amely lehet ugyanaz a tábla, de leggyakrabban egy másik tábla.
Az adatbázisok tárolási megvalósításai különböző összetettségűek. Az SQLite, a Pythonhoz mellékelt adatbázis egyetlen fájlt hoz létre az összes adathoz adatbázisonként.Más adatbázisok, mint például a PostgreSQL, a MySQL, az Oracle és a Microsoft SQL Server bonyolultabb perzisztencia sémákkal rendelkeznek, miközben további fejlett funkciókat kínálnak, amelyek hasznosak a webes alkalmazások adattárolásához. Ezek a fejlett funkciók többek között a következőket foglalják magukban:
- adatreplikáció a master adatbázis és egy vagy több csak olvasható slave-instances között
- fejlett oszloptípusok, amelyek hatékonyan tárolják a félig strukturált adatokat, mint például a JavaScript Object Notation (JSON)
- sharding, amely lehetővé teszi több adatbázis horizontális skálázását, amelyek mindegyike író-olvasó példányként szolgál, az adatkonzisztencia késleltetésének árán
- figyelés, statisztikák és egyéb hasznos futásidejű információk az adatbázis sémáiról és tábláiról
A webes alkalmazások tipikusan egyetlen adatbázis-példánnyal indulnak, mint például a PostgreSQL, egy egyszerű sémával. Idővel az adatbázis sémája összetettebb struktúrává fejlődik a sémamigrációk és a fejlett funkciók, mint például a replikáció, a megosztás és a felügyelet egyre hasznosabbá válnak, ahogy az alkalmazásfelhasználók igényei alapján nő az adatbázis kihasználtsága.
A Python webes alkalmazások leggyakoribb adatbázisai
A PostgreSQL és aMySQL a két legelterjedtebb nyílt forráskódú adatbázis a Python webes alkalmazások adatainak tárolására.
A SQLite egy olyan adatbázis, amelyet egyetlen fájlban tárolnak a lemezen. Az SQLite be van építve a Pythonba, de egyszerre csak egyetlen kapcsolat általi elérésre készült. Ezért erősen ajánlott, hogy ne futtasson egy produktív webalkalmazást SQLite-tel.
PostgreSQL adatbázis
A PostgreSQL az ajánlott relációs adatbázis a Python webalkalmazásokkal való munkához. A PostgreSQL funkciókészlete, aktív fejlesztése és stabilitása hozzájárul ahhoz, hogy ma a weben élő alkalmazások millióinak backendjeként használják.
Tudjon meg többet a PostgreSQL Pythonnal való használatáról aPostgreSQL oldalon.
MySQL adatbázis
A MySQL egy másik életképes nyílt forráskódú adatbázis implementáció Pythonalkalmazásokhoz. A MySQL kezdeti tanulási görbéje valamivel könnyebb, mint aPostgreSQL-é, de nem olyan funkciógazdag.
Tudjon meg többet a MySQL-támogatású Python-alkalmazásokról a dedikáltMySQL oldalon.
Az adatbázishoz való csatlakozás Pythonnal
A relációs adatbázisokkal való munkához Python segítségével kódkönyvtárat kell használni. A relációs adatbázisokhoz a leggyakrabban használt könyvtárak a következők:
-
psycopg2(forráskód)a PostgreSQL-hez.
-
MySQLdb(forráskód)a MySQL-hez. Vegye figyelembe, hogy ennek az illesztőprogramnak a fejlesztése többnyire befagyasztva van, ígyaz alternatív illesztőprogramok értékelése bölcs dolog, haMySQL-t használ backendként.
-
cx_Oracle forOracle Database (forráskód).Az Oracle 2017-ben áthelyezte aziropen forráskódú illesztőprogram kódját a SourceForge-ról a GitHub-ra.
A Python 2.7+-ban beépített SQLite támogatás van, ezért külön könyvtárra nincs szükség. Egyszerűen “import sqlite3”, hogy elkezdje a kapcsolódást ezzel az egyetlen fájl alapú adatbázissal.
Objekt-relációs leképezés
Az objektum-relációs leképezők (ORM) lehetővé teszik a fejlesztők számára, hogy SQL-lekérdezések helyett Python kód írásával érjenek el adatokat a backendről. Minden webalkalmazási keretrendszer másképp kezeli az ORM-ek integrálását. Az objektum-relációs leképezőkről (ORM-ek) egy egész oldal szól, amelyet érdemes elolvasni, hogy megismerje ezt a témát.
Az adatbázisok harmadik féltől származó szolgáltatásai
Néhány vállalat üzemeltet skálázható adatbázis-kiszolgálókat hosztolt szolgáltatásként.A hosztolt adatbázisok a szolgáltatótól függően gyakran automatikus biztonsági mentést és helyreállítást,szigorított biztonsági konfigurációkat és könnyű vertikális skálázást biztosítanak.
-
Az Amazon Relational Database Service (RDS)előre konfigurált MySQL és PostgreSQL példányokat biztosít. A példányok a tárolási és teljesítményigények alapján nagyobb vagy kisebb konfigurációkra skálázhatók.
-
A Google Cloud SQL egy olyan szolgáltatás, amely kezelt, mentett, replikált és automatikusan javított MySQL példányokkal rendelkezik. A CloudSQL integrálódik a Google App Engine-be, de önállóan is használható.
-
A BitCan mind MySQL, mind MongoDB hosztolt adatbázisokat kínál kiterjedt mentési szolgáltatásokkal.
-
AzElephantSQL egy szoftver-az-a-szolgáltatást nyújtó cég, amely PostgreSQL adatbázisokat hosztol, és kezeli a szerverkonfigurációt, a mentéseket és az adatkapcsolatokat az Amazon Web Services példányok tetején.
SQL-források
Az adatbázisokkal való interakció fő módjaként egy objektum-relációs leképező (ORM) használatát tervezheti, de ettől függetlenül meg kell tanulnia az SQL alapjait a sémák létrehozásához és az ORM által generált SQL-kód megértéséhez. A következő források segíthetnek az SQL elsajátításában, ha korábban még sosem használta.
-
A Select Star SQL egy interaktív könyv az SQL megtanulásához. Nagyon ajánlott még akkor is, ha úgy érzi, hogy csak objektum-relációs leképezéssel fog dolgozni a projektjeiben, mert sosem tudhatja, mikor kell majd beleugrania az SQL-be, hogy javítsa egy generált lekérdezés lassú teljesítményét.
-
A kezdő SQL-kalauz jó munkát végez az SQL utasításokban használt főbb kulcsszavak, például a
SELECT
,WHERE
,FROM
,UPDATE
ésDELETE
magyarázatával. -
Az SQL oktatókönyv megtanítja az SQL alapjait, amelyek az összes főbb relációs adatbázis-implementációban használhatók.
-
Life of a SQL queryMagyarázza, hogy mi történik fogalmilag és technikailag az adatbázisban, amikor egy SQL-lekérdezést futtatunk. A szerző a PostgreSQL-t használja példaadatbázisként, és az SQL szintaxisát használja végig.
-
A Probably Incomplete, Comprehensive Guide to the Many Different Ways to JOIN Tables in SQLelaborates on the one of the trickiest parts of writing SQL statementsthat bridge one or more tables: the
JOIN
. -
A jobb SQL megírása egy rövid kódstílusozási útmutató a lekérdezések könnyebb olvashatóságának érdekében.
-
A SQL Intermediate egy olyan, az alapokon túlmutató oktatóanyag, amely azUSA Consumer Financial Protection Bureau nyílt adatait használja példaként a PostgreSQL-ben történő számolásra, lekérdezésre és nézetek használatára.
Általános adatbázis-források
-
How does a relational database work?Ez egy részletes, hosszan tartó bejegyzés a rendezésről, keresésről, összevonásról és más műveletekről, amelyeket gyakran természetesnek veszünk, amikor egy olyan bevált relációs adatbázist használunk, mint a PostgreSQL.
-
Az Adatbázisok 101 nagyszerű áttekintést ad a főbb relációs adatbázis fogalmakról, amely bevezetésként még a nem fejlesztők számára is releváns.
-
A kezdők öt hibája az adatbázisokkal való munka soránmagyarázza, miért nem szabad képeket tárolni adatbázisokban, valamint miért kell óvatosnak lenni a séma normalizálásával.
-
ADB-Engines rangsorolja a legnépszerűbb adatbázis-kezelő rendszereket.
-
ADB Weekly egy heti összefoglaló általános adatbázis-cikkekből és forrásokból.
-
Designing Highly Scalable Database Architecturescovers horizontal and vertical scaling, replication and caching inrelational database architectures.
-
Online migrations at scaleis a great read is on breaking down the complexity of a database schemamigration for an operational database. A szerző csapata által alkalmazott megközelítés egy 4 lépésből álló kettős írási minta volt, amellyel gondosan fejlesztették az előfizetések adatainak tárolási módját, hogy egy új, hatékonyabb tárolási modellre tudjanak áttérni.
-
A one size fits all database doesn’t fit anyoneexplains Amazon Web Services’ specific rationale for having so many typeof relational and non-relational databases on its platform but the articleis also a good overview of various database models and their use cases.
-
A SQL 43 éves – íme 8 ok, amiért ma is használjuk – felsorolja, miért használja az SQL-t szinte minden fejlesztő, még akkor is, amikor a nyelv közeledik az ötvenedik évfordulójához.
-
Az SQL-kulcsok mélységébenegy nagyszerű magyarázatot ad arra, hogy mik azok az elsődleges kulcsok és hogyan kell használni őket.
-
Egy adathalmaz feltárása SQL-benegy jó példa arra, hogy az SQL önmagában hogyan használható adatelemzésre. Ez az oktatóanyag Spotify-adatokat használ, hogy bemutassa, hogyan lehet kinyerni azt, amit egy adathalmazból szeretne megtudni.
-
Az adatbázisok integrációs tesztelési stratégiái egy olyan nehéz témát fed le, amely minden valós projektben felmerül.
-
A GitLab a január 31-én bekövetkezett adatbázis-kiesésről készített utólagos beszámolót, hogy átlátható legyen az ügyfelek számára, és segítsen más fejlesztőcsapatoknak megtanulni, hogyan cseszték el az adatbázis-rendszerüket, majd hogyan találták meg a helyreállítás módját.
-
Asynchronous Python and DatabasesEgy mélyreható cikk arról, hogy miért nem használható számos Python adatbázis-illesztőprogram módosítás nélkül a blokkoló és az aszinkron eseménymodellek közötti különbségek miatt. Mindenképpen érdemes elolvasni, haWebSockets-et használ a Tornado vagy a gevent segítségével.
-
PostgreSQL vs. MS SQL Server oneperspective on the differences between the two database servers from adata analyst.
Databases learning checklist
-
Install PostgreSQL on your server. Feltételezve, hogy Ubuntu fut
sudo apt-get install postgresql
. -
Győződjön meg róla, hogy a psycopg2 könyvtár szerepel az alkalmazás függőségei között.
-
Konfigurálja a webes alkalmazást, hogy csatlakozzon a PostgreSQL példányhoz.
-
Hozzon létre modelleket az ORM-ben, akár a Django beépített ORM-jével, akár aSQLAlchemy-vel Flaskkal.
-
Elkészítse az adatbázis tábláit, vagy szinkronizálja az ORM modelleket a PostgreSQL-instanciával, ha ORM-et használ.
-
Elkezdje az adatok létrehozását, olvasását, frissítését és törlését az adatbázisban a webalkalmazásából.
Kezdje el az adatok létrehozását, olvasását, frissítését és törlését az adatbázisban.