SQL vai NoSQL? Vaikka näillä kahdella tie­to­kan­nal­la on yhteisiä piirteitä, käyt­tö­tar­koi­tuk­ses­ta riippuen jom­pi­kum­pi niistä sopii sinulle paremmin. Seuraava MongoDB:n ja PostgreSQL:n vertailu keskittyy pää­asias­sa nopeuteen ja tur­val­li­suu­teen.

MongoDB: Ho­ri­son­taa­li­nen skaalaus ja mak­si­maa­li­nen jous­ta­vuus

Jotta voisit ymmärtää tämän vertailun eri me­ne­tel­mät, annamme sinulle lyhyen yleis­kat­sauk­sen MongoDB- ja PostgreSQL-tie­to­kan­nois­ta. MongoDB on saanut nimensä englan­nin­kie­li­ses­tä sanasta “humongous” (valtava). Jär­jes­tel­män julkaisi vuonna 2009 10gen (nykyisin MongoDB Inc.). Se on suun­ni­tel­tu siten, että käyttäjät voivat hallita valtavia tie­to­mää­riä selkeällä ja tiiviillä tavalla. Tämän mah­dol­lis­ta­mi­sek­si NoSQL-tie­to­kan­ta on erityisen joustava ja helposti skaa­lat­ta­va. Ra­ken­tei­set, puo­li­ra­ken­tei­set tai ra­ken­teet­to­mat tiedot tal­len­ne­taan JSON-tyyp­pi­ses­sä BSON-muodossa asia­kir­jo­jen muodossa. MongoDB on kir­joi­tet­tu C++-kielellä, ja sitä jaellaan edelleen maa­il­man­laa­jui­ses­ti avoimen läh­de­koo­din SSPL-li­sens­sil­lä.

PostgreSQL: Vanha tuttu, jolla on modernit edut

MongoDB:n ja PostgreSQL:n ver­tai­lus­sa jäl­kim­mäi­nen ratkaisu edustaa täysin erilaista lä­hes­ty­mis­ta­paa. PostgreSQL toimii täysin re­laa­tio­tie­to­kan­ta­na ja alus­ta­riip­pu­mat­to­mas­ti, vaikka se tukee myös ei-re­laa­tio­tie­to­tyyp­pe­jä. Jär­jes­tel­mä ilmestyi en­sim­mäi­sen kerran vuonna 1996, ja se perustuu ainakin osittain Berkeley-yli­opis­tos­sa 1980-luvulta lähtien ke­hi­tet­tyi­hin tie­to­kan­toi­hin. PostgreSQL Global De­ve­lop­ment Groupin yl­lä­pi­tä­mä jär­jes­tel­mä on edelleen avoimen läh­de­koo­din jär­jes­tel­mä. PostgreSQL väittää olevansa maailman edis­ty­nein avoimen läh­de­koo­din tie­to­kan­ta. Varmaa on, että sitä ar­vos­te­taan maa­il­man­laa­jui­ses­ti sen jous­ta­vuu­den ja vakauden vuoksi. Hal­lin­ta­jär­jes­tel­mä on kir­joi­tet­tu C-kielellä, ja sitä kutsutaan usein yk­sin­ker­tai­ses­ti nimellä ”Postgres”.

Mihin MongoDB ja PostgreSQL käytetään?

Ensi sil­mäyk­sel­lä MongoDB:n ja PostgreSQL:n vertailu näyttää viit­taa­van siihen, että molempia tie­to­kan­to­ja voi­tai­siin käyttää sa­man­kal­tai­siin tar­koi­tuk­siin. Molemmat ratkaisut ovat hyvin suun­ni­tel­tu­ja, erittäin toimivia ja suh­teel­li­sen joustavia tie­to­kan­to­ja, jotka takaavat jär­jes­tyk­sen ja yleis­ku­van myös suurten tai kasvavien tie­to­mää­rien kä­sit­te­lys­sä. Tarkempi analyysi paljastaa, että yritysten on pää­tet­tä­vä omien vaa­ti­mus­ten­sa pe­rus­teel­la, kumpi on parempi MongoDB:n ja PostgreSQL:n ver­tai­lus­sa ja kumpi tie­to­kan­ta vastaa paremmin niiden tar­pei­siin.

