Tietokantojen perusteet kevät 2021

Tehtävä 6: NoSQL-tietokannat

MongoDB on suosittu NoSQL-tietokanta, joka ei perustu relaatiomalliin ja SQL-kieleen kuten useimmat perinteiset tietokannat. Etsi tietoa MongoDB:stä netistä ja vastaa sitten seuraaviin tehtäviin.

MongoDB vs. SQL-tietokanta

Miten MongoDB eroaa SQL-tietokannasta? Mitä hyvää ja huonoa siinä on?

MongoDB:n käyttäminen

Seuraavassa on keskustelu SQLite-tulkin kanssa, joka luo taulun, lisää siihen sisältöä ja hakee tietoa:
sqlite> CREATE TABLE Tyontekijat (id INTEGER PRIMARY KEY, nimi TEXT, yritys TEXT, palkka INTEGER);
sqlite> INSERT INTO Tyontekijat (nimi, yritys, palkka) VALUES ('Maija', 'Google', 8000);
sqlite> INSERT INTO Tyontekijat (nimi, yritys, palkka) VALUES ('Uolevi', 'Amazon', 5000);
sqlite> INSERT INTO Tyontekijat (nimi, yritys, palkka) VALUES ('Kotivalo', 'Google', 7000);
sqlite> INSERT INTO Tyontekijat (nimi, yritys, palkka) VALUES ('Kaaleppi', 'Facebook', 6000);
sqlite> INSERT INTO Tyontekijat (nimi, yritys, palkka) VALUES ('Liisa', 'Amazon', 9000);
sqlite> INSERT INTO Tyontekijat (nimi, yritys, palkka) VALUES ('Anna', 'Amazon', 6500);
sqlite> SELECT * FROM Tyontekijat;
id          nimi        yritys      palkka    
----------  ----------  ----------  ----------
1           Maija       Google      8000      
2           Uolevi      Amazon      5000      
3           Kotivalo    Google      7000      
4           Kaaleppi    Facebook    6000      
5           Liisa       Amazon      9000      
6           Anna        Amazon      6500      
sqlite> UPDATE Tyontekijat SET palkka=5500 WHERE id=2;
sqlite> SELECT * FROM Tyontekijat;
id          nimi        yritys      palkka    
----------  ----------  ----------  ----------
1           Maija       Google      8000      
2           Uolevi      Amazon      5500      
3           Kotivalo    Google      7000      
4           Kaaleppi    Facebook    6000      
5           Liisa       Amazon      9000      
6           Anna        Amazon      6500      
sqlite> SELECT nimi, palkka FROM Tyontekijat WHERE yritys='Amazon';
nimi        palkka    
----------  ----------
Uolevi      5500      
Liisa       9000      
Anna        6500      
sqlite> SELECT COUNT(*) FROM Tyontekijat WHERE yritys='Google';
COUNT(*)  
----------
2         
sqlite> SELECT nimi, yritys FROM Tyontekijat WHERE palkka>6000;
nimi        yritys    
----------  ----------
Maija       Google    
Kotivalo    Google    
Liisa       Amazon    
Anna        Amazon    
sqlite> SELECT yritys, COUNT(*), MAX(palkka) FROM Tyontekijat GROUP BY yritys;
yritys      COUNT(*)    MAX(palkka)
----------  ----------  -----------
Amazon      3           9000       
Facebook    1           6000       
Google      2           8000       
Ota selvää, miten vastaavan voi tehdä MongoDB:ssä ja kirjoita keskustelu MongoDB-tulkin kanssa alla olevaan tekstikenttään.

The deadline for this task has passed but you can still check your answers


Return to task list