SQLite vs MySQL vs PostgreSQL: relációs adatbázis-kezelő rendszerek összehasonlítása

Bevezetés

az adatbázis-kezelő eszközökben a relációs adatmodell dominál, amely sorok és oszlopok táblázataiba rendezi az adatokat. Ma már léteznek más adatmodellek, köztük a NoSQL és a NewSQL, de a relációs adatbázis-kezelő rendszerek (rdbmss) továbbra is dominálnak az adatok tárolásában és kezelésében világszerte.

Ez a cikk összehasonlítja és szembeállítja a három legszélesebb körben alkalmazott nyílt forráskódú RDBMS-t: SQLite, MySQL és PostgreSQL. Pontosabban megvizsgálja az egyes RDBMS-ek által használt adattípusokat, azok előnyeit és hátrányait, valamint azokat a helyzeteket, ahol a legjobban optimalizálhatók.

egy kicsit az adatbázis-kezelő rendszerekről

Az adatbázisok logikusan modellezett információcsoportok vagy ADATOK. Az adatbázis-kezelő rendszer (DBMS) viszont egy számítógépes program, amely kölcsönhatásba lép egy adatbázissal. A DBMS lehetővé teszi az adatbázishoz való hozzáférés vezérlését, az adatok írását, a lekérdezések futtatását és az adatbáziskezeléssel kapcsolatos egyéb feladatok elvégzését. Bár az adatbázis-kezelő rendszereket gyakran “adatbázisoknak” nevezik, a két kifejezés nem cserélhető fel. Az adatbázis bármilyen adatgyűjtés lehet, nem csak egy számítógépen tárolt, míg a DBMS az a szoftver, amely lehetővé teszi az adatbázissal való interakciót.

minden adatbázis-kezelő rendszernek van egy mögöttes modellje, amely strukturálja az adatok tárolását és elérését. A relációs adatbázis-kezelő rendszer egy DBMS, amely a relációs adatmodellt alkalmazza. Ebben a modellben az adatok táblázatokba vannak rendezve, amelyeket az RDBMS-ek összefüggésében formálisabban kapcsolatoknak neveznek. A reláció egy táblázat sorainak vagy sorainak halmaza, mindegyik tuple attribútumok vagy oszlopok halmazát osztja meg:

Diagrampélda, amely bemutatja, hogy a kapcsolatok, a tuples és az attribútumok hogyan kapcsolódnak egymáshoz

a legtöbb relációs adatbázis strukturált lekérdezési nyelvet (SQL) használ az adatok kezelésére és lekérdezésére. Sok RDBMS azonban a saját sajátos SQL nyelvjárását használja, amelynek lehetnek bizonyos korlátai vagy kiterjesztései. Ezek a Kiterjesztések általában olyan extra funkciókat tartalmaznak, amelyek lehetővé teszik a felhasználók számára, hogy összetettebb műveleteket hajtsanak végre, mint egyébként a szokásos SQL-vel.

Megjegyzés: A “standard SQL” kifejezés többször is megjelenik ebben az útmutatóban. Az SQL szabványokat az amerikai Nemzeti Szabványügyi Intézet (ANSI), a Nemzetközi Szabványügyi Szervezet (ISO) és a Nemzetközi Elektrotechnikai Bizottság (IEC) közösen tartja fenn. Amikor ez a cikk megemlíti a “standard SQL” – t vagy az “SQL szabványt”, ez az SQL szabvány jelenlegi verziójára utal, amelyet ezek a testek publikáltak.

meg kell jegyezni, hogy a teljes SQL szabvány nagy és összetett: a full core SQL:2011 megfelelés 179 funkciót igényel. Emiatt a legtöbb RDBMSs nem támogatja a teljes szabványt, bár egyesek közelebb kerülnek a teljes megfeleléshez, mint mások.

minden oszlophoz egy adattípus tartozik, amely meghatározza, hogy milyen bejegyzések engedélyezettek az adott oszlopban. A különböző RDBMS-ek különböző adattípusokat valósítanak meg, amelyek nem mindig közvetlenül felcserélhetők. Egyes általános adattípusok közé tartoznak a dátumok, a karakterláncok, az egész számok és a logikai értékek.

