Mikä on MongoDB?
Suhteelliset tietokannat olivat vuosikymmenten ajan suosituin ratkaisu tietojen hallintaan. Nykyisten verkkosovellusten ominaispiirre on kuitenkin tietojen määrän ja monimuotoisuuden kasvu, mikä on tehnyt dokumenttipohjaisista tietokannoista, kuten Mongo DB:stä, vakavan kilpailijan. Selitämme, mitä dokumenttipohjainen lähestymistapa on ja mitä etuja tämä tietojenhallintamalli tarjoaa.
Miten MongoDB eroaa muista tietokannoista?
Perinteisissä relaatiotietokannoissa tiedot tallennetaan jäsenneltyyn taulukkoon. MongoDB, jonka nimi on johdettu sanasta humongous (valtava), on dokumenttipohjainen tietokantajärjestelmä. MongoDB:ssä tiedot ryhmitellään jäsentelemättömällä tavalla tietokantaohjelman kutsumiin kokoelmiin.
Toinen keskeinen ero on, että MongoDB ei käytä SQL:ää kyselykielinä, joten se luokitellaan NoSQL-tietokantajärjestelmäksi. Sen sijaan MongoDB käyttää JavaScript-pohjaista MongoDB Query Language (MQL) -kyselykieltä. Näin ollen MongoDB-tietueet tallennetaan BSON-muodossa, joka on mallinnettu JSON:n mukaan. Tämä tarkoittaa, että kaikki JavaScript-tietotyypit ovat tuettuja, minkä vuoksi MongoDB on tullut ihanteelliseksi valinnaksi monille JavaScript-pohjaisille alustoille.
Toinen MongoDB-tietokantojen ominaisuus on niiden kyky skaalautua vaakasuunnassa. Tämä tarkoittaa, että tietokannan tiedot voidaan jakaa useille palvelimille sen sijaan, että ne tallennettaisiin yhteen keskitettyyn sijaintiin. Tämä lähestymistapa parantaa tietojen saatavuutta ja tietokannan yleistä suorituskykyä. Vaakasuora skaalaus on usein kustannustehokkaampaa kuin yhden palvelimen päivittäminen tehokkaammalla laitteistolla (pystysuora skaalaus).
Miten MongoDB toimii?
Toisin kuin MySQL, MongoDB käyttää täysin erilaista lähestymistapaa tietojen tallentamiseen ja toimii asiakirjoihin perustuvalla tavalla. Sen sijaan, että tiedot tallennettaisiin taulukkomuodossa, jossa jokaisella rivillä on sama määrä kenttiä, jotka on täytettävä arvoilla, MongoDB-tietokannat tallentavat tiedot BSON-asiakirjoihin, joilla ei ole ennalta määriteltyä rakennetta. Kenttien määrä voi vaihdella asiakirjojen välillä, eikä kenttien tarvitse olla keskenään yhdenmukaisia. Dokumentit täyttävät samanlaisen roolin kuin rivit SQL-taulukossa, kun taas näissä dokumenteissa määritellyt kentät toimivat sarakkeina.
MongoDB-tietokantojen kanssa työskentelyyn on olemassa monia työkaluja. Luotettavan MongoDB Shellin lisäksi voit käyttää myös GUI MongoDB Compassia MongoDB-tietokantojen hallintaan. Tässä artikkelissa keskitymme kuitenkin Shell-komentoihin.
Koska MQL perustuu JavaScriptiin, on jo olemassa useita valmiita funktioita, joita voit käyttää monimutkaisiin kyselyihin ja komentoihin. Suurin osa kirjoitus- ja lukukomennoista on rakenteeltaan samanlaisia kuin alla olevassa esimerkissä esitetyt komennot. Näiden komentojen lisäksi on olemassa lukuisia muita komentoja, joita voit käyttää MongoDB-tietokannan hallintaan. Nämä on dokumentoitu kattavasti ja selitetty yksityiskohtaisesti MongoDB:n dokumentaatiossa.
> db.students.find(Name : "Charlie")
> db.students.updateOne(Name : "Charlie", Semester : 2)
> db.students.deleteOne(Name : "Peter")
> db.students.insertOne({
Name : "Elsie"
Age : 18
Semester : 1
})Yllä olevassa esimerkissä on sarja MongoDB-tietokantakomentoja, jotka kaikki on rakennettu samalla tavalla. Ensimmäisenä on ”db”, joka viittaa koko tietokantaan, sitten ”students”, joka viittaa tiettyyn kokoelmaan, jossa vastaavat toiminnot tulisi suorittaa. Kokoelman jälkeen tulee menetelmä (find, update, remove, insert), jota tulisi käyttää.
Voit käyttää find()-menetelmää tietyn asiakirjan etsimiseen. Jos jätät parametrikentän tyhjäksi, se palauttaa kaikki valitsemasi kokoelman asiakirjat. Yllä olevassa esimerkissä MongoDB etsii kaikki asiakirjat, joiden “Name”-kentän arvo on “Charlie”.
updateOne()-menetelmää voidaan käyttää dokumentin arvojen korvaamiseen. update()-menetelmä ottaa kaksi argumenttia. Ensimmäinen argumentti on valintakriteeri ja toinen on korvattava avain-arvo-pari. Esimerkissä valitaan kaikki opiskelijat, joiden nimi on “Charlie”. Sitten arvo “2” syötetään “Semester”-kenttään opiskelijoille, joiden nimi on Charlie.
deleteOne()-metodi ottaa vain yhden argumentin. Se on valintakriteeri, joka määrittää, mitkä dokumentit poistetaan tietokannasta. Tässä kaikki opiskelijat, joiden nimi on Peter, poistetaan tietokannasta.
insertOne()-metodi ottaa myös argumentin. Tässä metodissa argumentti on lisättävän dokumentin JSON-sisältö. Dokumentteja lisättäessä on tärkeää varmistaa, että jokaisella MongoDB-kokoelman dokumentilla on yksilöllinen 12-tavun heksadesimaaliluku. Tämä luku toimii dokumentin objektitunnuksena. Jos tätä ei määritetä dokumenttia lisättäessä, MongoDB luo dokumentille automaattisesti tunnuksen.
Mitkä ovat MongoDB:n edut?
MongoDB:n rakenne tarjoaa käyttäjille useita etuja, erityisesti joustavuuden ja skaalautuvuuden osalta. Dokumenttipohjaisen tietojen tallennuksen yksi keskeinen etu on, että toisin kuin relaatiotietokannoissa, kaikkien tietueiden ei tarvitse olla samoja attribuutteja. Tämä mahdollistaa strukturoimattomien ja puolistrukturoitujen tietojen tallennuksen. Lisäksi yksittäisiä dokumentteja voidaan muokata (esimerkiksi lisäämällä tai poistamalla attribuutti/kenttä) ilman, että muita saman kokoelman dokumentteja tarvitsee muokata. Koska MongoDB:n dokumentit tallennetaan BSON-muodossa, MongoDB-tietokannat ovat myös erittäin yhteensopivia monien yleisesti käytettyjen JavaScript-alustojen kanssa.
MongoDB tallentaa paitsi strukturoimattomia tietoja myös tarjoaa korkean tason horisontaalisen skaalautuvuuden rikkomatta ACID-periaatteita (atomicity, consistency, isolation, durability). Hajautetuissa tietokannoissa yhdenmukaisuuden varmistaminen voi usein olla haasteellista, koska tiedot tallennetaan eri palvelimille. Kun useisiin asiakirjoihin tehdään muutoksia samanaikaisesti, nämä muutokset eivät välttämättä välity välittömästi kaikkiin tietokantajärjestelmän käyttämiin palvelimiin. Jos kyselyitä on paljon, tämä voi joskus johtaa tietojen epäjohdonmukaisuuteen. Vuonna 2019 julkaistun MongoDB 4.2:n myötä on kuitenkin nyt mahdollista tehdä muutoksia useisiin asiakirjoihin eri palvelimilla ilman, että johdonmukaisuus tai saatavuus kärsii.
Tarvitsetko dokumenttipohjaisen tietokannan, joka skaalautuu verkkosovelluksesi vaatimusten mukaan? MongoDB on täydellinen ratkaisu!
Mihin MongoDB:tä voidaan käyttää?
MongoDB on erinomainen valinta verkkoprojekteille, jotka perustuvat erittäin suuriin, rakenteettomiin tietojoukkoihin. Dokumenttipohjainen järjestelmä, jolla ei ole kiinteää skeemaa, sopii erinomaisesti monenlaisten tietotyyppien käsittelyyn, jotka vaativat nopeaa tallennusta ja käsittelyä.
Tietokantajärjestelmä mahdollistaa myös horisontaalisen, lähes rajattoman skaalautuvuuden, sillä tietokannat voidaan jakaa vaivattomasti useille palvelimille toiminnallisuutta heikentämättä. Lisäksi MongoDB:n avulla voit helposti luoda kopioita tietokannastasi ja asettaa ne useiden palvelimien saataville, mikä takaa tietojesi pitkäaikaisen turvallisuuden ja saatavuuden. Dokumenttipohjainen tietokantaohjelma osoittaa myös vaikuttavia ominaisuuksia tietojen yhdistämisessä, olipa kyseessä sitten yksi tai useampi tietolähde.
MongoDB sopii erinomaisesti verkkoprojekteihin, joilla on seuraavat ominaisuudet:
- Skaalautuvuus: verkkoprojektisi kasvaessa pyyntöjen määrä yleensä kasvaa, mikä lisää tietokannan kuormitusta.
- Saatavuus: verkkosovelluksesi on oltava käytettävissä keskeytyksettä, myös palvelimen vikatilanteissa.
- Joustavuus: projektisi tulisi mahdollistaa dynaaminen mukautuminen kaikkina aikoina.
Etkö ole varma, mikä tietokantamalli sopii parhaiten verkkoprojektiisi? Ei hätää, sillä sinun ei tarvitse valita vain yhtä mallia. Eri tyyppisiä tietokantamalleja on mahdollista yhdistellä, ja useamman kuin yhden mallin valitseminen voi olla sopivin ratkaisu projektisi vaatimuksiin.