O bază de date este o abstractizare peste sistemul de fișiere al unui sistem de operare care facilitează dezvoltatorilor construirea de aplicații care creează, citesc, actualizează și șterg date persistente.
- De ce sunt necesare bazele de date?
- Baze de date relaționale
- Baze de date cele mai comune pentru aplicațiile web Python
- Bază de date PostgreSQL
- Bază de date MySQL
- Conectarea la o bază de date cu Python
- Mapping obiectual-relațional
- Servicii terțe de baze de date
- Resurse SQL
- Resurse generale privind bazele de date
- Listă de verificare pentru învățarea bazelor de date
De ce sunt necesare bazele de date?
La un nivel înalt, aplicațiile web stochează date și le prezintă utilizatorilor într-un mod util. De exemplu, Google stochează date despre drumuri și oferădirecții pentru a ajunge dintr-o locație în alta cu mașina prin intermediul aplicațieiMaps. Indicațiile de conducere suntposibile deoarece datele sunt stocate într-un format structurat.
Bazele de date fac ca stocarea structurată să fie fiabilă și rapidă. Ele vă oferă, de asemenea, un cadru mental pentru modul în care datele ar trebui să fie salvate și recuperate, în loc să trebuiască să vă dați seama ce să faceți cu datele de fiecare dată când construiți o nouă aplicație.
Baze de date relaționale
Astracțiunea de stocare a bazelor de date cel mai frecvent utilizată în dezvoltarea web Pythoneste un set de tabele relaționale. Abstracțiile alternative de stocare sunt explicatepe pagina NoSQL.
Baze de date relaționale stochează datele într-o serie de tabele. Interconexiunileîntre tabele sunt specificate ca chei străine. O cheie străină este o referință unică de la un rând dintr-un tabel relațional la un alt rând dintr-un tabel, care poate fi același tabel, dar cel mai frecvent este un tabel diferit.
Implementarea stocării bazelor de date variază în complexitate. SQLite, o bază de dateinclusă cu Python, creează un singur fișier pentru toate datele pentru fiecare bază de date.Alte baze de date, cum ar fi PostgreSQL, MySQL, Oracle și Microsoft SQL Server au scheme de persistență mai complicate, oferind în același timp caracteristici avansate suplimentare care sunt utile pentru stocarea datelor aplicațiilor web. Aceste caracteristici avansate includ, dar nu se limitează la:
- replicarea datelor între o bază de date principală și una sau mai multe circumstanțe slave numai pentru citire
- tipuri avansate de coloane care pot stoca eficient date semistructurate, cum ar fi JavaScript Object Notation (JSON)
- sharding, care permite scalarea orizontală a mai multor baze de date care servesc fiecare ca instanțe de citire-scriere, cu prețul latenței în ceea ce privește consistența datelor
- monitorizare, statistici și alte informații utile în timpul execuției pentru schemele și tabelele bazei de date
În mod obișnuit, aplicațiile web încep cu o singură instanță de bază de date, cum ar fi PostgreSQL, cu o schemă simplă. În timp, schema bazei de date evoluează către o structură mai complexă folosind migrări de scheme, iar funcțiile avansate, cum ar fi replicarea, sharding-ul și monitorizarea, devin din ce în ce mai utile pe măsură ce utilizarea bazei de date crește în funcție de nevoile utilizatorilor aplicației.
Baze de date cele mai comune pentru aplicațiile web Python
PostgreSQL șiMySQL sunt două dintre cele mai comune baze de date cu sursă deschisă pentru stocarea datelor aplicațiilor web Python.
SQLite este o bază de date care este stocată într-un singur fișier pe disc. SQLite este încorporat în Python, dar este construit doar pentru accesarea de către o singură conexiune la un moment dat. Prin urmare, este foarte recomandat să nu executați o aplicație web de producție cu SQLite.
Bază de date PostgreSQL
PostgreSQL este baza de date relațională recomandată pentru lucrul cu aplicațiile web Python. Setul de caracteristici, dezvoltarea activă și stabilitatea PostgreSQLcontribuie la utilizarea sa ca backend pentru milioane de aplicații care trăiesc astăzi pe Web.
Aflați mai multe despre utilizarea PostgreSQL cu Python pe paginaPostgreSQL.
Bază de date MySQL
MySQL este o altă implementare viabilă de bază de date open source pentru aplicațiile Python. MySQL are o curbă de învățare inițială ceva mai ușoară decâtPostgreSQL, dar nu este la fel de bogată în funcții.
Descoperiți despre aplicațiile Python cu un MySQL susținut pe pagina dedicatăMySQL.
Conectarea la o bază de date cu Python
Pentru a lucra cu o bază de date relațională folosind Python, trebuie să folosiți o bibliotecă de cod. Cele mai comune biblioteci pentru baze de date relaționale sunt:
-
psycopg2(cod sursă)pentru PostgreSQL.
-
MySQLdb(cod sursă)pentru MySQL. Rețineți că dezvoltarea acestui driver este în mare parte înghețată, astfel încâtevaluarea unor drivere alternative este înțeleaptă dacă utilizațiMySQL ca backend.
-
cx_Oracle pentruOracle Database (cod sursă).Oracle a mutat codul sursă al driverului theiropen source de pe SourceForge pe GitHub în 2017.
Suportul SQLite este integrat în Python 2.7+ și, prin urmare, nu este necesară o bibliotecă separată. Pur și simplu „import sqlite3” pentru a începe interfațarea cu această bază de date bazată pe un singur fișier.
Mapping obiectual-relațional
Mapperii obiectual-relaționali (ORM) permit dezvoltatorilor să acceseze datele de la un backend prin scrierea de cod Python în loc de interogări SQL. Fiecare cadru de aplicații web se ocupă în mod diferit de integrarea ORM-urilor. Există o pagină întreagă despre maparea obiect-relațională(ORM) pe care ar trebui să o citiți pentru a vă familiariza cu acest subiect.
Servicii terțe de baze de date
Numeroase companii rulează servere de baze de date scalabile ca serviciu găzduit.Bazele de date găzduite pot oferi adesea copii de rezervă și recuperare automatizate,configurații de securitate mai stricte și scalare verticală ușoară, în funcție de furnizor.
-
Amazon Relational Database Service (RDS)oferă instanțe MySQL și PostgreSQL pre-configurate. Instanțele pot fi scalate în configurații mai mari sau mai mici în funcție de nevoile de stocare și performanță.
-
Google Cloud SQL este un serviciucu instanțe MySQL gestionate, susținute, replicate și cu corecție automată. CloudSQL se integrează cu Google App Engine, dar poate fi folosit și independent.
-
BitCan oferă atât baze de date găzduite MySQL, cât și MongoDB, cu servicii extinse de backup.
-
ElephantSQL este o companie de software-as-a-service care găzduiește baze de date PostgreSQL și se ocupă de configurația serverului, backup-uri și conexiuni de date pe lângă instanțele Amazon Web Services.
Resurse SQL
Poate că intenționați să folosiți un mapper obiect-relațional (ORM)ca modalitate principală de interacțiune cu o bază de date, dar ar trebui totuși să învățați noțiunile de bază de SQL pentru a crea scheme și a înțelege codul SQL generat de ORM. Următoarele resurse vă pot ajuta să vă puneți la punct cu SQL dacă nu l-ați folosit niciodată anterior.
-
Select Star SQL este o carte interactivă pentruînvățarea SQL. Foarte recomandată chiar dacă simțiți că veți lucra doar cu o mapă obiect-relațională în proiectele dvs. pentru că nu știți niciodată când va trebui să intrați înSQL pentru a îmbunătăți performanța lentă a unei interogări generate.
-
Un ghid pentru începători pentru SQLface o treabă bună explicând principalele cuvinte cheie folosite în declarațiile SQL, cum ar fi
SELECT
,WHERE
,FROM
,UPDATE
șiDELETE
. -
SQL Tutorial învață elementele de bază ale SQL care pot fi utilizate în toate implementările majore ale bazelor de date relaționale.
-
Life of a SQL queryexplică ce se întâmplă atât din punct de vedere conceptual cât și tehnic în cadrul unei baze de date atunci când se execută o interogare SQL. Autorul foloseștePostgreSQL ca exemplu de bază de date și sintaxa SQL pe tot parcursul postării.
-
Un ghid cuprinzător, probabil incomplet, al numeroaselor moduri diferite de îmbinare a tabelelor în SQLelaborează una dintre cele mai dificile părți ale scrierii instrucțiunilor SQL care unesc unul sau mai multe tabele:
JOIN
. -
Scrierea unui SQL mai buneste un scurt ghid de stilizare a codului pentru a vă face interogările mai ușor de citit.
-
SQL Intermediate este un tutorial dincolo de elementele de bază care folosește date deschise de laUS Consumer Financial Protection Bureauca exemple pentru numărarea, interogarea și utilizarea vederilor în PostgreSQL.
Resurse generale privind bazele de date
-
Cum funcționează o bază de date relațională?este un post detaliat de lungă durată despre sortarea, căutarea, fuzionarea și alte operații pe care le luăm adesea ca fiind de la sine înțelese atunci când folosim o bază de date relațională stabilită, cum ar fi PostgreSQL.
-
Baze de date 101 oferă o privire de ansamblu asupra principalelor concepte ale bazelor de date relaționale care este relevantă chiar și pentru cei care nu sunt dezvoltatori, ca introducere.
-
Cinci greșeli pe care le fac începătorii atunci când lucrează cu baze de dateexplică de ce nu ar trebui să stocați imagini în baze de date, precum și de ce trebuie să fiți atenți la modul în care vă normalizați schema.
-
DB-Engines clasifică cele mai populare sisteme de gestionare a bazelor de date.
-
DB Weekly este o listă săptămânală de articole și resurse generale despre baze de date.
-
Designing Highly Scalable Database Architecturesacoperă scalarea orizontală și verticală, replicarea și caching-ul în arhitecturile bazelor de date relaționale.
-
Online migrations at scaleeste o lectură excelentă privind descompunerea complexității unei migrări de scheme de baze de date pentru o bază de date operațională. Abordarea pe care a folosit-o echipa autorului a fost un model de scriere dublă în 4 pași pentru a evolua cu atenție modul în care erau stocate datele pentru abonamente, astfel încât acestea să poată trece la un model de stocare nou, mai eficient.
-
A one size fits all database doesn’t fit anyoneexplică raționamentul specific al Amazon Web Services pentru a avea atât de multe tipuri de baze de date relaționale și non-relaționale pe platforma sa, dar articolul este, de asemenea, o bună prezentare generală a diferitelor modele de baze de date și a cazurilor de utilizare a acestora.
-
SQL împlinește 43 de ani – iată 8 motive pentru care îl folosim și astăzi enumeră motivele pentru care SQL este utilizat în mod obișnuit de aproape toți dezvoltatorii, chiar dacă limbajul se apropie de cea de-a cincizecea aniversare.
-
Cheile SQL în profunzimeoferă o explicație excelentă despre ce sunt cheile primare și cum ar trebui să le folosiți.
-
Explorarea unui set de date în SQLeste un bun exemplu despre cum SQL singur poate fi folosit pentru analiza datelor. Acest tutorial folosește datele Spotifypentru a arăta cum să extrageți ceea ce căutați să învățați dintr-un set de date.
-
Strategii de testare a integrării bazelor de dateacoperă un subiect dificil care apare în fiecare proiect din lumea reală.
-
GitLab a furnizat un postmortem al unei întreruperi a bazei de date pe 31 ianuarieca o modalitate de a fi transparenți față de clienți și de a ajuta alte echipe de dezvoltare să învețe cum și-au stricat sistemele de baze de date și apoi au găsit o modalitate de recuperare.
-
Asynchronous Python and Databaseste un articol în profunzime care acoperă de ce multe drivere de baze de date Python nu pot fi folosite fără modificări din cauza diferențelor dintre modelele de evenimente blocante și cele asincrone. Merită neapărat o lectură dacă folosițiWebSockets prin Tornado sau gevent.
-
PostgreSQL vs. MS SQL Server este o perspectivă asupra diferențelor dintre cele două servere de baze de date de la un analist de date.
Listă de verificare pentru învățarea bazelor de date
-
Instalați PostgreSQL pe serverul dumneavoastră. Presupunând că ați optat pentru Ubuntu rulați
sudo apt-get install postgresql
. -
Asigurați-vă că biblioteca psycopg2 se află în dependențele aplicației dumneavoastră.
-
Configurați-vă aplicația web pentru a vă conecta la instanța PostgreSQL.
-
Crearea de modele în ORM-ul dumneavoastră, fie cu ORM-ul încorporat în Django, fie cuSQLAlchemy cu Flask.
-
Construiți tabelele bazei de date sau sincronizați modelele ORM cu instanța PostgreSQL, dacă folosiți un ORM.
-
Începeți să creați, citiți, actualizați și ștergeți date în baza de datedin aplicația dvs. web.