A numerikus adattípusok aláírhatók, vagyis mind pozitív, mind negatív számokat képviselhetnek, vagy aláíratlanok, ami azt jelenti, hogy csak pozitív számokat képviselhetnek. Például a MySQL tinyint adattípusa 8 Bit adatot képes tárolni, ami 256 lehetséges értéknek felel meg. Ennek az adattípusnak az aláírt tartománya -128-tól 127-ig, míg az aláíratlan tartomány 0-tól 255-ig terjed.

néha az adatbázis-adminisztrátor kényszert ír elő egy táblára, hogy korlátozza, milyen értékeket lehet beírni. A korlátozás általában egy adott oszlopra vonatkozik, de bizonyos korlátozások vonatkozhatnak egy teljes táblára is. Íme néhány megszorítás, amelyeket gyakran használnak az SQL-ben:

  • UNIQUE: Ennek a korlátozásnak az oszlopra történő alkalmazása biztosítja, hogy az oszlopban két bejegyzés ne legyen azonos.
  • NOT NULL: ez a kényszer biztosítja, hogy egy oszlopban ne legyen NULL bejegyzés.
  • PRIMARY KEY: a UNIQUE és NOT NULL kombinációja, a PRIMARY KEY kényszer biztosítja, hogy az oszlopban egyetlen bejegyzés sem NULL és hogy minden bejegyzés különbözik.
  • FOREIGN KEY: A FOREIGN KEYegy táblázat oszlopa, amely egy másik táblázat PRIMARY KEY – jére utal. Ez a kényszer két tábla összekapcsolására szolgál: a FOREIGN KEY oszlop bejegyzéseinek már létezniük kell a PRIMARY KEY oszlopban, hogy az írási folyamat sikeres legyen.
  • CHECK: ez a korlátozás korlátozza az oszlopba bevihető értékek tartományát. Ha például az alkalmazás csak alaszkai lakosoknak szól, akkor egy CHECK korlátozást adhat hozzá egy Irányítószám oszlophoz, hogy csak a 99501 és 99950 közötti bejegyzéseket engedélyezze.

Ha többet szeretne megtudni az adatbázis-kezelő rendszerekről, olvassa el cikkünket Az SQL és NoSQL adatbázisok, valamint a különböző adatbázis-modellek megértéséről.

most, hogy általában lefedtük a relációs adatbázis-kezelő rendszereket, térjünk át a három nyílt forráskódú relációs adatbázis közül az elsőre, amelyet ez a cikk tartalmaz: SQLite.

SQLite

az SQLite egy önálló, fájlalapú és teljesen nyílt forráskódú RDBMS, amely hordozhatóságáról, megbízhatóságáról és erős teljesítményéről ismert még alacsony memóriájú környezetben is. Tranzakciói sav-kompatibilisek, még akkor is, ha a rendszer összeomlik vagy áramkimaradás következik be.

az SQLite projekt weboldala “kiszolgáló nélküli” adatbázisként írja le. A legtöbb relációs adatbázis-motor szerverfolyamatként valósul meg, amelyben a programok egy folyamatközi kommunikáción keresztül kommunikálnak a gazdagépszerverrel, amely továbbítja a kéréseket. Az SQLite használatával azonban minden olyan folyamat, amely hozzáfér az adatbázishoz, közvetlenül az adatbázis lemezfájljából olvas és ír. Ez leegyszerűsíti az SQLite telepítési folyamatát, mivel kiküszöböli a szerverfolyamat konfigurálásának szükségességét. Hasonlóképpen, nincs szükség konfigurációra az SQLite adatbázist használó programokhoz: csak a lemezhez való hozzáférésre van szükségük.

az SQLite ingyenes és nyílt forráskódú szoftver, és használatához nincs szükség külön licencre. A projekt azonban számos kiterjesztést kínál-mindegyik egyszeri díj ellenében -, amelyek segítenek a tömörítésben és a titkosításban. Ezenkívül a projekt különféle kereskedelmi támogatási csomagokat kínál, mindegyik éves díj ellenében.

SQLite támogatott adattípusok

SQLite lehetővé teszi a különböző adattípusok, szervezett a következő tárolási osztályok:

adattípus magyarázat
null minden NULL értéket tartalmaz.
integer aláírt egész számok, tárolva 1, 2, 3, 4, 6, vagy 8 bájt az érték nagyságától függően.
real valós számok vagy lebegőpontos értékek, 8 bájtos lebegőpontos számként tárolva.
text az adatbázis kódolásával tárolt szöveges karakterláncok, amelyek lehetnek UTF-8, UTF-16BE vagy UTF-16le.
blob bármilyen adatfolt, minden blobot pontosan úgy tárolva, ahogy bevitték.

