Tietokanta on käyttöjärjestelmän tiedostojärjestelmän yläpuolella oleva abstraktio, jonka avulla kehittäjien on helpompi rakentaa sovelluksia, jotka luovat, lukevat, päivittävät ja poistavat pysyviä tietoja.
- Miksi tietokannat ovat tarpeellisia?
- Relaatiotietokannat
- Yleisimmät tietokannat Python-verkkosovelluksia varten
- PostgreSQL-tietokanta
- MySQL-tietokanta
- Yhteyden muodostaminen tietokantaan Pythonilla
- Objekti-relationaalinen kartoitus
- Tietokannan kolmannen osapuolen palvelut
- SQL-resurssit
- Yleisiä tietokantaresursseja
- Tietokantojen oppimisen tarkistuslista
Miksi tietokannat ovat tarpeellisia?
Korkealla tasolla web-sovellukset tallentavat dataa ja esittelevät sen käyttäjille tarkoituksenmukaisella tavalla. Esimerkiksi Google tallentaa tietoja teistä ja tarjoaaKartat-sovelluksen kautta ohjeita, joiden avulla pääsee paikasta toiseen ajamalla. Ajo-ohjeet ovat mahdollisia, koska tiedot on tallennettu strukturoidussa muodossa.
Tietokannat tekevät strukturoidusta tallennuksesta luotettavaa ja nopeaa. Ne antavat myös mentaaliset puitteet sille, miten tiedot tallennetaan ja haetaan, sen sijaan, että joudut miettimään, mitä tiedoilla tehdään joka kerta, kun rakennat uuden sovelluksen.
Relaatiotietokannat
Pythonin web-kehityksessä yleisimmin käytetty tietokantojen tallennusabstraktio on relaatiotaulukoiden joukot. Vaihtoehtoisia tallennusabstraktioita selitetään NoSQL-sivulla.
Relaatiotietokannat tallentavat tietoja sarjoihin taulukoita. Taulujen väliset yhteydet määritetään vierasavaimina. Vierasavain on ainutkertainen viittaus yhdestä relaatiotaulukon rivistä toiseen taulukon riviin, joka voi olla sama taulukko, mutta tavallisimmin eri taulukko.
Tietokantojen tallennustoteutukset vaihtelevat monimutkaisuudessaan. SQLite, Pythonin mukana tuleva tietokanta, luo yhden tiedoston kaikille tiedoille tietokantakohtaisesti.Muissa tietokannoissa, kuten PostgreSQL, MySQL, Oracle ja Microsoft SQL Server, on monimutkaisempia pysyvyysjärjestelmiä, mutta ne tarjoavat myös muita kehittyneitä ominaisuuksia, jotka ovat hyödyllisiä web-sovellusten tietojen tallennuksessa. Näihin kehittyneisiin ominaisuuksiin kuuluvat muun muassa seuraavat:
- tiedon replikointi master-tietokannan ja yhden tai useamman vain lukemiseen oikeutetun slave-instanssin välillä
- edistykselliset saraketyypit, joilla voidaan tehokkaasti tallentaa puolistrukturoitua dataa, kuten JavaScript Object Notation (JSON)
- sharding, joka mahdollistaa useiden tietokantojen horisontaalisen skaalautumisen, joista kukin toimii luku- ja kirjoitusinstanssina tietojen johdonmukaisuuden viiveen kustannuksella
- seuranta, tilastot ja muut hyödylliset ajoaikaiset tiedot tietokannan skeemoista ja taulukoista
Tyypillisesti web-sovellukset alkavat yhdellä tietokantainstanssilla, kuten PostgreSQL:llä, jossa on suoraviivainen skeema. Ajan mittaan tietokannan skeema kehittyy monimutkaisemmaksi rakenteeksi käyttämällä skeemasiirtoja ja edistyneempiä ominaisuuksia, kuten replikointia, hajauttamista ja seurantaa, tulee yhä hyödyllisemmäksi, kun tietokannan käyttö lisääntyy sovelluksenkäyttäjien tarpeiden perusteella.
Yleisimmät tietokannat Python-verkkosovelluksia varten
PostgreSQL jaMySQL ovat kaksi yleisintä avoimen lähdekoodin tietokantoja Python-verkkosovellusten tietojen tallentamiseen.
SQLite on tietokanta, joka tallennetaan yhteen tiedostoon levylle. SQLite on sisäänrakennettu Pythoniin, mutta se on rakennettu käytettäväksi vain yhdellä yhteydellä kerrallaan. Siksi on erittäin suositeltavaa olla ajamatta tuotantoverkkosovellusta SQLitellä.
PostgreSQL-tietokanta
PostgreSQL on suositeltava relaatiotietokanta Pythonverkkosovellusten kanssa työskentelyyn. PostgreSQL:n ominaisuuksien, aktiivisen kehityksen ja vakauden ansiosta sitä käytetään nykyään miljoonien web-sovellusten backendinä.
Lue lisää PostgreSQL:n käyttämisestä Pythonin kanssa PostgreSQL-sivulta.
MySQL-tietokanta
MySQL on toinen käyttökelpoinen avoimeen lähdekoodiin perustuva tietokantatoteutus Python-sovelluksia varten. MySQL:llä on hieman helpompi alkuvaiheen oppimiskäyrä kuinPostgreSQL:llä, mutta se ei ole yhtä monipuolinen ominaisuuksiltaan.
Tietoa Python-sovelluksista, joissa on MySQL-tietokanta taustalla, löydät erityiseltäMySQL-sivulta.
Yhteyden muodostaminen tietokantaan Pythonilla
Yhteyden muodostaminen tietokantaan Pythonilla
Käyttääksesi relaationaalista tietokantapohjaa Pythonilla sinun on hyödynnettävä koodikirjastoa. Yleisimmät kirjastot relaatiotietokantoja varten ovat:
-
psycopg2(lähdekoodi)PostgreSQL:lle.
-
MySQLdb(lähdekoodi)MySQL:lle. Huomaa, että tämän ajurin kehitys on enimmäkseen jäädytetty, joten vaihtoehtoisten ajureiden arviointi on viisasta, jos käytätMySQL:ää backendinä.
-
cx_Oracle forOracle Database (lähdekoodi).Oracle siirsiiropen lähdekoodin ajurikoodin SourceForgesta GitHubiin vuonna 2017.
SQLite-tuki on sisäänrakennettu Python 2.7+:n ja sen vuoksi erillistä kirjastokirjastojasitäe tarvita. Yksinkertaisesti ”import sqlite3” aloittaaksesi rajapinnan tämän yhden tiedostopohjaisen tietokannan kanssa.
Objekti-relationaalinen kartoitus
Objekti-relationaalisten kartoittajien (ORM) avulla kehittäjät voivat käyttää dataa abackendistä kirjoittamalla Python-koodia SQL-kyselyjen sijaan. Jokainen verkkosovelluskehys käsittelee ORM:ien integrointia eri tavalla. Object-relational mapping(ORMs) on kokonainen sivu, joka kannattaa lukea, jotta pääset perehtymään aiheeseen.
Tietokannan kolmannen osapuolen palvelut
Lukuiset yritykset ylläpitävät skaalautuvia tietokantapalvelimia isännöityinä palveluina.Isännöidyt tietokannat voivat usein tarjota automaattisia varmuuskopioita ja palautusta,tiukennettuja tietoturvamäärityksiä ja helppoa vertikaalista skaalautumista palveluntarjoajasta riippuen.
-
Amazon Relational Database Service (RDS)tarjoaa valmiiksi konfiguroituja MySQL- ja PostgreSQL-instansseja. Instanssit voidaan skaalata suuremmiksi tai pienemmiksi konfiguraatioiksi tallennus- ja suorituskykytarpeiden perusteella.
-
Google Cloud SQL on palvelu, jossa on hallinnoituja, varmuuskopioituja, replikoituja ja automaattisesti korjautuvia MySQL-instansseja. CloudSQL integroituu Google App Engineen, mutta sitä voi käyttää myös itsenäisesti.
-
BitCan tarjoaa sekä MySQL:n että MongoDB:n isännöityjä tietokantoja laajoine varmuuskopiointipalveluineen.
-
ElephantSQL on software-as-a-service-yritys, joka isännöi PostgreSQL-tietokantoja ja hoitaa palvelinkonfiguroinnin, varmuuskopioinninja datayhteydet Amazon Web Services -instanssien päällä.
SQL-resurssit
Voi olla, että aiot käyttää objekti-relaatiokartoittajaa (ORM) pääasiallisena tapanasi olla vuorovaikutuksessa tietokannan kanssa, mutta sinun pitäisi siltiopiskella SQL:n perusteet luodaksesi skeemoja ja ymmärtäksesi ORM:n tuottamaa SQL-koodia. Seuraavat resurssit voivat auttaa sinua pääsemään SQL:n tasolle, jos et ole koskaan aiemmin käyttänyt sitä.
-
Select Star SQL on interaktiivinen kirja SQL:n oppimiseen. Erittäin suositeltava, vaikka olisitkin sitä mieltä, että tulet työskentelemään projekteissasi vain olio-relationaalisen kartan kanssa, koska koskaan ei voi tietää, milloin sinun täytyy siirtyä SQL:ään parantaaksesi generoidun kyselyn hidasta suorituskykyä.
-
Aloittelijan opas SQL:äänselittää hyvin SQL-lausekkeissa käytettävät tärkeimmät avainsanat, kuten
SELECT
,WHERE
,FROM
,UPDATE
jaDELETE
. -
SQL-opas opettaa SQL:n perusteet, joita voidaan käyttää kaikissa tärkeimmissä relaatiotietokantojen toteutuksissa.
-
Life of a SQL queryselvittää, mitä tietokannassa tapahtuu sekä käsitteellisesti että teknisesti, kun SQL-kysely suoritetaan. Kirjoittaja käyttää esimerkkitietokantanaPostgreSQL:ää ja SQL-syntaksia kauttaaltaan.
-
A Probably Incomplete, Comprehensive Guide to the Many Different Ways to JOIN Tables in SQLelaboratorio käsittelee yhtä SQL-lauseiden kirjoittamisen hankalimmista osista, jotka yhdistävät yhtä tai useampaa taulukkoa toisiinsa:
JOIN
. -
Paremman SQL:n kirjoittaminenon lyhyt koodin muotoiluopas, jonka avulla voit tehdä kyselyistäsi helpommin luettavia.
-
SQL Intermediate on perusasioita pidemmälle menevä opetusohjelma, jossa käytetään avoimia tietojaUS:n kuluttajansuojavirastosta (Consumer Financial Protection Bureau, FTSB) esimerkkeinä PostgreSQL:ssä tapahtuvaan laskentaan, kyselyihin ja näkymien käyttöön.
Yleisiä tietokantaresursseja
-
Miten relaatiotietokanta toimii?on yksityiskohtainen pitkäluontoinen postaus lajittelusta, hausta, yhdistämisestä ja muistaoperaatioista, joita pidämme usein itsestäänselvyyksinä, kun käytämme vakiintunutta relaatiotietokantaa kuten PostgreSQL:ää.
-
Databases 101 antaa loistavan yleiskatsauksen tärkeimmistä relaatiotietokannan käsitteistä, joka on merkityksellinen johdantona myös muillekin kuin kehittäjille.
-
Five Mistakes Beginners Make When Working With Databasesexplines selittää, miksi kuvia ei kannata varastoida tietokantoihin sekä miksi kannattaa olla varovainen sen kanssa, miten normalisoit skeeman.
-
DB-Engines asettaa suosituimmat tietokantojen hallintajärjestelmät paremmuusjärjestykseen.
-
DB Weekly on viikoittainen yleisten tietokantaartikkelien ja -resurssien kooste.
-
Designing Highly Scalable Database Architectureskatsoo horisontaalista ja vertikaalista skaalautumista, replikointia ja välimuistitallennusta relaatiotietokanta-arkkitehtuureissa.
-
Online migrations at scaleon loistavaa luettavaa tietokantakaavion migraation monimutkaisuuden purkamisesta toiminnassa olevan tietokannan osalta. Lähestymistapa, jota kirjoittajan tiimi käytti, oli nelivaiheinen kaksoiskirjoitusmalli, jolla kehitettiin varovasti tapaa, jolla tilaustietoja tallennettiin, jotta voitiin siirtyä uuteen, tehokkaampaan tallennusmalliin.
-
A one size fits all database doesn’t fit anyoneexplains Amazon Web Services’in erityiset perustelut sille, että sen alustalla on niin monenlaisia relaationaalisia ja ei-relaationaalisia tietokantatyyppejä, mutta artikkeleissaon myös hyvä yleiskatsaus erilaisiin tietokantaaineistomalleihin ja niiden käyttötapauksiin.
-
SQL on 43 vuotta vanha – tässä 8 syytä, miksi käytämme sitä yhä tänä päivänä listaa, miksi lähes kaikki kehittäjät käyttävät SQL:ää yleisesti, vaikka kieli lähestyy 50-vuotispäiväänsä.
-
SQL-avaimet syvällisestiantaa hyvän selityksen siitä, mitä ensisijaiset avaimet ovat ja miten niitä tulisi käyttää.
-
Tietoaineiston tutkiminen SQL:lläon hyvä esimerkki siitä, miten pelkkää SQL:ää voidaan käyttää tietojen analysointiin. Tämä opetusohjelma käyttää Spotify-dataa näyttääkseen, miten poimitaan datajoukosta se, mitä halutaan oppia.
-
Tietokantojen integraatiotestausstrategiatkattaa vaikean aiheen, joka tulee esiin jokaisessa reaalimaailman projektissa.
-
GitLab tarjosi 31. tammikuuta tapahtuneen tietokantahäiriön postmortem-artikkelinsa ollakseen läpinäkyvä asiakkaille ja auttaakseen muita kehitystiimejä oppimaan, miten he mokasivat tietokantajärjestelmänsä ja löysivät sitten keinon toipua.
-
Asynkroninen Python ja tietokannaton perusteellinen artikkeli, joka käsittelee sitä, miksi monien Python-tietokanta-ajureiden käyttäminen ei ole mahdollista ilman muutoksia, johtuen eroista, joita on estävien vs. asynkronisten tapahtumamallien välillä. Ehdottomasti lukemisen arvoinen, jos käytätWebSocketsia Tornadon tai geventin kautta.
-
PostgreSQL vs. MS SQL Server on yksi näkökulma näiden kahden tietokantapalvelimen eroihin data-analyytikon toimesta.
Tietokantojen oppimisen tarkistuslista
-
Asenna PostgreSQL palvelimellesi. Olettaen, että valitsit Ubuntu run
sudo apt-get install postgresql
. -
Varmista, että psycopg2-kirjasto on sovelluksesi riippuvuuksissa.
-
Konfiguroi web-sovelluksesi niin, että se voi muodostaa yhteyden PostgreSQL-instanssiin.
-
Luo mallit ORM:ssäsi joko Djangon sisäänrakennetulla ORM:llä taiSQLAlchemyllä Flaskilla.
-
Kehitä tietokantataulusi tai synkronoi ORM-mallit PostgreSQL-instanssin kanssa, jos käytät ORM:ää.
-
Aloita tietojen luominen, lukeminen, päivittäminen ja poistaminen tietokantaan web-sovelluksestasi.