SQLite vs MySQL vs PostgreSQL: o comparație a sistemelor de gestionare a bazelor de date relaționale

Introducere

modelul de date relaționale, care organizează datele în tabele de rânduri și coloane, predomină în instrumentele de gestionare a bazelor de date. Astăzi există și alte modele de date, inclusiv NoSQL și NewSQL, dar sistemele de gestionare a bazelor de date relaționale (RDBMS) rămân dominante pentru stocarea și gestionarea datelor la nivel mondial.

Acest articol compară și contrastează trei dintre cele mai implementate RDBMS-uri open-source: SQLite, MySQL și PostgreSQL. Mai exact, va explora tipurile de date pe care le utilizează fiecare RDBMS, avantajele și dezavantajele acestora și situațiile în care acestea sunt cel mai bine optimizate.

un pic despre sistemele de gestionare a bazelor de date

bazele de date sunt clustere de informații sau date modelate logic. Un sistem de gestionare a bazelor de date (DBMS), pe de altă parte, este un program de calculator care interacționează cu o bază de date. Un SGBD vă permite să controlați accesul la o bază de date, să scrieți date, să rulați interogări și să efectuați orice alte sarcini legate de gestionarea bazelor de date. Deși sistemele de gestionare a bazelor de date sunt adesea denumite „baze de date”, cei doi termeni nu sunt interschimbabili. O bază de date poate fi orice colecție de date, nu doar una stocată pe un computer, în timp ce un SGBD este software-ul care vă permite să interacționați cu o bază de date.

toate sistemele de gestionare a bazelor de date au un model de bază care structurează modul în care datele sunt stocate și accesate. Un sistem de gestionare a bazelor de date relaționale este un SGBD care utilizează modelul de date relaționale. În acest model, datele sunt organizate în tabele, care în contextul RDBMS sunt denumite mai formal relații. O relație este un set de tupluri sau rânduri dintr-un tabel, fiecare tuplu partajând un set de atribute sau coloane:

exemplu de diagramă care arată modul în care relațiile, tuplurile și atributele se raportează între ele

majoritatea bazelor de date relaționale folosesc structured query language (SQL) pentru a gestiona și interoga datele. Cu toate acestea, multe RDBMS-uri își folosesc propriul dialect particular de SQL, care poate avea anumite limitări sau extensii. Aceste extensii includ de obicei caracteristici suplimentare care permit utilizatorilor să efectueze operații mai complexe decât ar putea altfel cu SQL standard.

notă: Termenul „SQL standard” apare de mai multe ori pe parcursul acestui ghid. Standardele SQL sunt menținute în comun de American National Standards Institute (ANSI), Organizația Internațională pentru Standardizare (ISO) și Comisia Electrotehnică Internațională (IEC). Ori de câte ori acest articol menționează „SQL standard” sau „standardul SQL”, se referă la versiunea curentă a standardului SQL publicată de aceste organisme.

trebuie remarcat faptul că standardul SQL complet este mare și complex: full core SQL:2011 conformitatea necesită 179 de caracteristici. Din această cauză, majoritatea RDBMS-urilor nu acceptă întregul standard, deși unele se apropie de respectarea deplină decât altele.

fiecărei coloane i se atribuie un tip de date care dictează ce fel de intrări sunt permise în acea coloană. Diferite RDBMS-uri implementează diferite tipuri de date, care nu sunt întotdeauna direct interschimbabile. Unele tipuri comune de date includ date, șiruri, numere întregi și booleeni.

tipurile de date numerice pot fi semnate, ceea ce înseamnă că pot reprezenta atât numere pozitive, cât și negative, sau nesemnate, ceea ce înseamnă că pot reprezenta doar numere pozitive. De exemplu, tipul de date MySQL tinyint poate conține 8 biți de date, ceea ce echivalează cu 256 de valori posibile. Intervalul semnat al acestui tip de date este de la -128 la 127, în timp ce intervalul nesemnat este de la 0 la 255.