az SQLite összefüggésében a “tárolási osztály” és az “adattípus” kifejezések felcserélhetők. Ha többet szeretne megtudni az SQLite adattípusairól és az SQLite típus affinitásáról, nézze meg az SQLite hivatalos dokumentációját a témában.

az SQLite előnyei

  • kis helyigény: ahogy a neve is mutatja, az SQLite könyvtár nagyon könnyű. Bár az általa használt hely a telepített rendszertől függően változik, kevesebb, mint 600kib helyet foglalhat el. Ezenkívül teljesen önálló, vagyis nincs olyan külső függőség, amelyet telepítenie kell a rendszerére az SQLite működéséhez.
  • felhasználóbarát: az SQLite-et néha “nulla konfigurációjú” adatbázisként írják le, amely készen áll a használatra. Az SQLite nem szerverfolyamatként fut, ami azt jelenti, hogy soha nem kell leállítani, elindítani vagy újraindítani, és nem tartalmaz olyan konfigurációs fájlokat, amelyeket kezelni kell. Ezek a funkciók segítenek egyszerűsíteni az utat az SQLite telepítésétől az alkalmazással való integrálásig.
  • hordozható: Más adatbázis-kezelő rendszerekkel ellentétben, amelyek általában különálló fájlok nagy tételeként tárolják az adatokat, egy teljes SQLite adatbázis egyetlen fájlban tárolódik. Ez a fájl bárhol megtalálható a könyvtárhierarchiában, és cserélhető adathordozón vagy fájlátviteli protokollon keresztül megosztható.

az SQLite hátrányai

  • Korlátozott egyidejűség: bár több folyamat is hozzáférhet és lekérdezhet egy SQLite adatbázist egyszerre, csak egy folyamat módosíthatja az adatbázist egy adott időpontban. Ez azt jelenti, hogy az SQLite nagyobb párhuzamosságot támogat, mint a legtöbb más beágyazott adatbázis-kezelő rendszer, de nem annyira, mint az ügyfél/szerver RDBMSs, mint a MySQL vagy a PostgreSQL.
  • nincs felhasználókezelés: az adatbázis-rendszerek gyakran támogatják a felhasználókat, vagy az adatbázishoz és a táblákhoz előre meghatározott hozzáférési jogosultságokkal rendelkező felügyelt kapcsolatokat. Mivel az SQLite közvetlenül egy közönséges lemezfájlba olvas és ír, az egyetlen alkalmazható hozzáférési engedély az alapul szolgáló operációs rendszer tipikus hozzáférési engedélye. Ez az SQLite-t rossz választássá teszi olyan alkalmazások számára, amelyek több felhasználót igényelnek speciális hozzáférési engedélyekkel.
  • biztonság: a kiszolgálót használó adatbázis-motor bizonyos esetekben jobb védelmet nyújthat az ügyfélalkalmazás hibáival szemben, mint egy kiszolgáló nélküli adatbázis, például az SQLite. Például az ügyfél kóbor mutatói nem károsíthatják a kiszolgáló memóriáját. Továbbá, mivel a szerver egyetlen állandó folyamat, az ügyfél-kiszolgáló adatbázis nagyobb pontossággal tudja ellenőrizni az adathozzáférést, mint egy kiszolgáló nélküli adatbázis, lehetővé téve a finomszemcsés zárolást és a jobb párhuzamosságot.

mikor kell használni az SQLite-t

  • beágyazott alkalmazások: az SQLite egy nagyszerű Adatbázis-választás olyan alkalmazásokhoz, amelyek hordozhatóságot igényelnek, és nem igényelnek jövőbeli bővítést. Ilyenek például az egyfelhasználós helyi alkalmazások, valamint a mobil alkalmazások vagy játékok.
  • Disk access replacement: azokban az esetekben, amikor egy alkalmazásnak közvetlenül a lemezre kell olvasnia és írnia a fájlokat, hasznos lehet az SQLite használata az SQL használatával járó további funkcionalitás és egyszerűség érdekében.
  • tesztelés: Sok alkalmazás esetében túlzott lehet a funkcionalitás tesztelése egy további kiszolgálói folyamatot használó DBMS-sel. SQLite van egy in-memory módban, amely lehet használni, hogy fut tesztek nélkül gyorsan rezsi tényleges adatbázis műveletek, így ideális választás a tesztelés.

