Jag är själv en nybörjare på NoSQL-databaser. Så jag svarar på det här på bekostnad av potentiella nedröster, men det kommer att bli en fantastisk upplevelse för mig.
- för att berätta om MongoDB är bra för att hålla sådan data, som så småningom kommer att frågas mot tidsintervall (t.ex. hämta alla bilder av en viss kamera mellan en angiven timme)? Några förslag om dokumentbaserad schemadesign för mitt fall?
MongoDB är en dokumentorienterad db och är bra på att fråga inom ett aggregat (man kallar det dokument). Eftersom du redan lagrar varje kameras data i sin egen tabell, kommer du i MongoDB att ha en separat samling skapas för varje kamera. Så här gör du du utför datumintervallsfrågor.
- Vilka bör specifikationerna för servern (CPU, RAM, disk) vara? något förslag?
Alla NoSQL-databaser är byggda för att skala ut på råvaruhårdvara. Men som du har ställt frågan kanske du funderar på att förbättra prestandan genom att skala upp . Du kan börja med en rimlig maskin och när belastningen ökar kan du fortsätta lägga till fler servrar (skala ut). Du behöver inte planera och köpa en avancerad server.
- Bör jag överväga delning/replikering för detta scenario (medan jag överväger prestanda skriftligt för att synkronisera replikuppsättningar)?
MongoDB låser hela db för en enda skrivning (men ger efter för andra operationer) och är avsedd för system som har fler läsningar än skrivningar. Så detta beror på hur ditt system är. Det finns flera sätt att klippa och bör vara domänspecifik. Ett generiskt svar är inte möjligt. Men några exempel kan ges som skärning efter geografi, grenar etc.
Läs även En enkel engelsk introduktion till CAP-teorem
Uppdaterad med svar på kommentaren om sönderdelning
Enligt deras dokumentation , Du bör överväga att distribuera ett fragmenterat kluster, om:
Så baserat på den sista punkten ja. Funktionen för automatisk skärning är byggd för att skala skrivningar. I så fall har du ett skrivlås per shard , inte per databas . Men mitt är ett teoretiskt svar. Jag föreslår att du tar konsultation från gruppen 10gen.com.