Johdanto
relaatiotietomalli, joka järjestää tiedot rivien ja sarakkeiden taulukoihin, on vallitseva tietokannan hallintatyökaluissa. Nykyään on olemassa muita tietomalleja, kuten NoSQL ja NewSQL, mutta relaatiotietokannan hallintajärjestelmät (rdbmss) ovat edelleen hallitsevia tietojen tallentamiseen ja hallintaan maailmanlaajuisesti.
tässä artikkelissa verrataan ja vertaillaan kolmea laajimmin toteutettua avoimen lähdekoodin rdbmss: ää: SQLite, MySQL ja PostgreSQL. Erityisesti, se tutkii tietotyypit, että kukin RDBMS käyttää, niiden edut ja haitat, ja tilanteita, joissa ne ovat parhaiten optimoitu.
a Bit About Database Management Systems
tietokannat ovat loogisesti mallinnettuja informaatioryhmiä eli aineistoja. Tietokannan hallintajärjestelmä (DBMS) taas on tietokoneohjelma, joka on vuorovaikutuksessa tietokannan kanssa. DBMS: n avulla voit hallita pääsyä tietokantaan, kirjoittaa tietoja, suorittaa kyselyjä ja suorittaa muita tehtäviä, jotka liittyvät tietokannan hallintaan. Vaikka tietokantojen hallintajärjestelmistä käytetään usein nimitystä ”tietokannat”, nämä kaksi termiä eivät ole keskenään vaihdettavissa. Tietokanta voi olla mikä tahansa tiedonkeruu, ei vain yksi tallennetaan tietokoneeseen, kun taas DBMS on ohjelmisto, jonka avulla voit olla vuorovaikutuksessa tietokantaan.
kaikissa tietokannan hallintajärjestelmissä on taustalla malli, joka jäsentää, miten tietoja tallennetaan ja käytetään. Relaatiotietokannan hallintajärjestelmä on DBMS, joka käyttää relaatiotietomallia. Tässä mallissa tiedot on järjestetty taulukoiksi, joita RDBMSs: n yhteydessä kutsutaan muodollisemmin suhteiksi. Relaatio on joukko tupleja eli taulukon rivejä, joissa jokainen tuple jakaa joukon attribuutteja tai sarakkeita:
useimmat relaatiotietokannat käyttävät strukturoitua kyselykieltä (SQL) datan hallintaan ja kyselyyn. Monet RDBMSs: t käyttävät kuitenkin omaa SQL-murrettaan, jolla voi olla tiettyjä rajoituksia tai laajennuksia. Nämä laajennukset sisältävät tyypillisesti lisäominaisuuksia, joiden avulla käyttäjät voivat suorittaa monimutkaisempia operaatioita kuin ne muuten voisivat standardin SQL.
Huomautus: Termi ”standard SQL” tulee esiin useita kertoja koko tämän oppaan. SQL-standardeja ylläpitävät yhdessä American National Standards Institute (ANSI), International Organization for Standardization (ISO) ja International Electrotechnical Commission (IEC). Aina kun tässä artikkelissa mainitaan ” standard SQL ”tai” SQL-standardi”, se viittaa SQL-standardin nykyiseen versioon, jonka nämä tahot ovat julkaisseet.
on huomattava, että täysi SQL-standardi on suuri ja monimutkainen: full core SQL:2011-vaatimustenmukaisuus vaatii 179 ominaisuutta. Tämän vuoksi useimmat RDBMSs: t eivät tue koko standardia, vaikka jotkut ovat lähempänä täyttä vaatimustenmukaisuutta kuin toiset.
jokaiselle sarakkeelle annetaan tietotyyppi, joka määrää, millaisia merkintöjä kyseisessä sarakkeessa sallitaan. Eri rdbmss toteuttaa erilaisia tietotyyppejä, jotka eivät aina ole suoraan vaihdettavissa. Joitakin yleisiä tietotyyppejä ovat päivämäärät, Jouset, kokonaisluvut, ja boolean.
numeeriset tietotyypit voidaan joko allekirjoittaa, eli ne voivat esittää sekä positiivisia että negatiivisia lukuja, tai allekirjoittaa, jolloin ne voivat edustaa vain positiivisia lukuja. Esimerkiksi MySQL: n tinyint
tietotyyppiin mahtuu 8 bittiä dataa, mikä vastaa 256 mahdollista arvoa. Allekirjoitettu alue Tämän tietotyypin on -128 ja 127, kun allekirjoittamaton alue on 0-255.
joskus tietokannan ylläpitäjä asettaa taulukkoon rajoituksen rajoittaakseen, mitä arvoja siihen voidaan syöttää. Rajoite koskee yleensä yhtä tiettyä saraketta, mutta jotkin rajoitukset voivat koskea myös kokonaista taulukkoa. Tässä muutamia SQL: ssä yleisesti käytettyjä rajoitteita:
-
UNIQUE
: Jos tätä rajoitusta sovelletaan sarakkeeseen, varmistetaan, että kyseisessä sarakkeessa ei ole kahta samanlaista merkintää. -
NOT NULL
: tällä rajoituksella varmistetaan, ettei sarakkeessa ole yhtäänNULL
merkintää. -
PRIMARY KEY
: yhdistelmälläUNIQUE
jaNOT NULL
PRIMARY KEY
rajoite varmistaa, ettei sarakkeessa ole merkintääNULL
ja että jokainen merkintä on erillinen. -
FOREIGN KEY
FOREIGN KEY
on yhden taulukon sarake, joka viittaa toisen taulukonPRIMARY KEY
. Tätä rajoitusta käytetään yhdistämään kaksi taulukkoa toisiinsa:FOREIGN KEY
sarakkeen on oltava jo olemassa ylemmässäPRIMARY KEY
sarakkeessa, jotta kirjoitusprosessi onnistuisi. -
CHECK
: tämä rajoitus rajoittaa sarakkeeseen merkittävien arvojen vaihteluväliä. Esimerkiksi, jos hakemus on tarkoitettu vain Alaskan asukkaille, voit lisätäCHECK
rajoituksen POSTINUMEROSARAKKEESEEN salliaksesi vain 99501: n ja 99950: n väliset merkinnät.
Jos haluat oppia lisää tietokannan hallintajärjestelmistä, tutustu artikkeliimme SQL-ja NoSQL-tietokantojen ja eri tietokantamallien ymmärtämisestä.
nyt kun olemme käsitelleet relaatiotietokannan hallintajärjestelmiä yleisesti, siirrytään ensimmäiseen kolmesta avoimen lähdekoodin relaatiotietokannasta tässä artikkelissa käsitellään: SQLite.
SQLite
SQLite on itsenäinen, tiedostopohjainen ja täysin avoimen lähdekoodin RDBMS, joka tunnetaan kannettavuudestaan, luotettavuudestaan ja vahvasta suorituskyvystään myös vähämuistisissa ympäristöissä. Sen tapahtumat ovat ACID-yhteensopiva, jopa tapauksissa, joissa järjestelmä kaatuu tai kokee sähkökatkon.
SQLite-projektin verkkosivuilla sitä kuvaillaan ”palveluttomaksi” tietokannaksi. Useimmat relaatiotietokantamoottorit toteutetaan palvelinprosessina, jossa ohjelmat kommunikoivat isäntäpalvelimen kanssa prosessien välisellä viestinnällä, joka välittää pyynnöt. SQLite, kuitenkin, mikä tahansa prosessi, joka pääsee tietokantaan lukee ja kirjoittaa tietokantaan levy tiedosto suoraan. Tämä yksinkertaistaa SQLiten määritysprosessia, koska se poistaa palvelinprosessin määrittämisen tarpeen. Myöskään SQLite-tietokantaa käyttäville ohjelmille ei tarvita kokoonpanoa: he tarvitsevat vain pääsyn levylle.
SQLite on vapaa ja avoimen lähdekoodin ohjelmisto, eikä sen käyttämiseen tarvita erityistä lisenssiä. Projekti tarjoaa kuitenkin useita laajennuksia-jokainen kertamaksua vastaan-jotka auttavat pakkaamisessa ja salauksessa. Lisäksi hanke tarjoaa erilaisia kaupallisia tukipaketteja, joista jokainen on vuosimaksullinen.
SQLiten Tuetut tietotyypit
SQLite mahdollistaa erilaisia tietotyyppejä, jotka on järjestetty seuraaviin tallennusluokkiin:
tietotyyppi | selitys |
---|---|
null |
sisältää kaikki NULL arvot. |
integer |
allekirjoitetut kokonaisluvut, tallennettu 1, 2, 3, 4, 6, tai 8 tavua riippuen arvon suuruudesta. |
real |
reaaliluvut eli 8-tavuisina liukulukuina tallennetut liukulukuarvot. |
text |
tietokannan koodausta käyttäen tallennetut tekstijonot, jotka voivat olla joko UTF-8, UTF-16BE tai UTF-16LE. |
blob |
mikä tahansa tietomöykky, jonka jokainen möykky on tallennettu täsmälleen sellaisena kuin se on syötetty. |
SQLiten yhteydessä termejä ”tallennusluokka” ja ”tietotyyppi” pidetään keskenään vaihdettavina. Jos haluat lisätietoja SQLiten tietotyypeistä ja SQLite-tyyppisestä affiniteetista, tutustu SQLiten virallisiin asiakirjoihin aiheesta.
SQLiten edut
- pieni jalanjälki: nimensä mukaisesti SQLite-kirjasto on erittäin kevyt. Vaikka sen käyttämä tila vaihtelee sen mukaan, mihin järjestelmään se on asennettu, se voi viedä alle 600KiB tilaa. Lisäksi, se on täysin itsenäinen, eli ei ole mitään ulkoisia riippuvuuksia sinun täytyy asentaa järjestelmään SQLite toimiakseen.
- käyttäjäystävällinen: SQLiteä kuvaillaan joskus ”nollakonfiguraatioksi”, joka on käyttövalmis heti kättelyssä. SQLite ei toimi palvelinprosessina, mikä tarkoittaa, että sitä ei tarvitse koskaan pysäyttää, käynnistää tai käynnistää uudelleen eikä sen mukana tule määritystiedostoja, joita pitää hallita. Nämä ominaisuudet auttavat virtaviivaistamaan polkua SQLiten asentamisesta sen integroimiseen sovellukseen.
- kannettava: Toisin kuin muut tietokannan hallintajärjestelmät, jotka tyypillisesti tallentavat tietoja suurena eränä erillisiä tiedostoja, kokonainen SQLite-tietokanta tallennetaan yhteen tiedostoon. Tämä tiedosto voi sijaita missä tahansa hakemistohierarkiassa, ja se voidaan jakaa siirrettävän median tai tiedostonsiirtoprotokollan kautta.
SQLiten haitat
- rajoitettu samanaikaisuus: vaikka useat prosessit voivat käyttää ja kysellä SQLite-tietokantaa samanaikaisesti, vain yksi prosessi voi tehdä muutoksia tietokantaan milloin tahansa. Tämä tarkoittaa, että SQLite tukee suurempaa samanaikaisuutta kuin useimmat muut sulautetut tietokannan hallintajärjestelmät, mutta ei yhtä paljon kuin asiakas/palvelin rdbmss kuten MySQL tai PostgreSQL.
- ei käyttäjähallintaa: tietokantajärjestelmissä on usein käyttäjien tuki tai hallinnoidut yhteydet, joilla on ennalta määritellyt käyttöoikeudet tietokantaan ja taulukoihin. Koska SQLite lukee ja kirjoittaa suoraan tavalliselle levytiedostolle, ainoat sovellettavat käyttöoikeudet ovat taustalla olevan käyttöjärjestelmän tyypilliset käyttöoikeudet. Tämän vuoksi SQLite on huono valinta sovelluksille, jotka vaativat useita käyttäjiä, joilla on erityiset käyttöoikeudet.
- turvallisuus: palvelinta käyttävä tietokantamoottori voi joissakin tapauksissa tarjota paremman suojan asiakassovelluksen bugeilta kuin SQLiten kaltainen palvelimeton tietokanta. Esimerkiksi asiakkaan eksyneet osoittimet eivät voi turmella palvelimen muistia. Myös, koska palvelin on yksi pysyvä prosessi, asiakas-palvelin tietokanta cancontrol tietojen access tarkempi kuin palvelimeton tietokanta, mahdollistaa hienorakeisempi lukitus ja parempi samanaikaisuus.
milloin käyttää SQLite
- sulautettuja sovelluksia: SQLite on loistava tietokantavalikoima sovelluksille, jotka tarvitsevat siirrettävyyttä eivätkä vaadi tulevaa laajennusta. Esimerkkejä ovat yhden käyttäjän paikalliset sovellukset ja mobiilisovellukset tai pelit.
- Disk access replacement: tapauksissa, joissa sovelluksen on luettava ja kirjoitettava tiedostoja suoraan levylle, voi olla hyödyllistä käyttää SQLiteä SQL: n käytön tuomien lisätoimintojen ja yksinkertaisuuden vuoksi.
- testaus: Monien sovellusten kohdalla voi olla liioittelua testata niiden toimivuutta DBMS: llä, joka käyttää ylimääräistä palvelinprosessia. SQLite: ssä on in-memory-tila, jota voidaan käyttää testien suorittamiseen nopeasti ilman varsinaisten tietokantaoperaatioiden ylimenoa, joten se on ihanteellinen valinta testaukseen.
kun ei käytetä SQLite
- paljon dataa käytettäessä: SQLite voi teknisesti tukea 140tb: n kokoista tietokantaa, kunhan levyasema ja tiedostojärjestelmä tukevat myös tietokannan kokovaatimuksia. SQLite-sivusto suosittelee kuitenkin, että kaikki 1TB: tä lähestyvät tietokannat säilytetään keskitetyssä asiakas-palvelin-tietokannassa, koska sen kokoista tai suurempaa SQLite-tietokantaa olisi vaikea hallita.
- suuret kirjoitusmäärät: SQLite mahdollistaa vain yhden kirjoitusoperaation kerrallaan, mikä rajoittaa merkittävästi sen läpimenoa. Jos sovelluksesi vaatii paljon kirjoitustoimintoja tai useita samanaikaisia kirjoittajia, SQLite ei välttämättä riitä tarpeisiisi.
- Verkkoyhteys vaaditaan: Koska SQLite on palvelimeton tietokanta, se ei tarjoa suoraa verkkoyhteyttä sen tietoihin. Tämä käyttöoikeus on rakennettu sovellukseen, joten jos SQLiten tiedot sijaitsevat erillisellä koneella sovelluksesta, se vaatii suuren kaistanleveyden moottorista levylle-linkin verkon poikki. Tämä on kallis, tehoton ratkaisu, ja tällaisissa tapauksissa asiakas-palvelin DBMS voi olla parempi valinta.
MySQL
DB-moottoreiden rankingin mukaan MySQL on ollut suosituin avoimen lähdekoodin RDBMS siitä lähtien, kun sivusto alkoi seurata tietokannan suosiota vuonna 2012. Se on monipuolinen tuote, joka valtaa monet maailman suurimmista verkkosivustoista ja sovelluksista, kuten Twitter, Facebook, Netflix ja Spotify. MySQL: n aloittaminen on suhteellisen yksinkertaista, kiitos suurelta osin sen tyhjentävän dokumentaation ja suuren kehittäjäyhteisön sekä MySQL: ään liittyvien resurssien runsauden verkossa.
MySQL suunniteltiin nopeuteen ja luotettavuuteen standardin SQL: n täyden noudattamisen kustannuksella. MySQL-kehittäjät pyrkivät jatkuvasti lähemmäs standardin SQL: n noudattamista, mutta se on edelleen jäljessä muista SQL-toteutuksista. Sen mukana tulee kuitenkin erilaisia SQL-tiloja ja laajennuksia, jotka tuovat sen lähemmäs vaatimustenmukaisuutta. Toisin kuin SQLite-sovelluksia käyttävät sovellukset, MySQL-tietokantaa käyttävät sovellukset käyttävät sitä erillisen daemon-prosessin kautta. Koska palvelinprosessi seisoo tietokannan ja muiden sovellusten välissä, se mahdollistaa suuremman kontrollin siitä, kenellä on pääsy tietokantaan.
MySQL on inspiroinut runsaasti kolmannen osapuolen sovelluksia, työkaluja ja integroituja kirjastoja, jotka laajentavat sen toiminnallisuutta ja helpottavat työskentelyä. Jotkut laajemmin käytetty näistä kolmannen osapuolen työkaluja ovat phpMyAdmin, DBeaver, ja HeidiSQL.
MySQL: n Tuetut tietotyypit
MySQL: n tietotyypit voidaan järjestää kolmeen laajaan luokkaan: numeeriset tyypit, päivämäärä-ja aikatyypit sekä merkkijonotyypit.
numeeriset tyypit:
tietotyyppi | selitys |
---|---|
tinyint |
hyvin pieni kokonaisluku. Tämän numeerisen tietotyypin allekirjoitettu vaihteluväli on -128 – 127, kun taas allekirjoittamaton vaihteluväli on 0-255. |
smallint |
pieni kokonaisluku. Tämän numeerisen tyypin allekirjoitettu vaihteluväli on -32768 – 32767, kun taas allekirjoittamaton vaihteluväli on 0-65535. |
mediumint |
keskikokoinen kokonaisluku. Tämän numeerisen tietotyypin allekirjoitettu vaihteluväli on -8388608 – 8388607, kun taas allekirjoittamaton vaihteluväli on 0-16777215. |
int tai integer |
normaalikokoinen kokonaisluku. Tämän numeerisen tietotyypin allekirjoitettu vaihteluväli on -2147483648-2147483647, kun taas allekirjoittamaton vaihteluväli on 0-4294967295. |
bigint |
suuri kokonaisluku. Tämän numeerisen tietotyypin allekirjoitettu vaihteluväli on -9223372036854775808 – 9223372036854775807, kun taas allekirjoittamaton vaihteluväli on 0-18446744073709551615. |
float |
pieni (yhden tarkkuuden) liukuluku. |
double , tai real |
normaalikokoinen (kaksitarkka) liukulukuluku. |
dec decimal fixed tai numeric |
pakattua kiintopistenumeroa. Tämän tietotyypin tietueiden näytön pituus määritellään sarakkeen luomisen yhteydessä, ja jokainen merkintä noudattaa kyseistä pituutta. |
a Boolean on tietotyyppi, jolla on vain kaksi mahdollista arvoa, yleensä joko true taifalse . |
|
bit |
bittiarvotyyppi, jolle voi määritellä bittien määrän arvoa kohti, 1: stä 64: ään. |
päivämäärä ja kellonaika:
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; tämän tyyppiset merkinnät on pehmustettu oikealle välilyönneillä, jotka täyttävät määrätyn pituuden tallennettaessa. |
varchar |
muuttuvan pituinen jono. |
binary |
samanlainen kuin char tyyppi, mutta tietyn pituinen binäärinen tavumerkkijono kuin ei-binäärimerkkijono. |
varbinary |
samankaltainen kuin varchar tyyppi, mutta muuttuvapituinen binäärinen tavujoukko ei ole tavanomainen merkkijono. |
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 |
arvojoukko, joka on merkkijono-objekti, joka ottaa yhden arvon taulukon luomisen yhteydessä ilmoitetuista arvoista. |
set |
samanlainen kuin arvojoukko, merkkijono-objekti, jolla voi olla nolla tai useampia arvoja, joista jokainen on valittava taulukkoa luotaessa määriteltyjen sallittujen arvojen luettelosta. |
MySQL: n edut
- Suosio ja helppokäyttöisyys: Yhtenä maailman suosituimmista tietokantajärjestelmistä ei ole pulaa tietokannan ylläpitäjistä, joilla on kokemusta työskentelystä MySQL: n kanssa. Samoin, siellä on runsaasti dokumentaatiota tulostaa ja hallita MySQL-tietokanta, sekä useita kolmannen osapuolen työkaluja — kuten phpMyAdmin — jotka pyrkivät yksinkertaistamaan prosessin aloittamista tietokannan kanssa.
- turvallisuus: MySQL on asennettu skripti, joka auttaa parantamaan tietoturvaa tietokannan asettamalla asennuksen salasanan suojaustaso, määrittää salasanan pääkäyttäjälle, poistamalla anonyymit tilit, ja poistamalla testi tietokannat, jotka ovat, oletuksena, saatavilla kaikille käyttäjille. Myös, toisin kuin SQLite, MySQL ei tue käyttäjähallintaa ja voit myöntää käyttöoikeuksia käyttäjäkohtaisesti.
- nopeus: valitsemalla olla toteuttamatta SQL: n tiettyjä ominaisuuksia MySQL: n kehittäjät pystyivät priorisoimaan nopeuden. Vaikka uudemmat benchmark testit osoittavat, että muut Rdbmss kuten PostgreSQL voi vastata tai ainakin tulla lähelle MySQL kannalta nopeus, MySQL on edelleen Maine äärimmäisen nopea tietokantaratkaisu.
- replikointi: MySQL tukee useita erityyppisiä replikaatioita, mikä on käytäntö jakaa tietoa kahdelle tai useammalle isännälle luotettavuuden, käytettävyyden ja vikasietoisuuden parantamiseksi. Tämä on hyödyllistä perustaa tietokannan varmuuskopiointiratkaisu tai horisontaalisesti skaalaus oman tietokannan.
MySQL: n haitat
- tunnetut rajoitukset: Koska MySQL on suunniteltu nopeus ja helppokäyttöisyys sijaan täyden SQL noudattamista, se tulee tiettyjä toiminnallisia rajoituksia. Siitä puuttuu esimerkiksi tuki
FULL JOIN
lausekkeille. - Licensing and proprietary features: MySQL on kaksilisensoitu ohjelmisto, jossa on ilmainen ja avoimen lähdekoodin community edition, joka on lisensoitu GPLv2-lisenssillä, ja useita maksullisia kaupallisia versioita, jotka on julkaistu patentoiduilla lisensseillä. Tämän vuoksi jotkin ominaisuudet ja liitännäiset ovat saatavilla vain patentoituihin versioihin.
- hidastunut kehitys: Koska Sun Microsystems osti MySQL-projektin vuonna 2008 ja myöhemmin Oracle Corporation vuonna 2009, käyttäjiltä on tullut valituksia siitä, että DBMS: n kehitysprosessi on hidastunut merkittävästi, koska yhteisöllä ei ole enää virastoa reagoimaan nopeasti ongelmiin ja toteuttamaan muutoksia.
milloin käyttää MySQL
- hajautettuja operaatioita: MySQL: n replikointituki tekee siitä erinomaisen valinnan hajautettujen tietokantojen asetuksiin, kuten primaaris-sekundaarisiin tai primaaris-primaarisiin arkkitehtuureihin.
- verkkosivut ja verkkosovellukset: MySQL valtuudet monia sivustoja ja sovelluksia Internetissä. Tämä johtuu suurelta osin siitä, kuinka helppoa on asentaa ja perustaa MySQL-tietokanta sekä sen yleinen nopeus ja skaalautuvuus pitkällä aikavälillä.
- odotettu tuleva kasvu: MySQL: n replikaatiotuki voi helpottaa horisontaalista skaalausta. Lisäksi, se on suhteellisen yksinkertainen prosessi päivittää kaupalliseen MySQL tuote, kuten MySQL Cluster, joka tukee automaattista sharding, toinen horisontaalinen skaalaus prosessi.
kun MySQL: ää ei käytetä
- SQL: n noudattaminen on välttämätöntä: Koska MySQL ei yritä toteuttaa koko SQL-standardia, tämä työkalu ei ole täysin SQL-yhteensopiva. Jos täydellinen tai jopa lähes täydellinen SQL compliance on välttämätöntä käyttötapauksessasi, saatat haluta käyttää Täysin yhteensopiva DBMS.
- samanaikaisuus ja suuret tietomäärät: vaikka MySQL yleensä suoriutuu hyvin lukupainotteisilla operaatioilla, samanaikaiset lukukirjoitukset voivat olla ongelmallisia. Jos sovelluksessasi on monia käyttäjiä kirjoittamassa siihen tietoja kerralla, toinen RDBMS, kuten PostgreSQL, saattaa olla parempi valinta tietokantaan.
PostgreSQL
PostgreSQL, joka tunnetaan myös nimellä Postgres, laskee itsensä ”maailman kehittyneimmäksi avoimen lähdekoodin relaatiotietokannaksi.”Se luotiin tavoitteena olla erittäin laajennettavissa ja standardien mukainen. PostgreSQL on oliorelaatiotietokanta, mikä tarkoittaa, että vaikka se on ensisijaisesti relaatiotietokanta, se sisältää myös ominaisuuksia-kuten taulukon periytymistä ja funktion ylikuormitusta — jotka liittyvät useammin oliotietokantoihin.
Postgres pystyy hoitamaan tehokkaasti useita tehtäviä yhtä aikaa, mikä ominaisuus tunnetaan nimellä concurrency. Se saavuttaa tämän ilman lukulukkoja Multiversion Concurrency Controlin (Mvcc) täytäntöönpanon ansiosta, joka takaa tapahtumiensa atomisuuden, johdonmukaisuuden, eristämisen ja kestävyyden, joka tunnetaan myös nimellä ACID compliance.
PostgreSQL ei ole yhtä laajalti käytetty kuin MySQL, mutta on vielä olemassa useita kolmannen osapuolen työkaluja ja kirjastoja, jotka on suunniteltu yksinkertaistamaan työskentelyä PostgreSQL: n kanssa, mukaan lukien pgAdmin ja Postbird.
PostgreSQL: n Tuetut tietotyypit
PostgreSQL tukee numeerisia, merkkijonoja sekä päivämäärä-ja aikatietotyyppejä, kuten MySQL. Lisäksi se tukee tietotyyppejä geometrisille muodoille, verkko-osoitteille, bittijonoille, tekstihauille ja JSON-merkinnöille sekä useille idiosyncratic-tietotyypeille.
numeeriset tyypit:
tietotyyppi | selitys |
---|---|
bigint |
allekirjoitettu 8 tavun kokonaisluku. |
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 compliance, lisäksi pitkä lista valinnaisia ominaisuuksia.
- avoimen lähdekoodin ja yhteisöpohjainen: täysin avoimen lähdekoodin projekti, PostgreSQL: n lähdekoodi on suuren ja omistautuneen yhteisön kehittämä. Samoin Postgres-yhteisö ylläpitää ja osallistuu lukuisiin online-resursseihin, jotka kuvaavat DBMS: n käyttöä, mukaan lukien viralliset asiakirjat, PostgreSQL-wiki ja erilaiset verkkofoorumit.
- Extensible: käyttäjät voivat laajentaa PostgreSQL: ää ohjelmallisesti ja lennossa sen katalogivetoisen toiminnan ja dynaamisen latauksen käytön kautta. Objektikooditiedosto, kuten Jaettu kirjasto, voidaan määrittää, ja PostgreSQL lataa sen tarpeen mukaan.
PostgreSQL: n haitat
- muistin suorituskyky: jokaista uutta asiakasyhteyttä varten PostgreSQL haarukoi uuden prosessin. Jokainen uusi prosessi on varattu noin 10MB muistia, joka voi lisätä jopa nopeasti tietokantoja, joissa on paljon yhteyksiä. Näin ollen yksinkertaisissa lukupainotteisissa operaatioissa PostgreSQL on tyypillisesti vähemmän performantti kuin muut rdbmss: t, kuten MySQL.
- Suosio: Vaikka PostgreSQL on viime vuosina ollut laajemmassa käytössä, se on historiallisesti jäänyt MySQL: n jälkeen suosionsa suhteen. Yksi seuraus tästä on, että on vielä vähemmän kolmannen osapuolen työkaluja, jotka voivat auttaa hallitsemaan PostgreSQL-tietokantaa. Samoin, ei ole niin monta tietokannan ylläpitäjät kokemusta hallintaan Postgres tietokanta verrattuna niihin, joilla on MySQL kokemus.
milloin PostgreSQL: ää
- tietojen eheys on tärkeää: PostgreSQL on ollut täysin ACID-yhteensopiva vuodesta 2001, ja se toteuttaa multiversion-valuuttasäädön varmistaakseen, että data pysyy johdonmukaisena, joten se on vahva valinta RDBMS: ään, kun tietojen eheys on kriittistä.
- integrointi muihin työkaluihin: PostgreSQL on yhteensopiva useiden ohjelmointikielien ja-alustojen kanssa. Tämä tarkoittaa, että jos sinun täytyy joskus siirtää tietokantasi toiseen käyttöjärjestelmään tai integroida se tietyllä työkalulla, se on todennäköisesti helpompaa PostgreSQL-tietokannassa kuin toisessa DBMS: ssä.
- monimutkaiset operaatiot: Postgres tukee kyselysuunnitelmia, jotka voivat hyödyntää useita suorittimia vastatakseen kyselyihin suuremmalla nopeudella. Tämä yhdistettynä sen vahvaan tukeen useille samanaikaisille kirjoittajille tekee siitä erinomaisen valinnan monimutkaisiin operaatioihin, kuten tietovarastointiin ja verkkotapahtumien käsittelyyn.
kun PostgreSQL: ää ei saa käyttää
- nopeus on välttämätöntä: nopeuden kustannuksella PostgreSQL suunniteltiin laajennettavuus ja yhteensopivuus mielessä. Jos projektisi vaatii nopeimman mahdollisen lukuoperaation, PostgreSQL ei välttämättä ole paras vaihtoehto DBMS: lle.
- yksinkertaiset asetelmat: Koska sen suuri ominaisuus asetettu ja vahva noudattaminen standardin SQL, Postgres voi olla ylilyönti yksinkertainen tietokanta asetelmia. Lukupainotteisille operaatioille, joissa tarvitaan nopeutta, MySQL on tyypillisesti käytännöllisempi valinta.
- monimutkainen replikointi: vaikka PostgreSQL tarjoaa vahvan tuen replikoinnille, se on silti suhteellisen uusi ominaisuus ja jotkut konfiguraatiot — kuten primaari-primaarinen arkkitehtuuri — ovat mahdollisia vain laajennusten avulla. Replikointi on kypsempi ominaisuus MySQL: ssä ja monet käyttäjät näkevät MySQL: n replikaation olevan helpompi toteuttaa, erityisesti niille, joilla ei ole tarvittavaa tietokantaa ja järjestelmänhallintakokemusta.
johtopäätös
nykyään SQLite, MySQL ja PostgreSQL ovat maailman kolme suosituinta avoimen lähdekoodin relaatiotietokannan hallintajärjestelmää. Jokaisella on omat ainutlaatuiset ominaisuutensa ja rajoituksensa, ja se loistaa erityisesti skenaarioissa. RDBMS: ää päätettäessä pelissä on melkoinen määrä muuttujia, ja valinta on harvoin niin yksinkertainen kuin nopeimman tai eniten ominaisuuksia omaavan poiminta. Seuraavan kerran olet tarvitsevat relaatiotietokannan ratkaisu, muista tutkia näitä ja muita työkaluja perusteellisesti löytää yksi, joka parhaiten sopii tarpeisiisi.
Jos haluat lisätietoja SQL: stä ja sen käytöstä relaatiotietokannan hallintaan, suosittelemme tutustumaan SQL-tietokannan hallintaan. Toisaalta, jos haluat oppia ei-relaatiotietokannoista (tai NoSQL), tutustu Vertailuumme NoSQL-tietokannan hallintajärjestelmiin.