ha nem használja SQLite

  • munka sok adat: SQLite technikailag támogatja az adatbázis akár 140tb méretű, mindaddig, amíg a lemezmeghajtó és a fájlrendszer is támogatja az adatbázis méretét követelményeket. Az SQLite webhely azonban azt javasolja, hogy az 1 TB-hoz közeledő adatbázisokat központosított kliens-szerver adatbázisban helyezzék el, mivel egy ilyen méretű vagy annál nagyobb SQLite adatbázist nehéz lenne kezelni.
  • magas írási kötetek: az SQLite csak egy írási műveletet tesz lehetővé egy adott időpontban, ami jelentősen korlátozza az átviteli sebességet. Ha az alkalmazás sok írási műveletet vagy több egyidejű írót igényel, az SQLite nem biztos, hogy megfelel az Ön igényeinek.
  • hálózati hozzáférés szükséges: Mivel az SQLite szerver nélküli adatbázis, nem biztosít közvetlen hálózati hozzáférést az adataihoz. Ez a hozzáférés be van építve az alkalmazásba, így ha az SQLite adatai az alkalmazástól külön gépen találhatók, akkor nagy sávszélességű motor-lemez kapcsolat szükséges a hálózaton keresztül. Ez egy drága, nem hatékony megoldás, és ilyen esetekben egy kliens-szerver DBMS lehet jobb választás.

MySQL

a DB-Engines rangsor szerint a MySQL volt a legnépszerűbb nyílt forráskódú RDBMS, mióta a webhely 2012-ben elkezdte nyomon követni az adatbázis népszerűségét. Ez egy funkciókban gazdag termék, amely a világ legnagyobb webhelyeinek és alkalmazásainak, köztük a Twitter, a Facebook, a Netflix és a Spotify. A MySQL használatának megkezdése viszonylag egyszerű, köszönhetően nagyrészt a teljes dokumentációnak és a fejlesztők nagy közösségének, valamint a MySQL-hez kapcsolódó online források bőségének.

a MySQL-t a sebességre és a megbízhatóságra tervezték, a szabványos SQL teljes betartásának rovására. A MySQL fejlesztői folyamatosan azon dolgoznak, hogy jobban betartsák a szabványos SQL-t, de még mindig elmarad a többi SQL implementációtól. Ez azonban jön a különböző SQL módok és kiterjesztések, hogy közelebb hozza a megfelelőség. Az SQLite-t használó alkalmazásoktól eltérően a MySQL adatbázist használó alkalmazások külön démon folyamaton keresztül férnek hozzá. Mivel a szerverfolyamat az adatbázis és más alkalmazások között áll, nagyobb ellenőrzést tesz lehetővé az adatbázishoz való hozzáférés felett.

a MySQL számos harmadik féltől származó alkalmazást, eszközt és integrált könyvtárat inspirált, amelyek kiterjesztik funkcionalitását és megkönnyítik a munkát. A harmadik féltől származó eszközök közül néhány a phpMyAdmin, a DBeaver és a HeidiSQL.

A MySQL támogatott adattípusai

a MySQL adattípusai három nagy kategóriába sorolhatók: numerikus típusok, dátum és idő típusok, valamint karakterlánc típusok.

numerikus típusok:

adattípus magyarázat
tinyint egy nagyon kicsi egész szám. Ennek a numerikus adattípusnak az aláírt tartománya -128-127, míg az aláíratlan tartomány 0-255.
smallint egy kis egész szám. Ennek a numerikus típusnak az aláírt tartománya -32768-32767, míg az aláíratlan tartomány 0-65535.
mediumint közepes méretű egész szám. Ennek a numerikus adattípusnak az aláírt tartománya -8388608 – 8388607, míg az aláíratlan tartomány 0-tól 16777215-ig terjed.
intvagy integer normál méretű egész szám. Ennek a numerikus adattípusnak az aláírt tartománya -2147483648 – 2147483647, míg az aláíratlan tartomány 0-4294967295.
bigint nagy egész szám. Ennek a numerikus adattípusnak az aláírt tartománya -9223372036854775808-9223372036854775807, míg az aláíratlan tartomány 0-tól 18446744073709551615-ig terjed.
float egy kis (egypontos) lebegőpontos szám.
doubledouble precision, vagy real normál méretű (dupla pontosságú) lebegőpontos szám.
decdecimalfixed, vagy numeric csomagolt fixpontos szám. Az adattípus bejegyzéseinek megjelenítési hossza az oszlop létrehozásakor kerül meghatározásra, és minden bejegyzés ehhez a hosszúsághoz tapad.
bool vagy boolean a logikai érték olyan adattípus, amelynek csak két lehetséges értéke van, általában vagy true vagy false.
bit egy bit értéktípus, amelyhez megadhatja az értékenkénti bitek számát, 1-től 64-ig.

