Relaatiotietokannan pullonkaula
Tunnistatte SQL-tietokantojen skaalautuvuuteen ja joustavuuteen liittyvät ongelmakohdat, jotka vauhdittivat NoSQL-liikettä.
Relaatiotietokannan pullonkaula on ilmainen MongoDB Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu MongoDB Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. MongoDB Academy-kurssilla on yhteensä 4 oppituntia.
Relaatiotietokantojen nousu
Vuosikymmenten ajan relaatiotietokannat, kuten MySQL ja PostgreSQL, hallitsivat alaa. Ne tallentavat tiedot siisteihin riveistä ja sarakkeista koostuviin taulukoihin, ja toimivat erinomaisesti. Miksi siis etsiä muita vaihtoehtoja?
Jäykän skeeman ongelma
SQL-taulukoissa käytetään jäykkää skeemaa: jokainen sarake on määriteltävä etukäteen. Myöhempi muuttaminen edellyttää migraatiota, joka voi lukita taulukon ja aiheuttaa käyttökatkon.
-- Adding a column to a large table in PostgreSQL can be slow
ALTER TABLE users ADD COLUMN preferences JSONB;
-- On 100M rows this may require a full table rewrite
-- and blocks reads/writes for minutesPystysuuntainen ja vaakasuuntainen skaalaus
Kasvaessaan SQL yleensä skaalautuu pystysuunnassa — tarvitaan suurempi ja kalliimpi palvelin. Sillä on kuitenkin rajansa. Nykyaikaisten sovellusten on skaalattava vaakasuunnassa useille koneille, mikä on SQL:lle hankalaa.
JOIN-operaatioiden suorituskyky suuressa mittakaavassa
SQL jakaa tiedot taulukoihin ja kokoaa ne takaisin yhteen JOIN-operaatioilla. Tämä toimii pienillä tietomäärillä, mutta valtavilla tietomäärillä viiden taulukon yhdistäminen jokaisessa kyselyssä hidastuu.
-- A typical normalized SQL query joining 4 tables
SELECT o.id, c.name, p.title, oi.quantity
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN order_items oi ON oi.order_id = o.id
JOIN products p ON p.id = oi.product_id
WHERE o.status = 'pending';Suuren liikenteen kirjoitusongelma
SQL lukitsee rivejä pitääkseen tiedot turvassa ACID-transaktioiden avulla. Tämä sopii erinomaisesti pankeille, mutta lukitukset alkavat rajoittaa toimintaa, kun kirjoituksia tarvitaan miljoonia sekunnissa.
Rakenteistamaton ja puolirakenteinen data
Verkko on täynnä puolirakenteista dataa, kuten epäsiistiä JSON-dataa. Sen pakottaminen kiinteisiin sarakkeisiin tarkoittaa valtavaa määrää tyhjiä kenttiä tai hankalia kiertoratkaisuja.
-- EAV table: flexible but awkward to query
CREATE TABLE product_attributes (
product_id INT,
attr_name VARCHAR(50),
attr_value VARCHAR(200)
);
-- Querying all electronics by voltage is painful:
SELECT * FROM product_attributes
WHERE attr_name = 'voltage' AND CAST(attr_value AS INT) > 100;Internetin mittakaavan herätys
Vuoden 2006 tienoilla Google ja Amazon törmäsivät todellisiin skaalautuvuuden rajoihin ja julkaisivat ratkaisunsa. Tämä käynnisti kokonaan uuden aallon: internetin mittakaavaan suunnitellut NoSQL-tietokannat.
Miten NoSQL toimii eri tavalla
NoSQL vaihtaa osan SQL:n säännöistä uusiin vahvuuksiin: joustaviin skeemoihin, helppoon skaalaukseen useille koneille ja nopeisiin kirjoituksiin. Se ei ole aina parempi — se on vain optimoitu eri tavalla.
Milloin RDBMS on edelleen paras
SQL on edelleen paras monissa tilanteissa: taloustransaktioissa, monimutkaisissa raporteissa ja vakaissa tietorakenteissa. Useimmat sovellukset eivät koskaan kasva hyvin optimoitua PostgreSQL:ää suuremmiksi. Valitkaa tehtävään sopiva työkalu!
Dokumenttimalli ratkaisuna
MongoDB:n vastaus on dokumenttimalli. Sen sijaan että käyttäjä jaettaisiin viiteen taulukkoon, kaikki tallennetaan yhdessä JSON-tyyppisessä dokumentissa. Alla oleva koodi näyttää esimerkin.
// A MongoDB document stores related data together
{
_id: ObjectId('...'),
name: 'Alice',
email: 'alice@example.com',
address: { city: 'London', zip: 'EC1A' },
tags: ['premium', 'newsletter'],
createdAt: ISODate('2024-01-15')
}Vaakasuuntainen skaalaus on sisäänrakennettu
MongoDB skaalautuu vaakasuunnassa shardingin avulla — kasvun myötä lisätään palvelimia. Replica setit pitävät kopiot saatavilla, joten yhden solmun vikaantuessa toinen ottaa automaattisesti sen tehtävät.
Pikakertaus
Testatkaa tämän oppitunnin MongoDB:tä ja NoSQL-tietokantoja koskevien käsitteiden ymmärtämistä.
Oppitunnin yhteenveto
Näitte, miksi SQL muodostaa pullonkauloja valtavassa mittakaavassa, missä JOIN-operaatiot ja raskaat kirjoitukset aiheuttavat eniten ongelmia ja miten MongoDB:n dokumenttimalli ratkaisee nämä ongelmat. Seuraavaksi käsittelemme neljää NoSQL-perhettä.
Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Relaatiotietokannan pullonkaula” ilmainen?
Kyllä – oppitunnin ”Relaatiotietokannan pullonkaula” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko MongoDB Academy-kurssin, päivitä CoddyKit PROhon. MongoDB Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Relaatiotietokannan pullonkaula”?
Tunnistatte SQL-tietokantojen skaalautuvuuteen ja joustavuuteen liittyvät ongelmakohdat, jotka vauhdittivat NoSQL-liikettä. Harjoittelet MongoDB Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni MongoDB Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin MongoDB Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Relaatiotietokannan pullonkaula”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä MongoDB Academy-oppitunnilla?
Kyllä. Jokainen MongoDB Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Relaatiotietokannan pullonkaula
- NoSQL:n muodot: dokumentti, avain–arvo, sarake ja graafi
- CAP-teoreema selkokielellä
- MongoDB:n paikka kokonaisuudessa