MongoDB on do­ku­ment­ti­poh­jai­nen NoSQL-tie­to­kan­ta, joka tunnetaan jous­ta­vis­ta skee­mois­taan, käy­tän­nös­sä ra­jat­to­mas­ta vaa­ka­suun­tai­ses­ta skaa­lau­tu­vuu­des­taan sekä korkeasta vi­ka­sie­toi­suu­des­taan ja käy­tet­tä­vyy­des­tään. Kuitenkin käyt­tö­ta­pauk­sis­sa, jotka vaativat tiukkaa joh­don­mu­kai­suut­ta, pieniä viiveitä tai mi­ni­maa­lis­ta hal­lin­to­kus­tan­nus­ta, muut tie­to­kan­ta-ark­ki­teh­tuu­rit voivat tarjota paremmin rää­tä­löi­ty­jä rat­kai­su­ja. Nämä MongoDB:n vaih­toeh­dot vaih­te­le­vat re­laa­tio­tie­to­kan­nois­ta ja sa­ra­ke­poh­jai­sis­ta NoSQL-jär­jes­tel­mis­tä muistissa oleviin tie­to­kan­toi­hin ja upo­tet­tui­hin rat­kai­sui­hin.

Mikä on MongoDB ja mitkä ovat sen vaih­toeh­dot?

Monien vuosien ajan re­laa­tio­tie­to­kan­nat olivat kiistaton standardi tietojen hal­lin­nas­sa. Modernien verk­ko­so­vel­lus­ten ke­hit­ty­vät tie­to­tar­peet ovat kuitenkin johtaneet vaih­toeh­tois­ten lä­hes­ty­mis­ta­po­jen nousuun – ja tässä MongoDB astuu kuvaan. Toisin kuin re­laa­tio­jär­jes­tel­mät (RDBMS), MongoDB tallentaa tiedot do­ku­ment­ti­poh­jai­ses­sa muodossa käyttäen joustavia BSON-do­ku­ment­te­ja, jotka on jär­jes­tet­ty ko­koel­miin. Jokainen do­ku­ment­ti voi olla ra­ken­teel­taan täysin erilainen, toisin kuin re­laa­tio­tie­to­kan­nois­sa käytetty jäykkä tau­luk­ko­muo­to. JSON-muotoa muis­tut­ta­van BSON-muodon ansiosta MongoDB tukee kaikkia Ja­vaSc­ript-tie­to­tyyp­pe­jä, mikä tekee siitä suositun valinnan Ja­vaSc­ript-poh­jai­sil­le alus­toil­le.

NoSQL -tie­to­kan­ta­na MongoDB ei käytä SQL:ää ky­se­lyi­hin. Sen sijaan se käyttää omaa ky­se­ly­kiel­tään, MongoDB Query Language (MQL). Toinen MongoDB:n erottuva omi­nai­suus on sen ho­ri­son­taa­li­nen skaa­lau­tu­vuus. Jär­jes­tel­mä jakaa tiedot useille pal­ve­li­nins­tans­seil­le sharding-tekniikan avulla, mikä parantaa tietojen saa­ta­vuut­ta ja yleistä suo­ri­tus­ky­kyä. Lisäksi MongoDB tukee ACID-yh­teen­so­pi­via tran­sak­tioi­ta, mikä varmistaa, että tiedot pysyvät joh­don­mu­kai­si­na ja tur­val­li­ses­ti tal­len­net­tui­na myös virheiden, kaa­tu­mis­ten tai useiden käyt­tä­jien sa­ma­nai­kai­sen käytön yh­tey­des­sä.

MySQL: To­dis­tet­tu RDBMS ra­ken­tei­sil­le tiedoille

MySQL ke­hi­tet­tiin 1990-luvun puo­li­vä­lis­sä ruot­sa­lai­ses­sa MySQL AB -yri­tyk­ses­sä, ja se tuli nopeasti tun­ne­tuk­si nopeana ja luo­tet­ta­va­na avoimen läh­de­koo­din tie­to­kan­ta­na. Vuonna 2008 Sun Mic­ro­sys­tems, joka oli ollut osa tek­no­lo­gia­jät­ti Oraclen osak­kuus­yh­tiö­tä vuodesta 2010 lähtien, osti MySQL:n ja on siitä lähtien vastannut sen ke­hit­tä­mi­ses­tä. Nykyään MySQL on yksi maa­il­man­laa­jui­ses­ti eniten käy­te­tyis­tä re­laa­tio­tie­to­kan­ta­rat­kai­suis­ta, ja siitä on saa­ta­vil­la sekä avoimen läh­de­koo­din että kau­pal­li­nen yri­tys­ver­sio.