dátum és idő típusok:

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; az ilyen típusú bejegyzések a jobb oldalon vannak kitöltve szóközökkel, hogy tároláskor megfeleljenek a megadott hosszúságnak.
varchar változó hosszúságú karakterlánc.
binary hasonló a char típushoz, de egy meghatározott hosszúságú bináris bájt karakterlánc, nem pedig nem bináris karakterlánc.
varbinary hasonló a varchar típushoz, de egy bináris bájt karakterlánc változó hosszúságú, nem pedig nem bináris karakterlánc.
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 egy felsorolás, amely egy string objektum, amely egyetlen értéket vesz fel a táblázat létrehozásakor deklarált értékek listájából.
set hasonló a felsoroláshoz, egy karakterlánc objektum, amelynek nulla vagy több értéke lehet, amelyek mindegyikét a táblázat létrehozásakor megadott megengedett értékek listájából kell kiválasztani.

a MySQL előnyei

  • népszerűség és könnyű használat: Mint a világ egyik legnépszerűbb adatbázis-rendszere, nincs hiány olyan adatbázis-adminisztrátorokból, akik tapasztalattal rendelkeznek a MySQL használatával. Hasonlóképpen, rengeteg dokumentáció van nyomtatásban és online a MySQL adatbázis telepítéséről és kezeléséről, valamint számos harmadik féltől származó eszköz-például a phpMyAdmin—, amelyek célja az adatbázis használatának megkezdésének egyszerűsítése.
  • biztonság: MySQL jön telepítve egy script, amely segít, hogy javítsa a biztonságot az adatbázis beállításával a telepítés jelszó biztonsági szintet, meghatározó jelszót a root felhasználó, eltávolítja a névtelen fiókok, és eltávolítja teszt adatbázisok, amelyek alapértelmezés szerint minden felhasználó számára elérhető. Az SQLite-től eltérően a MySQL támogatja a felhasználói kezelést, és lehetővé teszi a hozzáférési jogosultságok megadását felhasználónként.
  • sebesség: azáltal, hogy nem valósítja meg az SQL bizonyos funkcióit, a MySQL fejlesztők képesek voltak rangsorolni a sebességet. Míg az újabb benchmark tesztek azt mutatják, hogy más RDBMS-ek, mint például a PostgreSQL, a sebesség szempontjából megegyezhetnek vagy legalábbis megközelíthetik a MySQL-t, a MySQL továbbra is rendkívül gyors adatbázis-megoldás.
  • replikáció: A MySQL számos különböző típusú replikációt támogat, ami az információ megosztásának gyakorlata két vagy több gazdagép között a megbízhatóság, a rendelkezésre állás és a hibatűrés javítása érdekében. Ez hasznos az adatbázis biztonsági mentési megoldásának beállításához vagy az adatbázis vízszintes méretezéséhez.

A MySQL hátrányai

  • ismert korlátozások: Mivel a MySQL-t a sebességre és a könnyű használatra tervezték, nem pedig a teljes SQL-megfelelésre, bizonyos funkcionális korlátokkal jár. Például hiányzik a FULL JOIN záradékok támogatása.
  • licencelési és tulajdonosi jellemzők:a MySQL kettős licencű szoftver, egy ingyenes és nyílt forráskódú community edition licenccel a GPLv2 alatt, és számos fizetett kereskedelmi kiadással, saját licenc alatt. Emiatt egyes funkciók és bővítmények csak a saját kiadásokhoz érhetők el.
  • lassú fejlődés: Mivel a MySQL projektet 2008-ban a Sun Microsystems, majd 2009-ben az Oracle Corporation vásárolta meg, a felhasználók panaszai szerint a DBMS fejlesztési folyamata jelentősen lelassult, mivel a közösségnek már nincs ügynöksége a problémák gyors reagálására és a változások végrehajtására.