NoSQL-ratkaisu on erityisen hyvä valinta, jos tarvitset jär­jes­tel­män, joka kasvaa vaa­ti­mus­te­si mukana. Tämä koskee paitsi pelkkää tie­to­mää­rää myös erilaisia tie­to­tyyp­pe­jä. MongoDB on vaa­ka­suun­nas­sa skaa­lau­tu­va, mikä tekee jär­jes­tel­mäs­tä ihan­teel­li­sen ratkaisun verk­ko­kau­pan alalla, jossa tran­sak­tio­tie­dot on siir­ret­tä­vä nopeasti ja tur­val­li­ses­ti. Nämä edut yh­dis­tet­ty­nä jous­ta­vuu­teen tie­to­tyyp­pien suhteen tekevät MongoDB:stä erin­omai­sen valinnan si­säl­lön­hal­lin­ta­jär­jes­tel­mil­le. Jos tarvitset kon­fi­gu­roin­ti­vaih­toeh­to­ja ja kattavia ana­lyy­si­toi­min­to­ja re­aa­lia­jas­sa, MongoDB on har­kit­se­mi­sen arvoinen vaih­toeh­to.

PostgreSQL sopii laajoihin verk­ko­so­vel­luk­siin ja tarjoaa ar­vok­kai­ta re­surs­se­ja verk­ko­kau­pal­le. Jär­jes­tel­mä on hyvä valinta pilvi- ja esineiden internet-so­vel­luk­siin. PostgreSQL on myös erittäin tehokas yh­teis­työs­sä muiden tie­to­kan­to­jen kanssa.

Toi­min­nal­li­suus

MongoDB:n ja PostgreSQL:n ta­voit­tei­den saa­vut­ta­mi­sek­si valitut polut ovat hyvin erilaiset. Puhtaana NoSQL-rat­kai­su­na MongoDB luopuu kokonaan jäykistä re­laa­tio­tau­lu­kois­ta ja toimii sen sijaan do­ku­ment­ti­poh­jai­ses­ti. Nämä bi­nää­ri­set JSON-do­ku­men­tit (ns. BSON) kootaan sitten ko­koel­miin. Jär­jes­tel­mä perustuu avain-arvo-pareihin. Avain koostuu merk­ki­jo­nos­ta, ja arvot voivat olla muita do­ku­ment­te­ja, boolen arvoja, numeroita tai täysin erilaisia tie­dos­to­tyyp­pe­jä. JSON-do­ku­men­tin ra­ken­net­ta voidaan helposti muuttaa pois­ta­mal­la tai li­sää­mäl­lä yk­sit­täi­siä kenttiä. Tiettyjen do­ku­ment­tien tun­nis­ta­mi­seen on käy­tet­tä­vis­sä teks­ti­ha­ku. Jär­jes­tel­mä ottaa huomioon struk­tu­roi­dut, puo­li­struk­tu­roi­dut ja struk­tu­roi­mat­to­mat tiedot.

Vertailun vuoksi PostgreSQL noudattaa re­laa­tio­lä­hes­ty­mis­ta­paa. Vaikka NoSQL-vaih­toeh­to­ja on lukuisia, tau­luk­ko­poh­jai­sen jär­jes­tel­män käytöllä on myös etunsa. PostgreSQL:n tärkeä omi­nai­suus on, että hal­lin­ta­jär­jes­tel­mä on paljon jous­ta­vam­pi kuin muut SQL-vaih­toeh­dot ja sallii sarakkeet, joissa on aliarvoja. Tie­to­kan­nan hal­lin­ta­jär­jes­tel­mä perustuu myös vie­rai­siin avaimiin ja lau­kai­si­miin. Kyselyt tehdään klassisen asiakas-palvelin-pe­ri­aat­teen mu­kai­ses­ti. Tie­dos­to­ja ja yhteyksiä hallitaan kes­kus­pal­ve­lin­kom­po­nen­tin ”post­mas­ter” kautta. Eri asiakkaat lä­het­tä­vät sitten kyselynsä. PostgreSQL tukee lukuisia tie­to­tyyp­pe­jä, vaikka ne onkin ra­ken­net­ta­va etukäteen.