MongoDB:n vaih­toeh­to­na MySQL sopii erityisen hyvin ti­lan­tei­siin, joissa vaaditaan tiukkaa tietojen yh­den­mu­kai­suut­ta, vankkaa SQL-toi­min­nal­li­suut­ta ja va­kiin­tu­nut­ta tie­to­kan­ta­ra­ken­net­ta. Se tarjoaa korkean vi­ka­sie­toi­suu­den, useita skaa­laus­vaih­toeh­to­ja ja erilaisia ra­ja­pin­to­ja. Lisäksi MySQL pystyy kä­sit­te­le­mään suuria määriä struk­tu­roi­tu­ja tietoja. Sen selkeä ja yk­sin­ker­tai­nen rakenne tekee siitä myös aloit­te­li­jays­tä­väl­li­sen.

MySQL:n edut yleis­kat­saus

  • Saatavana sekä avoimen läh­de­koo­din tie­to­kan­ta­na että yri­tys­ver­sio­na
  • Korkea vi­ka­sie­toi­suus, nopeus ja käy­tet­tä­vyys
  • Käyt­tä­jäys­tä­väl­li­nen, myös aloit­te­li­joil­le
  • Useita skaa­laus­vaih­toeh­to­ja
  • Erilaisia tal­len­nus­moot­to­rei­ta eri käyt­tö­tar­koi­tuk­siin
  • Laaja yhteisö ja kattava do­ku­men­taa­tio
  • Voidaan in­tegroi­da sau­mat­to­mas­ti lukuisiin ym­pä­ris­töi­hin ja ke­hys­ra­ken­tei­siin
  • Osa LAMP-pinoa (Linux, Apache, MySQL ja PHP)

PostgreSQL: Tehokas tie­to­kan­ta, jossa käytetään ob­jek­ti­re­laa­tio­lä­hes­ty­mis­ta­paa

PostgreSQL on toinen re­laa­tio­tie­to­kan­ta­jär­jes­tel­mä, jonka ke­hi­tys­his­to­ria on paljon pidempi kuin MySQL:n. PostgreSQL ke­hi­tet­tiin alun perin 1980-luvulla Ka­li­for­nian yli­opis­ton pro­jek­ti­na, ja se on ollut avoimen läh­de­koo­din tie­to­kan­ta vuodesta 1997 lähtien. Se yhdistää vankan re­laa­tio­mal­lin ob­jek­ti­re­laa­tio­laa­jen­nuk­siin, mikä tekee siitä ihan­teel­li­sen ratkaisun ti­lan­tei­siin, joissa vaaditaan tietojen eheyttä, edis­ty­nei­tä SQL-omi­nai­suuk­sia ja suurta jous­ta­vuut­ta.

MongoDB:n vaih­toeh­to­na PostgreSQL erottuu edukseen täy­del­li­sel­lä ACID-yh­teen­so­pi­vuu­del­la ja mo­ni­ver­sioi­sen sa­ma­nai­kai­suu­den hal­lin­nal­la (MVCC), jotka takaavat vakaan suo­ri­tus­ky­vyn myös suurilla rin­nak­kai­sil­la kuormilla. Sen joustava laa­jen­nus­ke­hys, joka sisältää työkaluja kuten PostGIS paik­ka­tie­to­jen kä­sit­te­lyyn ja Ti­mesca­leDB te­hok­kaa­seen ai­ka­sar­jo­jen hal­lin­taan, tekee siitä erittäin mu­kau­tu­van.

PostgreSQL:n etujen yleis­kat­saus

  • Avoimen läh­de­koo­din ja vapaasti saa­ta­vil­la
  • Erittäin kestävä ja tur­val­li­nen
  • Erin­omai­nen suo­ri­tus­ky­ky, myös kuor­mi­tet­tu­na
  • Lukuisia laa­jen­nuk­sia eri­lai­siin käyt­tö­tar­koi­tuk­siin
  • Useita skaa­laus­vaih­toeh­to­ja
  • Erittäin joustava
  • Mo­ni­puo­li­set ra­ja­pin­nat
  • Ak­tii­vi­nen yhteisö

MariaDB: ny­ky­ai­kai­siin vaa­ti­muk­siin suun­ni­tel­tu SQL-tie­to­kan­ta

