Wiem, że nie mogę zablokować pojedynczego dokumentu mongody, w rzeczywistości nie ma możliwości zablokowania kolekcji.Nie można zablokować dokumentu mongodb. Co jeśli muszę?
Jednak mam ten scenariusz, w którym, jak sądzę, potrzebuję sposobu, aby zapobiec modyfikowaniu dokumentu przez więcej niż jeden wątek (lub proces, to nie ważne). Oto mój scenariusz.
Mam kolekcję, która zawiera obiekt typu A. Mam kod, który pobiera dokument typu A, dodaj element w tablicy, która jest właściwością dokumentu (a.arr.add(new Thing()
), a następnie zapisz dokument ponownie mongodb. Ten kod jest równoległy, wiele wątków w moich aplikacjach może wykonywać tezy, a na razie nie ma sposobu, aby zapobiec temu, by wątki powodowały równoległe wykonywanie tych samych operacji na tym samym dokumencie. Jest to złe, ponieważ jeden z wątków mógłby nadpisać dzieła drugiego.
Używam wzorca repozytorium do abstrakcyjnego dostępu do kolekcji mongodb, więc mam tylko operacje CRUD w mojej dyspozycji.
Teraz, kiedy o tym myślę, może to ograniczenie schematu repozytorium, a nie ograniczenie monoubbu, które sprawia mi kłopoty. W każdym razie, w jaki sposób mogę uczynić ten kod "wątkiem bezpiecznym"? Sądzę, że istnieje dobrze znane rozwiązanie tego problemu, ale będąc nowym dla mongodb i schematu repozytorium, nie widzę go od razu.
Dzięki
Co jeśli chcę zablokować podczas tworzenia obiektu dokumentu? – Chinni