Suo­ri­tus­ky­ky

MongoDB:n nimi viittaa siihen, että se pystyy kä­sit­te­le­mään valtavia määriä dataa ilman suurempia ongelmia. Jär­jes­tel­mä täyttää tämän lupauksen täysin. Tie­to­kan­ta on vaa­ka­suun­nas­sa skaa­lau­tu­va eikä ole riip­pu­vai­nen yk­sit­täi­sen koneen las­ken­ta­te­hos­ta. Laajan lait­teis­to­va­li­koi­man ja eri vaih­toeh­to­jen yh­dis­tel­män ansiosta sen suo­ri­tus­ky­vyl­le ja tal­len­nus­ka­pa­si­tee­til­le ei ole teoriassa ra­joi­tuk­sia. Jopa silloin, kun useat käyttäjät käyttävät dataa sa­ma­nai­kai­ses­ti, kyselyjen nopeus pysyy korkeana. Sharding jakaa kuor­mi­tuk­sen eri tie­to­ko­nei­den kesken. Tämä parantaa suo­ri­tus­ky­kyä ja tarjoaa myös parhaan mah­dol­li­sen suojan mah­dol­li­sia pal­ve­lin­vi­ko­ja vastaan.

PostgreSQL puo­les­taan skaalaa dataa ver­ti­kaa­li­ses­ti, eikä siksi pysty täysin vas­taa­maan NoSQL-ratkaisun suo­ri­tus­ky­kyyn. Siitä huo­li­mat­ta re­laa­tio­tie­to­kan­nan suo­ri­tus­ky­ky on vai­kut­ta­va. Se mah­dol­lis­taa esi­mer­kik­si kirjoitus- ja lu­ku­toi­min­to­jen suo­rit­ta­mi­sen sa­ma­nai­kai­ses­ti. Tietojen todennus ja sy­väl­li­nen, matalan viiveen data-analyysi ovat myös usein parempia PostgreSQL:llä kuin monilla sen kau­pal­li­sil­la kil­pai­li­joil­la. Tie­to­kan­ta toimii mo­ni­mut­kais­ten tie­to­tyyp­pien ja kyselyjen kanssa ja voi siksi kerätä pisteitä myös big datan osalta. Li­sä­re­surs­se­ja, kuten muistia tai pro­ses­so­rei­ta, voidaan lisätä kasvavien vaa­ti­mus­ten täyt­tä­mi­sek­si. Omi­nai­suu­det, kuten just-in-time-käännös ja tau­lu­koi­den osiointi, auttavat myös suurten tie­to­mää­rien kä­sit­te­lys­sä.

Yh­teen­so­pi­vuus

Molemmat ratkaisut toimivat eri alus­toil­la ja ovat siten käy­tet­tä­vis­sä Linuxissa, macOS:ssa, So­la­rik­ses­sa ja Win­dow­sis­sa. PostgreSQL menee vielä pi­dem­mäl­le ja toimii myös FreeBSD:ssä, HP-UX:ssa, NetBSD:ssä ja OpenBSD:ssä. SQL-tie­to­kan­ta on luon­teel­taan ACID-yh­teen­so­pi­va (Atomicity, Con­sis­tency, Isolation, Du­ra­bi­li­ty), kun taas MongoDB tarjoaa ainakin tämän vaih­toeh­don. Molemmat jär­jes­tel­mät tukevat lukuisia oh­jel­moin­ti­kie­liä, mutta va­lin­nan­va­raa on huo­mat­ta­vas­ti enemmän nuo­rem­mas­sa MongoDB-jär­jes­tel­mäs­sä kuin PostgreSQL-jär­jes­tel­mäs­sä.