MariaDB on toinen re­laa­tio­tie­to­kan­ta, joka noudattaa avoimen läh­de­koo­din mallia. GNU General Public Licence Version 2 (GPLv2) -lisenssin ansiosta käyttäjät voivat tar­kas­tel­la, muokata ja jakaa koodia. MariaDB luotiin vuonna 2010 yhteisön vetämänä MySQL:n haaraksi, ja siitä on tullut vahva MongoDB:n vaih­toeh­to ti­lan­teis­sa, joissa re­laa­tio­tie­to­kan­nan eheys ja SQL-yh­teen­so­pi­vuus ovat rat­kai­se­via. Se tarjoaa laajan va­li­koi­man tal­len­nus­moot­to­rei­ta, jotka sopivat eri­lai­siin käyt­tö­tar­koi­tuk­siin, kuten Co­lumnS­to­re sa­ra­ke­poh­jai­seen ana­ly­soin­tiin ja Aria tran­sak­tioi­hin. MariaDB tarjoaa myös natiivin JSON-tuen, jonka avulla puo­li­struk­tu­roi­dut tiedot voidaan tallentaa suoraan tau­lu­koi­hin ja hakea SQL:n avulla. Sen Galera Cluster mah­dol­lis­taa synk­ro­ni­sen mo­ni­mes­ta­repli­koin­nin, mikä takaa korkean käy­tet­tä­vyy­den. Lisäksi omi­nai­suu­det kuten Window Functions, Common Table Expres­sions (CTE) ja Virtual Columns tukevat mo­ni­mut­kai­sia ana­ly­tiik­ka- ja ra­por­toin­tis­ke­naa­rioi­ta.

MariaDB:n edut yhdellä sil­mäyk­sel­lä

  • Avoin läh­de­koo­di ja ak­tii­vi­nen kehitys
  • MySQL-yh­teen­so­pi­va
  • Tehokkaat tal­len­nus­moot­to­rit eri­lai­sil­le so­vel­luk­sil­le
  • Korkea suo­ri­tus­ky­ky ja skaa­lau­tu­vuus
  • Vankka vakaus
  • Täysi SQL-tuki ja helppo in­tegroin­ti
  • Alus­ta­riip­pu­ma­ton

Apache Cassandra: sa­ra­ke­poh­jai­nen NoSQL-ratkaisu

Apache Cassandra on ha­jau­tet­tu NoSQL-tie­to­kan­ta, joka käyttää sa­rak­kei­siin pe­rus­tu­vaa mallia, mikä tekee siitä sopivan MongoDB-vaih­toeh­don erittäin suurille tie­to­jou­koil­le, li­ne­aa­ri­sel­le skaa­lau­tu­vuu­del­le ja korkealle vi­ka­sie­toi­suu­del­le. Sen ver­tais­verk­koark­ki­teh­tuu­ri varmistaa, että jos yksi solmu vikaantuu, jär­jes­tel­mä pysyy toi­min­nas­sa.

Cassandra käyttää omaa ky­se­ly­kiel­tään, Cassandra Query Language (CQL), joka mah­dol­lis­taa SQL-tyyppisen vuo­ro­vai­ku­tuk­sen datan kanssa. Au­to­maat­ti­sen sharding-toiminnon ansiosta Cassandra skaa­lau­tuu lähes ra­jat­to­mas­ti, ja kon­fi­gu­roi­ta­vat kon­sis­tens­si­ta­sot antavat käyt­tä­jil­le mah­dol­li­suu­den ta­sa­pai­not­taa suo­ri­tus­ky­kyä ja datan eheyttä. Apache Cas­sandraa leimaavat myös nopeat da­ta­ky­se­lyt, jotka kulkevat käsi kädessä vankan tur­val­li­suusark­ki­teh­tuu­rin kanssa.

Apache Cas­sandran etujen yleis­kat­saus

  • Avoimen läh­de­koo­din jär­jes­tel­mä
  • Sopii hyvin suurille tie­to­jou­koil­le ho­ri­son­taa­li­sen ja ver­ti­kaa­li­sen skaa­lau­tu­vuu­den ansiosta
  • SQL-tyyppinen ky­se­ly­kie­li (CQL)
  • Korkea vi­ka­sie­toi­suus, jous­ta­vuus ja käy­tet­tä­vyys
  • Erin­omai­nen lä­pi­me­no­no­peus ja nopea käsittely
  • Va­li­koi­vat ACID-takuut kon­fi­gu­roi­ta­van joh­don­mu­kai­suu­den ansiosta

Redis: Pienin viive RAM-pohjaisen tal­len­nus­ti­lan ansiosta

