Aktualizacja dużej liczby rekordów w kolekcji
Mam kolekcję o nazwieTimeSheet
mając teraz kilka tysięcy rekordów. To w końcu zwiększy liczbę rekordów do 300 milionów w ciągu roku. W tej kolekcji osadzam kilka pól z innej kolekcji o nazwieDepartment
który w większości nie dostanie żadnych aktualizacji i tylko niektóre rekordy zostaną zaktualizowane. Rzadko mam na myśli tylko raz lub dwa razy w roku, a także nie wszystkie rekordy, tylko mniej niż 1% zapisów w kolekcji.
Najczęściej po utworzeniu działu nie ma żadnej aktualizacji, nawet jeśli jest aktualizacja, zostanie ona wykonana początkowo (gdy nie ma zbyt wielu powiązanych rekordów w arkuszu TimeSheet)
Teraz, jeśli ktoś zaktualizuje dział po roku, w najgorszym przypadku zbierane są szanseTimeSheet
będzie miał około 300 milionów rekordów w całości i około 5 milionów pasujących rekordów dla działu, który zostanie zaktualizowany. Warunek zapytania aktualizacji będzie znajdował się w polu indeksu.
Ponieważ ta aktualizacja jest czasochłonna i tworzy blokady, zastanawiam się, czy jest jakiś lepszy sposób, aby to zrobić? Jedną z opcji, o której myślę, jest uruchomienie zapytania o aktualizację w partiach, dodając dodatkowy warunekUpdatedDateTime> somedate && UpdatedDateTime < somedate
.
Inne szczegóły:
Rozmiar pojedynczego dokumentu może wynosić około 3 lub 4 KB. Mamy zestaw replik zawierający trzy repliki.
Czy jest jakiś inny lepszy sposób na to? Co sądzisz o takim projekcie? Co sądzisz, jeśli podane liczby są mniej podobne do poniższych?
1) 100 milionów rekordów i 100 000 pasujących rekordów dla zapytania o aktualizację
2) 10 milionów rekordów ogółem i 10 000 rekordów pasujących do zapytania o aktualizację
3) 1 milion wszystkich rekordów i 1000 pasujących rekordów dla zapytania o aktualizację
Uwaga: Nazwy kolekcjidepartment
itimesheet
, a ich cel jest fikcyjny, a nie prawdziwe zbiory, ale statystyki, które podałem, są prawdziwe.