Sam jestem starterem baz danych NoSQL. Odpowiadam więc na to kosztem potencjalnych głosów przegrywających, ale będzie to dla mnie świetna nauka.
- aby stwierdzić, czy MongoDB nadaje się do przechowywania takich danych, które ostatecznie zostaną odpytywane o zakresy czasowe (np. pobranie wszystkich obrazów z określonej kamery między określoną godziną)? Jakieś sugestie dotyczące projektu schematu opartego na dokumencie dla mojego przypadku?
MongoDB jest bazą danych zorientowaną na dokumenty, dobrze sprawdza się w zapytaniach w ramach agregat (nazywasz to dokumentem). Ponieważ już przechowujesz dane każdej kamery w osobnej tabeli, w MongoDB będziesz mieć osobną kolekcję stworzony dla każdej kamery. Oto jak wykonujesz zapytania o zakres dat.
- Jaka powinna być specyfikacja serwera (procesor, pamięć RAM, dysk)? jakieś sugestie?
Wszystkie bazy danych NoSQL są zbudowane w sposób skalowany w poziomie na sprzęcie towarowym. Ale po tym, jak zadałeś pytanie, być może myślisz o poprawie wydajności poprzez skalowanie . Możesz zacząć od rozsądnej maszyny, a wraz ze wzrostem obciążenia możesz dodawać kolejne serwery (skalowanie). Nie musisz planować i kupować wysokiej klasy serwera.
- Czy powinienem rozważyć sharding/replikację w tym scenariuszu (biorąc pod uwagę wydajność podczas pisania w celu zsynchronizowania zestawów replik)?
MongoDB blokuje całą bazę danych dla pojedynczego zapisu (ale daje wyniki dla innych operacji) i jest przeznaczony dla systemów, które mają więcej odczytów niż zapisów. Więc to zależy od tego, jaki jest twój system. Istnieje wiele sposobów shardingu, które powinny być specyficzne dla domeny. Ogólna odpowiedź nie jest możliwa. Można jednak podać kilka przykładów, takich jak sharding według geografii, według gałęzi itp.
Przeczytaj także Zwykłe angielskie wprowadzenie do twierdzenia CAP
Zaktualizowano o odpowiedź na komentarz dotyczący shardingu
Według ich dokumentacji , Rozważ wdrożenie klastra podzielonego na fragmenty, jeśli:
Więc w oparciu o ostatni punkt tak. Funkcja automatycznego fragmentowania jest stworzona do skalowania zapisów. W takim przypadku masz blokadę zapisu na odłamek , a nie według bazy danych . Ale moja jest teoretyczną odpowiedzią. Proponuję skorzystać z konsultacji z grupą 10gen.com.