Redis on ei-re­laa­tio­naa­li­nen sisäisen muistin tie­to­kan­ta, joka on vakaa vaih­toeh­to MongoDB:lle käyt­tö­ta­pauk­sis­sa, joissa vaaditaan erittäin nopeita vas­te­ai­ko­ja. Tie­to­kan­ta saavuttaa alle mil­li­se­kun­nin viiveen, koska tiedot tal­len­ne­taan RAM-muistiin eikä kiin­to­le­vyl­le. Redisiä käytetään yleisesti re­aa­liai­kai­seen ana­ly­tiik­kaan, viestien vä­li­tyk­seen ja is­tun­to­jen hal­lin­taan.

Toinen etu on erilaiset skaa­laus­vaih­toeh­dot. Tie­to­kan­taa voidaan skaalata sekä ver­ti­kaa­li­ses­ti (li­sää­mäl­lä RAM-muistin ka­pa­si­teet­tia) että ho­ri­son­taa­li­ses­ti (käyt­tä­mäl­lä Redis Clusteria). Vaikka suo­ri­tus­ky­ky on selvästi sen pain­opis­te, Redis saavuttaa rajansa, jos työ­kuor­mat vaativat mo­ni­mut­kai­sia tietoja tai laajoja ky­se­ly­vaih­toeh­to­ja. Lisäksi tie­to­mää­rien kasvaessa RAM-muistin tarve voi nopeasti nostaa käyt­tö­kus­tan­nuk­sia.

Redisin etujen yleis­kat­saus

  • Avoimen läh­de­koo­din tie­to­kan­ta
  • Erin­omai­nen suo­ri­tus­ky­ky muistissa olevan tie­to­va­ras­ton ansiosta
  • Erittäin nopeat vasteajat, alle mil­li­se­kun­ti
  • Joustavat skaa­laus­vaih­toeh­dot
  • Ihan­teel­li­nen re­aa­liai­kai­seen ana­ly­tiik­kaan
  • Erittäin käyt­tä­jäys­tä­väl­li­nen
  • Laaja yh­teen­so­pi­vuus alustojen, jär­jes­tel­mien ja kielten kanssa

SQLite: Mi­ni­ma­lis­ti­nen SQL-ratkaisu ilman pal­ve­linpro­ses­se­ja

SQLite integroi täysin va­rus­tel­lun re­laa­tio­tie­to­kan­ta­jär­jes­tel­män suoraan so­vel­luk­seen, ja se toimii kir­jas­to­na, joka tallentaa sekä tiedot että skeeman yhteen tie­dos­toon. Tämä tar­koit­taa, että erillistä pal­ve­lin­ta ei tarvita, mikä poistaa asen­nuk­sen, kon­fi­gu­roin­nin ja useimmat hal­lin­nol­li­set tehtävät. Kirjasto on erittäin kompakti, vie vain muutaman sadan kilotavun tilaa, tukee suurinta osaa SQL-92-stan­dar­dis­ta ja on suun­ni­tel­tu yleisiä tietojen tal­len­nus­muo­to­ja varten.

Alun perin Yh­dys­val­tain ar­mei­jal­le kehitetty SQLite on nyt saa­ta­vil­la julkisen domainin oh­jel­mis­to­na. SQLite on ihan­teel­li­nen vaih­toeh­to MongoDB:lle pro­jek­teis­sa, jotka vaativat kevyen ja siir­ret­tä­vän ratkaisun, kuten su­lau­te­tut laitteet, IoT-anturit, työ­pöy­tä­so­vel­luk­set tai pai­kal­li­nen data-analyysi. Yk­sit­täis­ten tie­dos­to­jen helpon siir­ret­tä­vyy­den ansiosta monet ke­hit­tä­jät käyttävät SQLiteä myös jous­ta­va­na taus­ta­pal­ve­lu­na so­vel­luk­sil­leen.

Yleis­kat­saus SQLite-edut

  • Pal­ve­li­me­ton toiminta
  • Vähäinen yl­lä­pi­to­tar­ve – ei asennusta, kon­fi­gu­roin­tia tai jatkuvaa ylläpitoa
  • Pieni ti­lan­tar­ve
  • Korkea siir­ret­tä­vyys
  • Korkea luo­tet­ta­vuus ja vi­ka­sie­toi­suus
  • Var­muus­ko­pioin­ti tie­dos­to­jen ko­pioin­nil­la
  • Tuki useille kielille
Siirry pää­va­lik­koon