Kmom05: Databas

By . Latest revision .

** Kursutveckling pågår till kurs ramverk2 v2 **

Kursstart våren 2019.

Vi skall se hur vi kan jobba med databasen MongoDB, en dokumentorienterad databas som klassas i NoSQL-gruppen av databaser. För att koppla oss till databasen använder vi klienter i terminalen och kod i Node.js, med och utan Express.

Vi knyter samman alla delar med hjälp av Docker. Vi installerar MongoDB i en kontainer och vi kör Express i en egen kontainer och låter de båda kontainrarna kommunicera, samtidigt som vi kan kommunicera direkt med varje kontainer från terminalen.

Databasen MongoDB tillsammans med klient, express och samlad i Docker.

Databasen MongoDB tillsammans med klient, express och samlad i Docker.

I följande asciinema kan du se flödet hur man jobbar med Docker i olika kontainerar för Express och MongoDB och hur man på olika sätt kan koppla sig mot dem.

Ett flöde hur man kan jobba i terminalen i kmom05.

Tänk dig som vanligt in i rollen som systemarkitekt på ett företag där du är den som gör teknikvalen till nästa projekt. Du skall göra teknikval som hela ditt utvecklargäng sedan skall använda. Tänk så, det blir en bra attityd inför kursmomentet. Undersök och testa, var nyfiken.

(Detta är instruktionen för kursmomentet och omfattar det som skall göras inom ramen för kursmomentet. Momentet omfattar cirka 20 studietimmar inklusive läsning, arbete med övningar och uppgifter, felsökning, problemlösning, redovisning och eftertanke. Läs igenom hela kursmomentet innan du börjar jobba. Om möjligt – planera och prioritera var du vill lägga tiden.)

#Läsanvisningar

(ca: 4-6 studietimmar)

#Material

Kika igenom följande material.

  1. Bekanta dig översiktligt med organisationen kring databasen MongoDB. Övningen (längre ned) kommer vidare utgå från informationen på denna webbplatsen.

  2. Läs översiktligt igenom Wikipedia om NoSQL för en introduktion till konceptet NoSQL samt en översikt av de olika typer av databaser som ligger under samlingsnamnet. Du kan se att MongoDB är en dokumentorienterad databas.

  3. Läs igenom kapitel 5 Async functions i boken “Exploring ES2016 and ES2017”. Du behöver förståelse för dessa koncept om asynkron programmering, kommande exempelkod bygger på dessa koncept. Jag kan inte nog poängtera vikten av att förstå grunderna i det som kapitlet hanterar.

  4. Bekanta dig översiktligt med dokumentationen för “MongoDB Node.js driver” vilken är den driver vi kommer använda för att koppla JavaScript i Node.js till MongoDB. Det handlar både om referens-dokumentationen och API-dokumentationen.

  5. Läs igenom inledande tutorials för MongoDB Node.js driver som du hittar i Referensmanualen. Titta främst i “Connect to MongoDB”, “Collections”, “CRUD Operations” och “Projections”. De ger dig snabbt en känsla av hur man jobbar med datan.

#Övningar & Uppgifter

(ca: 6-10 studietimmar)

#Övningar

Gör följande övningar, de behövs normalt för att klara uppgifterna.

  1. Jobba igenom artikeln “Kom igång med MongoDB i Nodejs” för att komma igång med databasen MongoDB tillsammans med Express, Node.js och Docker. Spara dina exempelprogram i me/kmom05/db.

#Uppgifter

Följande uppgifter skall utföras och resultatet skall redovisas via me-sidan.

  1. Gör uppgiften “Skapa en CRUD med MongoDB till din redovisa-sida”. Du skall lägga till databasfunktionalitet i din applikation. Du sparar koden under me/redovisa.

  2. Gör uppgiften “Bygg en klient/server applikation i JavaScript (databas)”. Du bygger ut din applikation med stöd för databasen. Spara koden i repot me/app.

#Resultat & Redovisning

(ca: 1-2 studietimmar)

Läs instruktionen om hur du skall redovisa.

Lägg extra tid på skrivandet i detta inledande momentet då redovisningstexten är mer omfattande än du är van vid.

Se till att följande frågor besvaras i texten:

  • Hur gick det att komma igång med databasen MongoDB?
  • Vilken syn har du på databaser inom konceptet NoSQL?
  • Reflektera över skillnader och likheter mellan relationsdatabaser och databaser inom NoSQL.
  • Vilka är dina tankar om asynkron programmering med JavaScript?
  • Hur känner du för Docker och det sättet vi jobbar med tjänster i kontainrar?

Har du frågor eller funderingar så ställer du dem i forumet.

#Revision history

  • 2018-06-08: (prel, mos) Nytt dokument inför uppdatering av kursen.
  • 2017-11-23: (A, mos) Första utgåvan.

Document source.