Podejście 1(A): Tworzenie jednej bazy danych do wszystkiego. (Z pojedynczą kolekcją)
Plusy:
- Mniej konserwacji:tworzenie kopii zapasowych, tworzenie użytkowników baz danych, przywracanie itp.
Wady:
- Możesz zobaczyć blokada na poziomie bazy danych do tworzenia indeksów w dużej bazie danych
- Aby wykonać operacje na określonych danych z czujnika, musisz dodać dodatkowe indeksy, aby pobrać tylko kolekcję specyficzną dla czujnika
- Jesteś zobowiązany nie tworzyć ponad 64 indeksy na jednej kolekcji. Chociaż brzmi to zła strategia indeksowania.
Podejście 1(B): Tworzenie jednej bazy danych do wszystkiego. (Z 1 kolekcją dla każdego czujnika)
Plusy:
- Mniej konserwacji:tworzenie kopii zapasowych, tworzenie użytkowników baz danych, przywracanie itp.
- Minimalizuje potrzebę tworzenia indeksów w celu identyfikacji danych specyficznych dla czujnika z całej kolekcji monolitycznej
- Każde zapytanie dotyczące czujnika będzie kierowane tylko na określoną kolekcję. Nie wymaga ściągania do pamięci dużego zestawu roboczego w porównaniu z pojedynczą dużą kolekcją.
- Wskaźnik budowania na stosunkowo mniejszej kolekcji jest bardziej wykonalny niż w przypadku dużej kolekcji w pojedynczym DB
Wady:
- Możesz skończyć się utworzeniem zbyt wielu indeksów. (Suma całkowitej liczby indeksów we wszystkich kolekcjach).
- Dla większej liczby indeksów wymagana jest dalsza konserwacja.
- WiredTiger tworzy 1 plik dla kolekcji i 1 dla indeksu wewnętrznego. Jeśli Twój przypadek użycia rośnie wraz z dużą liczbą czujników. Możesz skończyć używając limitu 64K otwartych plików.
Czy pod względem wydajności ma znaczenie, czy podzielę dane według każdego czujnika, czy według danych?
- To zależy od wzorców dostępu oczekiwanych od Twojej aplikacji analitycznej.
Z punktu widzenia wydajności, czy powinienem utworzyć kolekcję tylko dla informacji z czujników, a następnie kolekcje dla danych, czy po prostu połączyć je w tej samej kolekcji?
-
Konieczne może być utworzenie kolekcji dla metadanych czujnika i danych z czujnika. Zminimalizuje to powielanie metadanych czujnika w każdym zebranym czujniku.
-
Możesz przeczytać Wpis na blogu Williamsa tutaj na temat projektowania tego wzoru.
Jak zawsze, lepiej zaprojektować przykładowy schemat i przetestować zapytania w środowisku testowym.