mikor kell használni a MySQL-t

  • elosztott műveletek: a MySQL replikációs támogatása nagyszerű választás olyan elosztott adatbázis-beállításokhoz, mint az elsődleges-másodlagos vagy az elsődleges-elsődleges architektúrák.
  • weboldalak és webes alkalmazások: A MySQL számos weboldalt és alkalmazást működtet az Interneten keresztül. Ez nagyrészt annak köszönhető, hogy mennyire könnyű telepíteni és beállítani a MySQL adatbázist, valamint annak általános sebességét és skálázhatóságát hosszú távon.
  • várható jövőbeli növekedés: a MySQL replikációs támogatása elősegítheti a vízszintes méretezést. Továbbá, ez egy viszonylag egyszerű folyamat frissíteni egy kereskedelmi MySQL termék, mint a MySQL Cluster, amely támogatja az automatikus sharding, egy másik vízszintes méretezési folyamat.

ha nem használja MySQL

  • SQL megfelelés szükséges: Mivel a MySQL nem próbálja meg megvalósítani a teljes SQL szabványt, ez az eszköz nem teljesen SQL-kompatibilis. Ha a teljes vagy akár majdnem teljes SQL megfelelés elengedhetetlen a használati esethez, érdemes egy teljesebb kompatibilis DBMS-t használni.
  • párhuzamosság és nagy adatmennyiségek: bár a MySQL általában jól teljesít az olvasási nehéz műveleteknél, az egyidejű olvasási írások problémásak lehetnek. Ha az alkalmazás lesz sok felhasználó írásban adatokat egyszerre, egy másik RDBMS, mint a PostgreSQL lehet egy jobb választás az adatbázis.

PostgreSQL

PostgreSQL, más néven Postgres, számlázza magát, mint “a legfejlettebb nyílt forráskódú relációs adatbázis a világon.”Azzal a céllal jött létre, hogy rendkívül bővíthető és szabványoknak megfelelő legyen. A PostgreSQL egy objektum-relációs adatbázis, ami azt jelenti, hogy bár elsősorban relációs adatbázis, olyan funkciókat is tartalmaz — mint például a táblázat öröklése és a funkció túlterhelése -, amelyek gyakrabban társulnak az objektum adatbázisokhoz.

a Postgres képes egyszerre több feladat hatékony kezelésére, ezt a tulajdonságot párhuzamosságnak nevezik. Ezt olvasási zárak nélkül éri el a Multiversion Concurrency Control (MVCC) megvalósításának köszönhetően, amely biztosítja tranzakcióinak atomicitását, konzisztenciáját, elszigeteltségét és tartósságát, más néven ACID compliance.

A PostgreSQL-t nem használják olyan széles körben, mint a MySQL-t, de még mindig vannak olyan harmadik féltől származó eszközök és könyvtárak, amelyek egyszerűsítik a PostgreSQL-lel való munkát, beleértve a pgAdmin és a Postbird.

A PostgreSQL támogatott adattípusai

A PostgreSQL támogatja a numerikus, string és dátum és idő adattípusokat, például a MySQL-t. Ezenkívül támogatja a geometriai alakzatok, hálózati címek, bitstringek, szöveges keresések és JSON bejegyzések adattípusait, valamint számos egyedi adattípust.

numerikus típusok:

adattípus magyarázat
bigint aláírt 8 bájtos egész szám.
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 megfelelés, amellett, hogy egy hosszú listát az opcionális funkciók.
  • nyílt forráskódú és közösségvezérelt: egy teljesen nyílt forráskódú projekt, a PostgreSQL forráskódját egy nagy és elkötelezett közösség fejlesztette ki. Hasonlóképpen, a Postgres közösség számos online forrást tart fenn és járul hozzá, amelyek leírják, hogyan kell dolgozni a DBMS-sel, beleértve a hivatalos dokumentációt, a PostgreSQL wikit és különböző online fórumokat.
  • Extensible: a felhasználók programozottan és menet közben is kiterjeszthetik a PostgreSQL-t katalógusvezérelt működése és dinamikus betöltése révén. Meg lehet jelölni egy objektumkód fájlt, például egy megosztott könyvtárat, és a PostgreSQL szükség szerint betölti azt.