uneori, un administrator de baze de date va impune o constrângere pe un tabel pentru a limita ce valori pot fi introduse în acesta. O constrângere se aplică de obicei unei anumite coloane, dar unele constrângeri se pot aplica și unui tabel întreg. Iată câteva constrângeri care sunt utilizate în mod obișnuit în SQL:

  • UNIQUE: Aplicarea acestei constrângeri la o coloană asigură că nu există două intrări în acea coloană sunt identice.
  • NOT NULL: această constrângere asigură că o coloană nu are intrăriNULL.
  • PRIMARY KEY: o combinație de UNIQUE și NOT NULLPRIMARY KEY constrângere asigură că nici o intrare în coloana este NULL și că fiecare intrare este distinctă.
  • FOREIGN KEY: Un FOREIGN KEYeste o coloană dintr-un tabel care se referă laPRIMARY KEY al unui alt tabel. Această constrângere este utilizată pentru a lega două tabele împreună: intrările în coloana FOREIGN KEY trebuie să existe deja în coloana părinte PRIMARY KEY pentru ca procesul de scriere să aibă succes.
  • CHECK: această constrângere limitează intervalul de valori care pot fi introduse într-o coloană. De exemplu, dacă aplicația dvs. este destinată numai rezidenților din Alaska, puteți adăuga o CHECK constrângere pe o coloană de cod poștal pentru a permite doar intrări între 99501 și 99950.dacă doriți să aflați mai multe despre sistemele de gestionare a bazelor de date, Consultați articolul nostru despre înțelegerea bazelor de date SQL și NoSQL și a diferitelor modele de baze de date.

    acum că am acoperit sistemele de gestionare a bazelor de date relaționale în general, să trecem la prima dintre cele trei baze de date relaționale open-source pe care acest articol le va acoperi: SQLite.

    SQLite

    SQLite este un RDBMS autonom, bazat pe fișiere și complet open-source cunoscut pentru portabilitatea, fiabilitatea și performanța puternică chiar și în medii cu memorie redusă. Tranzacțiile sale sunt conforme cu acidul, chiar și în cazurile în care sistemul se blochează sau suferă o întrerupere a alimentării.

    site-ul web al proiectului SQLite îl descrie ca o bază de date „fără server”. Majoritatea motoarelor de baze de date relaționale sunt implementate ca un proces server în care programele comunică cu serverul gazdă printr-o comunicare interproces care transmite cereri. Cu SQLite, totuși, orice proces care accesează baza de date citește și scrie direct în fișierul de disc al bazei de date. Acest lucru simplifică procesul de configurare SQLite, deoarece elimină orice nevoie de a configura un proces de server. De asemenea, nu există nicio configurație necesară pentru programele care vor utiliza baza de date SQLite: tot ce au nevoie este accesul la disc.

    SQLite este un software gratuit și open-source și nu este necesară nicio licență specială pentru a-l utiliza. Cu toate acestea, proiectul oferă mai multe extensii — fiecare pentru o taxă unică-care ajută la compresie și criptare. În plus, proiectul oferă diverse pachete de suport comercial, fiecare pentru o taxă anuală.

    tipuri de date acceptate de SQLite

    SQLite permite o varietate de tipuri de date, organizate în următoarele clase de stocare:

    tip de date explicație
    null include orice NULL valori.
    integer numere întregi semnate, stocate în 1, 2, 3, 4, 6, sau 8 octeți în funcție de mărimea valorii.
    real numere reale sau valori în virgulă mobilă, stocate ca numere în virgulă mobilă de 8 octeți.
    text șiruri de Text stocate folosind codificarea bazei de date, care poate fi UTF-8, UTF-16be sau UTF-16LE.
    blob orice blob de date, cu fiecare blob stocat exact așa cum a fost introdus.

    în contextul SQLite, termenii „clasă de stocare” și „tip de date” sunt considerați interschimbabili. Dacă doriți să aflați mai multe despre tipurile de date SQLite și afinitatea de tip SQLite, consultați documentația oficială SQLite pe această temă.

    avantajele SQLite

    • amprentă mică: după cum sugerează și numele, Biblioteca SQLite este foarte ușoară. Deși spațiul pe care îl folosește variază în funcție de sistemul în care este instalat, acesta poate ocupa mai puțin de 600kib de spațiu. În plus, este complet autonom, ceea ce înseamnă că nu există dependențe externe pe care trebuie să le instalați pe sistemul dvs. pentru ca SQLite să funcționeze.
    • User-friendly: SQLite este uneori descris ca o bază de date „zero-configurare”, care este gata de utilizare din cutie. SQLite nu rulează ca proces server, ceea ce înseamnă că nu trebuie niciodată oprit, pornit sau repornit și nu vine cu niciun fișier de configurare care trebuie gestionat. Aceste caracteristici ajută la eficientizarea căii de la instalarea SQLite la integrarea acesteia cu o aplicație.
    • portabil: Spre deosebire de alte sisteme de gestionare a bazelor de date, care stochează de obicei date ca un lot mare de fișiere separate, o întreagă bază de date SQLite este stocată într-un singur fișier. Acest fișier poate fi localizat oriunde într-o ierarhie de directoare și poate fi partajat prin suport amovibil sau protocol de transfer de fișiere.

    dezavantaje ale SQLite

    • concurență limitată: deși mai multe procese pot accesa și interoga o bază de date SQLite în același timp, un singur proces poate face modificări la baza de date la un moment dat. Aceasta înseamnă că SQLite acceptă o concurență mai mare decât majoritatea celorlalte sisteme de gestionare a bazelor de date încorporate, dar nu la fel de mult ca RDBMSs client/server precum MySQL sau PostgreSQL.
    • No user management: sistemele de baze de date vin adesea cu suport pentru utilizatori sau conexiuni gestionate cu privilegii de acces predefinite la baza de date și tabele. Deoarece SQLite citește și scrie direct într-un fișier disc obișnuit, singurele permisiuni de acces aplicabile sunt permisiunile de acces tipice ale sistemului de operare subiacent. Acest lucru face ca SQLite să fie o alegere slabă pentru aplicațiile care necesită mai mulți utilizatori cu permisiuni speciale de acces.
    • securitate: un motor de baze de date care utilizează un server poate, în unele cazuri, să ofere o protecție mai bună împotriva erorilor din aplicația client decât o bază de date fără server, cum ar fi SQLite. De exemplu, indicii rătăciți dintr-un client nu pot corupe memoria de pe server. De asemenea, deoarece un server este un singur proces persistent, o bază de date client-server poatecontrolați accesul la date cu mai multă precizie decât o bază de date fără server, permițând o blocare mai fină și o concurență mai bună.

    când să utilizați SQLite

    • aplicații încorporate: SQLite este o alegere excelentă de baze de date pentru aplicații care au nevoie de portabilitate și nu necesită extindere viitoare. Exemplele includ aplicații locale pentru un singur utilizator și aplicații mobile sau jocuri.
    • Disk access replacement: în cazurile în care o aplicație trebuie să citească și să scrie fișiere pe disc direct, poate fi benefic să utilizați SQLite pentru funcționalitatea suplimentară și simplitatea care vine cu utilizarea SQL.
    • testare: Pentru multe aplicații poate fi nejustificată pentru a testa funcționalitatea lor cu un SGBD care utilizează un proces server suplimentar. SQLite are un mod în memorie, care poate fi folosit pentru a rula teste rapid, fără aeriene de operațiuni reale de baze de date, ceea ce face o alegere ideală pentru testare.

    când să nu folosească SQLite

    • lucrul cu o mulțime de date: SQLite poate sprijini punct de vedere tehnic o bază de date de până la 140tb în dimensiune, atâta timp cât unitatea de disc și sistemul de fișiere sprijini, de asemenea, cerințele de dimensiune bazei de date. Cu toate acestea, site-ul web SQLite recomandă ca orice bază de date care se apropie de 1TB să fie găzduită pe o bază de date client-server centralizată, deoarece o bază de date SQLite de acea dimensiune sau mai mare ar fi dificil de gestionat.
    • volume mari de scriere: SQLite permite să aibă loc o singură operație de scriere la un moment dat, ceea ce limitează semnificativ debitul acesteia. În cazul în care cererea dumneavoastră necesită o mulțime de operațiuni de scriere sau mai multe scriitori concurente, SQLite nu poate fi adecvat pentru nevoile dumneavoastra.
    • accesul la rețea este necesar: Deoarece SQLite este o bază de date fără server, nu oferă acces direct la rețea la datele sale. Acest acces este încorporat în aplicație, deci dacă datele din SQLite se află pe o mașină separată de aplicație, va fi nevoie de o legătură motor-disc cu lățime de bandă mare în rețea. Aceasta este o soluție costisitoare, ineficientă și, în astfel de cazuri, un DBMS client-server poate fi o alegere mai bună.

    MySQL

    conform clasamentului DB-Engines, MySQL a fost cel mai popular RDBMS open-source de când site-ul a început să urmărească popularitatea bazei de date în 2012. Este un produs bogat în caracteristici care alimentează multe dintre cele mai mari site-uri și aplicații din lume, inclusiv Twitter, Facebook, Netflix și Spotify. Începerea cu MySQL este relativ simplă, datorită în mare parte documentației sale exhaustive și comunității mari de dezvoltatori, precum și abundenței resurselor legate de MySQL online.

    MySQL a fost proiectat pentru viteză și fiabilitate, în detrimentul aderării depline la SQL standard. Dezvoltatorii MySQL lucrează continuu spre o aderență mai strânsă la SQL standard, dar rămâne în urma altor implementări SQL. Cu toate acestea, vine cu diferite moduri SQL și extensii care îl apropie de conformitate. Spre deosebire de aplicațiile care utilizează SQLite, aplicațiile care utilizează o bază de date MySQL o accesează printr-un proces daemon separat. Deoarece procesul de server se află între baza de date și alte aplicații, permite un control mai mare asupra celor care au acces la baza de date.

    MySQL a inspirat o multitudine de aplicații, instrumente și biblioteci integrate care îi extind funcționalitatea și ajută la facilitarea lucrului. Unele dintre cele mai utilizate pe scară largă a acestor instrumente terțe sunt phpMyAdmin, Dbeaver și HeidiSQL.

    tipurile de date acceptate de MySQL

    tipurile de date MySQL pot fi organizate în trei mari categorii: tipuri numerice, tipuri de dată și oră și tipuri de șiruri.

    tipuri numerice:

    tip de date explicație
    tinyint un număr întreg foarte mic. Intervalul semnat pentru acest tip de date numerice este de la -128 la 127, în timp ce intervalul nesemnat este de la 0 la 255.
    smallint un număr întreg mic. Intervalul semnat pentru acest tip numeric este de la -32768 la 32767, în timp ce intervalul nesemnat este de la 0 la 65535.
    mediumint un număr întreg de dimensiuni medii. Intervalul semnat pentru acest tip de date numerice este de la -8388608 la 8388607, în timp ce intervalul nesemnat este de la 0 la 16777215.
    int sau integer un număr întreg de dimensiuni normale. Intervalul semnat pentru acest tip de date numerice este de la -2147483648 la 2147483647, în timp ce intervalul nesemnat este de la 0 la 4294967295.
    bigint un număr întreg mare. Intervalul semnat pentru acest tip de date numerice este de -9223372036854775808 până la 9223372036854775807, în timp ce intervalul nesemnat este de la 0 la 18446744073709551615.
    float un număr mic (cu o singură precizie) în virgulă mobilă.
    doubledouble precisionsaureal un număr în virgulă mobilă de dimensiuni normale (cu dublă precizie).
    decdecimalfixedsau numeric un număr de puncte fixe ambalate. Lungimea de afișare a intrărilor pentru acest tip de date este definită atunci când coloana este creată și fiecare intrare aderă la acea lungime.
    bool sau boolean un Boolean este un tip de date care are doar două valori posibile, de obicei fie true sau false.
    bit un tip de valoare bit pentru care puteți specifica numărul de biți pe valoare, de la 1 la 64.

    tipuri de dată și oră:

    Data Type Explanation
    date A date, represented as YYYY-MM-DD.
    datetime A timestamp showing the date and time, displayed as YYYY-MM-DD HH:MM:SS.
    timestamp A timestamp indicating the amount of time since the Unix epoch (00:00:00 on January 1, 1970).
    time A time of day, displayed as HH:MM:SS.
    year A year expressed in either a 2 or 4 digit format, with 4 digits being the default.

    String types:

    Data Type Explanation
    char A fixed-length string; intrările de acest tip sunt căptușite în partea dreaptă cu spații pentru a îndeplini lungimea specificată atunci când sunt stocate.
    varchar un șir de lungime variabilă.
    binary Similar cuchar tip, dar un șir binar octet de o lungime specificată, mai degrabă decât un șir de caractere nonbinar.
    varbinary Similar cuvarchar tip, dar un șir binar octet de o lungime variabilă, mai degrabă decât un șir de caractere nonbinar.
    blob A binary string with a maximum length of 65535 (2^16 – 1) bytes of data.
    tinyblob A blob column with a maximum length of 255 (2^8 – 1) bytes of data.
    mediumblob A blob column with a maximum length of 16777215 (2^24 – 1) bytes of data.
    longblob A blob column with a maximum length of 4294967295 (2^32 – 1) bytes of data.
    text A string with a maximum length of 65535 (2^16 – 1) characters.
    tinytext A text column with a maximum length of 255 (2^8 – 1) characters.
    mediumtext A text column with a maximum length of 16777215 (2^24 – 1) characters.
    longtext A text column with a maximum length of 4294967295 (2^32 – 1) characters.
    enum o enumerare, care este un obiect șir care ia o singură valoare dintr-o listă de valori care sunt declarate la crearea tabelului.
    set Similar cu o enumerare, un obiect șir care poate avea zero sau mai multe valori, fiecare dintre care trebuie să fie ales dintr-o listă de Valori permise care sunt specificate la crearea tabelului.

    avantajele MySQL

    • Popularitate și ușurință în utilizare: Fiind unul dintre cele mai populare sisteme de baze de date din lume, nu lipsesc administratorii de baze de date care au experiență în lucrul cu MySQL. De asemenea, există o abundență de documentație tipărită și online despre cum să instalați și să gestionați o bază de date MySQL, precum și o serie de instrumente terțe-cum ar fi phpMyAdmin — care au ca scop simplificarea procesului de a începe cu baza de date.
    • securitate: MySQL vine instalat cu un script care vă ajută să îmbunătățiți securitatea bazei de date prin setarea nivelului de securitate a parolei instalării, definirea unei parole pentru utilizatorul root, eliminarea conturilor anonime și eliminarea bazelor de date de testare care sunt, în mod implicit, accesibile tuturor utilizatorilor. De asemenea, spre deosebire de SQLite, MySQL acceptă gestionarea utilizatorilor și vă permite să acordați privilegii de acces în funcție de utilizator.
    • Speed: alegând să nu implementeze anumite caracteristici ale SQL, dezvoltatorii MySQL au reușit să acorde prioritate vitezei. În timp ce testele de referință mai recente arată că alte RDBMS-uri precum PostgreSQL se pot potrivi sau cel puțin se pot apropia de MySQL în ceea ce privește viteza, MySQL deține încă reputația de soluție de baze de date extrem de rapidă.
    • replicare: MySQL acceptă o serie de tipuri diferite de replicare, care este practica de a împărtăși informații între două sau mai multe gazde pentru a ajuta la îmbunătățirea fiabilității, disponibilității și toleranței la erori. Acest lucru este util pentru configurarea unei soluții de rezervă a bazei de date sau pentru scalarea orizontală a bazei de date.

    dezavantajele MySQL

    • limitări cunoscute: Deoarece MySQL a fost conceput pentru viteză și ușurință în utilizare, mai degrabă decât pentru respectarea deplină a SQL, vine cu anumite limitări funcționale. De exemplu, nu are suport pentru FULL JOIN clauze.
    • licențiere și caracteristici proprietare: MySQL este un software cu licență duală, cu o ediție comunitară gratuită și open-source licențiată sub GPLv2 și mai multe ediții comerciale plătite lansate sub licențe proprietare. Din acest motiv, unele caracteristici și pluginuri sunt disponibile numai pentru edițiile proprietare.
    • a încetinit dezvoltarea: De când proiectul MySQL a fost achiziționat de Sun Microsystems în 2008 și mai târziu de Oracle Corporation în 2009, au existat plângeri din partea utilizatorilor că procesul de dezvoltare a SGBD a încetinit semnificativ, deoarece comunitatea nu mai are agenția să reacționeze rapid la probleme și să implementeze modificări.

    când se utilizează MySQL

    • operațiuni distribuite: suportul de replicare MySQL îl face o alegere excelentă pentru setările de baze de date distribuite, cum ar fi arhitecturile primare-secundare sau primare-primare.
    • site-uri web și aplicații web: MySQL alimentează multe site-uri web și aplicații pe internet. Acest lucru este, în mare parte, datorită cât de ușor este să instalați și să configurați o bază de date MySQL, precum și viteza generală și scalabilitatea pe termen lung.
    • creșterea viitoare așteptată: suportul de replicare MySQL poate ajuta la facilitarea scalării orizontale. În plus, este un proces relativ simplu de a face upgrade la un produs comercial MySQL, cum ar fi MySQL Cluster, care acceptă sharding automat, un alt proces de scalare orizontală.

    când nu se utilizează MySQL

    • este necesară conformitatea SQL: Deoarece MySQL nu încearcă să implementeze standardul SQL complet, acest instrument nu este complet compatibil SQL. Dacă conformitatea SQL completă sau chiar aproape completă este o necesitate pentru cazul dvs. de utilizare, poate doriți să utilizați un SGBD mai complet compatibil.
    • concurență și volume mari de date: deși MySQL funcționează în general bine cu operații grele de citire, citirile concurente pot fi problematice. Dacă aplicația dvs. va avea mulți utilizatori care îi scriu date simultan, un alt RDBMS precum PostgreSQL ar putea fi o alegere mai bună a bazei de date.

    PostgreSQL

    PostgreSQL, cunoscut și sub numele de Postgres, se consideră „cea mai avansată bază de date relațională open-source din lume.”A fost creat cu scopul de a fi foarte extensibil și conform standardelor. PostgreSQL este o bază de date relațională obiect, ceea ce înseamnă că, deși este în primul rând o bază de date relațională, include și caracteristici — cum ar fi moștenirea tabelului și supraîncărcarea funcțiilor — care sunt mai des asociate cu bazele de date obiect.

    Postgres este capabil să gestioneze eficient mai multe sarcini în același timp, o caracteristică cunoscută sub numele de concurență. Realizează acest lucru fără încuietori de citire datorită implementării controlului concurenței Multiversion (MVCC), care asigură atomicitatea, consistența, izolarea și durabilitatea tranzacțiilor sale, cunoscute și sub numele de conformitate acidă.

    PostgreSQL nu este la fel de utilizat ca MySQL, dar există încă o serie de instrumente și biblioteci terțe concepute pentru a simplifica lucrul cu PostgreSQL, inclusiv pgAdmin și Postbird.

    tipuri de date acceptate de PostgreSQL

    PostgreSQL acceptă tipuri de date numerice, string și data și ora, cum ar fi MySQL. În plus, acceptă tipuri de date pentru forme geometrice, adrese de rețea, șiruri de biți, căutări de text și intrări JSON, precum și mai multe tipuri de date idiosincratice.

    tipuri numerice:

    tip de date explicație
    bigint un număr întreg de 8 octeți semnat.
    bigserial An autoincrementing 8 byte integer.
    double precision An 8 byte double precision floating-point number.
    integer A signed 4 byte integer.
    numeric or decimal An number of selectable precision, recommended for use in cases where exactness is crucial, such as monetary amounts.
    real A 4 byte single precision floating-point number.
    smallint A signed 2 byte integer.
    smallserial An autoincrementing 2 byte integer.
    serial An autoincrementing 4 byte integer.

    Character types:

    Data Type Explanation
    character A character string with a specified fixed length.
    character varying or varchar A character string with a variable but limited length.
    text A character string of a variable, unlimited length.

    Date and time types:

    Data Type Explanation
    date A calendar date consisting of the day, month, and year.
    interval A time span.
    time or time without time zone A time of day, not including the time zone.
    time with time zone A time of day, including the time zone.
    timestamp or timestamp without time zone A date and time, not including the time zone.
    timestamp with time zone A date and time, including the time zone.

    Geometric types:

    Data Type Explanation
    box A rectangular box on a plane.
    circle A circle on a plane.
    line An infinite line on a plane.
    lseg A line segment on a plane.
    path A geometric path on a plane.
    point A geometric point on a plane.
    polygon A closed geometric path on a plane.

    Network address types:

    Data Type Explanation
    cidr An IPv4 or IPv6 network address.
    inet An IPv4 or IPv6 host address.
    macaddr A Media Access Control (MAC) address.

    Bit string types:

    Data Type Explanation
    bit A fixed-length bit string.
    bit varying A variable-length bit string.

    Text search types:

    Data Type Explanation
    tsquery A text search query.
    tsvector A text search document.

    JSON types:

    Data Type Explanation
    json Textual JSON data.
    jsonb Decomposed binary JSON data.

    Other data types:

    Data Type Explanation
    boolean A logical Boolean, representing either true or false.
    bytea Short for „byte array”, this type is used for binary data.
    money An amount of currency.
    pg_lsn A PostgreSQL Log Sequence Number.
    txid_snapshot A user-level transaction ID snapshot.
    uuid A universally unique identifier.
    xml XML data.

    Advantages of PostgreSQL

    • SQL compliance: More so than SQLite or MySQL, PostgreSQL aims to closely adhere to SQL standards. According to the official PostgreSQL documentation, PostgreSQL supports 160 out of the 179 features required for full core SQL:2011 conformitate, în plus față de o listă lungă de caracteristici opționale.
    • open-source și bazate pe comunitate: un proiect complet open-source, codul sursă PostgreSQL este dezvoltat de o comunitate mare și devotat. În mod similar, comunitatea Postgres menține și contribuie la numeroase resurse online care descriu modul de lucru cu SGBD, inclusiv documentația oficială, wiki PostgreSQL și diverse forumuri online.
    • extensibil: utilizatorii pot extinde PostgreSQL programatic și din mers prin funcționarea sa bazată pe catalog și utilizarea încărcării dinamice. Se poate desemna un fișier de cod obiect, cum ar fi o bibliotecă partajată, iar PostgreSQL îl va încărca după cum este necesar.

    dezavantaje ale PostgreSQL

    • performanță memorie: pentru fiecare conexiune client nou, PostgreSQL furci un nou proces. Fiecare proces nou este alocat aproximativ 10 MB de memorie, care se poate adăuga rapid pentru baze de date cu o mulțime de conexiuni. În consecință, pentru operații simple cu citire grea, PostgreSQL este de obicei mai puțin performant decât alte RDBMS-uri, cum ar fi MySQL.
    • Popularitate: Deși este mai utilizat pe scară largă în ultimii ani, PostgreSQL a rămas istoric în urma MySQL în ceea ce privește popularitatea. O consecință a acestui fapt este că există încă mai puține instrumente terțe care pot ajuta la gestionarea unei baze de date PostgreSQL. În mod similar, nu există atât de mulți administratori de baze de date cu experiență în gestionarea unei baze de date Postgres în comparație cu cei cu experiență MySQL.

    când se utilizează PostgreSQL

    • integritatea datelor este importantă: PostgreSQL este pe deplin compatibil cu acidul din 2001 și implementează controlul valutar multiversion pentru a se asigura că datele rămân consecvente, făcându-l o alegere puternică a RDBMS atunci când integritatea datelor este critică.
    • integrarea cu alte instrumente: PostgreSQL este compatibil cu o gamă largă de limbaje de programare și platforme. Aceasta înseamnă că, dacă vreodată trebuie să migrați baza de date într-un alt sistem de operare sau să o integrați cu un instrument specific, va fi probabil mai ușor cu o bază de date PostgreSQL decât cu un alt DBMS.
    • operațiuni complexe: Postgres acceptă planuri de interogare care pot utiliza mai multe procesoare pentru a răspunde la interogări cu o viteză mai mare. Acest lucru, împreună cu sprijinul său puternic pentru mai mulți scriitori simultani, îl face o alegere excelentă pentru operațiuni complexe, cum ar fi depozitarea datelor și procesarea tranzacțiilor online.

    când să nu folosească PostgreSQL

    • viteza este imperativ: în detrimentul vitezei, PostgreSQL a fost proiectat cu extensibilitate și compatibilitate în minte. Dacă proiectul dvs. necesită cele mai rapide operații de citire posibile, este posibil ca PostgreSQL să nu fie cea mai bună alegere a SGBD.
    • Setări Simple: Datorită setului său mare de caracteristici și aderenței puternice la SQL standard, Postgres poate fi excesiv pentru setările simple ale bazei de date. Pentru operațiunile grele de citire în care este necesară viteza, MySQL este de obicei o alegere mai practică.
    • replicare complexă: deși PostgreSQL oferă suport puternic pentru replicare, este încă o caracteristică relativ nouă și unele configurații — cum ar fi o arhitectură primară-primară — sunt posibile numai cu extensii. Replicarea este o caracteristică mai matură pe MySQL și mulți utilizatori văd replicarea MySQL ca fiind mai ușor de implementat, în special pentru cei cărora le lipsește baza de date necesară și experiența de administrare a sistemului.

    concluzie

    astăzi, SQLite, MySQL și PostgreSQL sunt cele mai populare trei sisteme de gestionare a bazelor de date relaționale open-source din lume. Fiecare are propriile caracteristici și limitări unice și excelează în anumite scenarii. Există destul de multe variabile în joc atunci când se decide asupra unui RDBMS, iar alegerea este rareori la fel de simplă ca alegerea celei mai rapide sau a celei cu cele mai multe caracteristici. Data viitoare când aveți nevoie de o soluție de baze de date relaționale, asigurați-vă că cercetați în profunzime aceste și alte instrumente pentru a găsi cel care se potrivește cel mai bine nevoilor dvs.

    Dacă doriți să aflați mai multe despre SQL și cum să-l utilizați pentru a gestiona o bază de date relațională, vă încurajăm să consultați Cum să gestionați o foaie de înșelăciune a bazei de date SQL. Pe de altă parte, dacă doriți să aflați despre bazele de date non-relaționale (sau NoSQL), consultați comparația noastră cu sistemele de gestionare a bazelor de date NoSQL.

Lasă un răspuns

Adresa ta de email nu va fi publicată.