MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Plusy i minusy używania MongoDB zamiast MS SQL Server

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak stworzyć użytkownika w mongodb za pomocą docker-compose

  2. Nie można użyć polecenia mongo, pokazuje polecenie nie znalezione na komputerze Mac

  3. mongodb $pull dopasowywanie z wyrażeniem regularnym nie działa

  4. Filtr Linq do MongoDB

  5. Nie można odczytać/zapisać w bazie danych MongoDB Atlas przy użyciu Mongoose