A PostgreSQL hátrányai

  • memória teljesítménye: minden új kliens kapcsolathoz a PostgreSQL egy új folyamatot villant fel. Minden új folyamat kiosztott mintegy 10 MB memória, amely összeadódik gyorsan adatbázisok sok kapcsolat. Ennek megfelelően az egyszerű olvasási nehéz műveleteknél a PostgreSQL általában kevésbé teljesítőképes, mint más RDBMS-ek, például a MySQL.
  • Népszerűség: Bár az utóbbi években szélesebb körben használták, a PostgreSQL történelmileg elmaradt a MySQL-től a népszerűség szempontjából. Ennek egyik következménye, hogy még mindig kevesebb harmadik féltől származó eszköz létezik, amelyek segíthetnek a PostgreSQL adatbázis kezelésében. Hasonlóképpen, nincs annyi adatbázis-adminisztrátor, aki tapasztalattal rendelkezik a Postgres adatbázis kezelésében, mint a MySQL tapasztalattal rendelkezők.

mikor kell használni a PostgreSQL-t

  • Az adatok integritása fontos: A PostgreSQL 2001 óta teljes mértékben ACID-kompatibilis, és multiverziós pénznem-vezérlést hajt végre annak biztosítása érdekében, hogy az adatok konzisztensek maradjanak, így az RDBMS erős választása, amikor az adatok integritása kritikus.
  • integráció más eszközökkel: a PostgreSQL számos programozási nyelvvel és platformmal kompatibilis. Ez azt jelenti, hogy ha valaha át kell telepítenie az adatbázisát egy másik operációs rendszerbe, vagy integrálnia kell egy adott eszközzel, akkor valószínűleg könnyebb lesz egy PostgreSQL adatbázissal, mint egy másik DBMS-sel.
  • komplex műveletek: A Postgres támogatja a lekérdezési terveket, amelyek több CPU-t is kihasználhatnak a lekérdezések nagyobb sebességű megválaszolása érdekében. Ez, párosulva a több egyidejű író erős támogatásával, nagyszerű választást jelent olyan összetett műveletekhez, mint az adattárház és az online tranzakciók feldolgozása.

ha nem használja a PostgreSQL-t

  • a sebesség elengedhetetlen: a sebesség rovására a PostgreSQL-t a bővíthetőség és a kompatibilitás szem előtt tartásával tervezték. Ha a projekt a lehető leggyorsabb olvasási műveleteket igényli, akkor a PostgreSQL nem biztos, hogy a DBMS legjobb választása.
  • Egyszerű beállítások: Nagy funkciókészletének és a szabványos SQL-hez való erős ragaszkodásának köszönhetően a Postgres túlzott lehet az egyszerű adatbázis-beállításokhoz. Olvasási nehéz műveleteknél, ahol sebességre van szükség, a MySQL általában praktikusabb választás.
  • komplex replikáció: bár a PostgreSQL erős támogatást nyújt a replikációhoz, ez még mindig viszonylag új funkció, és néhány konfiguráció — például egy elsődleges-elsődleges architektúra — csak kiterjesztésekkel lehetséges. A replikáció egy érettebb funkció a MySQL-en, és sok felhasználó úgy látja, hogy a MySQL replikációja könnyebben megvalósítható, különösen azok számára, akik nem rendelkeznek a szükséges adatbázis-és rendszeradminisztrációs tapasztalattal.

következtetés

ma az SQLite, a MySQL és a PostgreSQL a három legnépszerűbb nyílt forráskódú relációs adatbázis-kezelő rendszer a világon. Mindegyiknek megvan a maga egyedi jellemzői és korlátai, és kiemelkedik az egyes forgatókönyvek. Az RDBMS-ről való döntéskor jó néhány változó játszik szerepet, és a választás ritkán olyan egyszerű, mint a leggyorsabb vagy a legtöbb funkcióval rendelkező kiválasztása. A következő alkalommal, amikor szüksége van egy relációs adatbázis-megoldásra, győződjön meg róla, hogy alaposan megvizsgálja ezeket és más eszközöket, hogy megtalálja az Ön igényeinek leginkább megfelelőt.

Ha többet szeretne megtudni az SQL-ről és arról, hogyan kell használni egy relációs adatbázis kezelésére, javasoljuk, hogy olvassa el az SQL adatbázis kezelése csalólapunkat. Másrészt, ha szeretné megismerni a nem relációs (vagy NoSQL) adatbázisokat, nézze meg a NoSQL adatbázis-kezelő rendszerek összehasonlítását.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.