Oh­jel­moin­ti­kie­li Tuettu Mongo DB:llä Tuettu PostgreSQL:llä
Ac­tionsc­ript
C
C
C
Clojure
Cold­Fusion
D
Dart
Delphi
Erlang
Go
Groovy
Haskell
Java
Ja­vaSc­ript
Kotlin
Lisp
Lua
MatLab
.net
Perl
PHP
PowerS­hell
Prolog
Python
R
Ruby
Scala
Smalltalk
Swift
Tcl

Tur­val­li­suus

Yksi tär­keim­mis­tä syistä, miksi käyttäjät va­lit­se­vat PostgreSQL:n, on tie­to­kan­nan vahva tur­val­li­suusark­ki­teh­tuu­ri. Tähän kuuluvat LDAP (Lightweight Directory Access Protocol) ja PAM (Pluggable Aut­hen­tica­tion Module) sekä isän­tä­poh­jai­nen todennus, tietojen salaus ja SSL-var­men­teet. Ennalta mää­ri­tel­ty tie­to­kan­ta­ra­ken­ne varmistaa myös, että tietosi ovat aina mah­dol­li­sim­man hyvin suo­jat­tu­ja. MongoDB:ssä on myös lukuisia tur­val­li­suuso­mi­nai­suuk­sia, kuten salaus kent­tä­ta­sol­la ja asia­kas­puo­lel­la. Jakelu eri pal­ve­li­mil­le tarjoaa myös vähintään korkean luo­tet­ta­vuus­ta­son ja varmistaa, että tiedot ovat jälleen käy­tet­tä­vis­sä ilman suuria viiveitä.

Mitkä ovat MongoDB:n ja PostgreSQL:n eri versiot?

Yksi MongoDB:n ja PostgreSQL:n yh­tä­läi­syyk­sis­tä on niiden avoimen läh­de­koo­din lä­hes­ty­mis­ta­pa. Molemmat jär­jes­tel­mät ovat siis paitsi avoimen läh­de­koo­din, myös saa­ta­vil­la il­mai­sek­si, ainakin pe­rus­ver­sio­na. Vaikka tämä tar­koit­taa myös sitä, että tässä ta­pauk­ses­sa ei ole saa­ta­vil­la am­mat­ti­mais­ta tukea, kaksi omis­tau­tu­nut­ta yhteisöä korvaa tämän puutteen ja neuvoo mie­lel­lään myös uusia käyttäjiä. Do­ku­men­taa­tio ja laa­jen­nus­mah­dol­li­suu­det ovat myös jonkin verran laajemmat, koska PostgreSQL on ollut mark­ki­noil­la pidempään. MongoDB tarjoaa myös erilaisia Pro-versioita. En­terpri­se- ja Atlas-versiot (pil­vi­pal­ve­lu­käyt­töön) ovat mak­sul­li­sia, mutta niissä on myös joitakin li­sä­omi­nai­suuk­sia ja kattava tuki.

Mitkä yritykset käyttävät näitä kahta tie­to­kan­taa?

Vaikka MongoDB:n ja PostgreSQL:n vertailu osoittaa, että nämä kaksi ratkaisua edustavat kahta hyvin erilaista lä­hes­ty­mis­ta­paa, niillä on kuitenkin yksi yhteinen piirre: lukuisat suuret yritykset luottavat kokonaan tai osittain näiden kahden tie­to­kan­nan tar­joa­miin pal­ve­lui­hin ja etuihin.

Tun­ne­tuim­pia MongoDB:tä käyttäviä yrityksiä ovat muun muassa seuraavat:

  • Adobe
  • Amadeus
  • AppScale
  • Craftbase
  • Disney
  • Etsy
  • Foursqua­re
  • Lyft
  • MTV
  • The New York Times
  • Via Varejo

PostgreSQL:ää käyttävät muun muassa seuraavat yritykset ja alustat:

  • Apple
  • IMDB
  • Instagram
  • Reddit
  • Runkeeper
  • Skype
  • Spotify
  • Twitch
Siirry pää­va­lik­koon