[x^2 for x in lst]

MongoDB - the Definitive Guide

Author: Kristina Chodorow

Review created: 2014-05-06

"MongoDB - the definitive guide" är en kanonbok om man vill lära sig ganska mycket om många delar om MongoDB.Det är en bred bok som går igenom allt från hur man installerar, konfigurerar och använder MongoDB, till hur man sätter upp replica set och shardar sin databas.

Boken börjar med att förklara vad en dokumentdatabas är för något och hur dokument, collections och databaser förhåller sig till varandra.

I ett av de inledande kapitlen beskrivs mongodb-shellet. Man får bland annat veta hur man anpassar shellet samt hur man använder det för att skapa, hämta och ta bort dokument.skapar och insertar dokument. Shellet är lättanvänt och kan med fördel användas för att testköra frågor och för att skapa, uppdatera och ta bort dokument. Det används även för att konfigurera MongoDB-servern.

Efterföljande kapitel beskriver i mer detalj hur CRUD-operationer utförs. Speciell vikt läggs, helt naturligt, hur man ställer frågor för att hämta upp hela eller delar av dokument samt hur man sorterar och paginerar (heter det så?) resultatet från en databasfråga.

Flera kapitel av boken behandlar hur man skall designa sin applikation för att utnyttja MongoDB på bästa sätt. Det handlar om hur man strukturerar sina datastrukturer, hur man ställer frågor på bästa sätt och vilka fält som man bör ha index på.

Några begrepp som används MongoDB-världen (och säkert på andra ställen också) är relica set och sharding.

Ett replica set är en grupp av (i det här fallet) MongoDB-servrar som alla innehåller samma data. Det används för high availability och fail over. Tanken är att om en av databasservrarna går ner skall replica setet automatiskt ta hand om detta och routa om anrop till en annan nod i setet. En klient skall inte märka om en av noderna går ner.

Sharding innebär att datamängden delas upp mellan ett antal servrar på så sätt att ingen av servrarna innehåller hela datamängden. Alla klientanrop går till speciella processer som vet om vilka delar av datamängden som finns på de olika servrarna och därför kan routa om anropet till den eller de servrar som innehåller den del som efterfrågas. Sharding används för att öka kapaciteten i ett databaskluster både med avseende på datalagringskapacitet och antalet klientanrop per tidsenhet.

"MongoDB - the definitive guide" beskriver på ett ingående sätt hur man sätter upp olika konfigurationer av replica set och hur man inför sharding. Ett stort plus för att beskrivningen är lättföreståelig och okomplicerad. Det är med hjälp bokens hjälp inte speciellt svårt att som en övning sätta upp ett kluster bestående av två shards med var sitt replica set med tre medlemmar på sin laptop. (Gör du det så kom ihåg att ange flaggan --smallfiles till mongod. Om du inte har mycket plats över på hårddisken vill säga...)

Boken är skriven för version 2.4 av MongoDB. I skrivande stund är 2.6 den senaste stabila versionen som finns ute. Jag har dock inte märkt av några större skilnnader mellan 2.4 och 2.6, så boken funkar fint även med version 2.6.

Poängteras bör att boken INTE behandlar åtkomst till databasen med annat än shellet. Det står alltså ingentig om hur man t.ex. kommer åt databasen från ett Java- eller Python-program (eller Django ;). Det känns dock inte som om någon jättenackdel, eftersom användandet av i alla fall Java-drivern sker på ett mycket liknande sätt som shellet. Vet man hur man ställer frågor och gör CRUD-operationer via shellet så är det lätt att översätta detta till hur man använder Java-drivern.

Slutomdömet om boken är att det är en mycket bra bok. Den är lättläst och lättförståelig, och den innehåller många exempel på det som avhandlas. Den är inte för lång (392 sidor) vilket gör att den går bra att läsa från pärm till pärm om man vill det. Den är även bra att använda som uppslagsbok efter det att man läst den. Kapitlen är relativt fristående så man behöver inte ta dem i någon strikt ordning. Det rekommenderas dock att läsa kapitlen om shellet först, annars kan det vara lite svårt att följa med rent praktiskt i resten av boken.

Boken innehåller inga övningsuppgifter så man får använda sin fantasi själv för att kunna labba runt lite. Exemplen ger dock bra uppslag angående detta så det borde heller inte vara någon stor nackdel.

Betyg 5 av 5.