2013-08-19 11 views
9

Używam MapDB w projekcie, który zajmuje się miliardami obiektów, które muszą być mapowane/kolejkowane. Nie potrzebuję żadnego rodzaju utrwalania po zakończeniu programu (bazy danych MapDB są tymczasowe). Chcę, aby program działał tak szybko jak to możliwe, ale jestem zdezorientowany co do funkcji commit() MapDB (która, jak zakładam, jest istotna dla wydajności), nawet po przeczytaniu docs. Moje pytania:Efektywnie używając MapDB (mylić o zatwierdzeniach)

  1. Co dokładnie nie popełnić zrobić? Moje zrozumienie jest takie, że serializuje obiekty ze sterty na dysk, a tym samym zwalnia przestrzeń sterty. Czy to jest dokładne?

  2. Co dzieje się z odniesieniami do właśnie zatwierdzonych obiektów? Czy oni dostać oczyszczone metodą GC, czy też jakoś „odniesienia” obiekt na dysku (z MapDB czyni to przejrzyste?)

Docelowo chcę wiedzieć, jak korzystać MapDB tak skutecznie, jak tylko mogę, ale Nie mogę tego zrobić, nie wiedząc, do czego służy commit(). Byłbym wdzięczny za wszelkie inne porady, które mogą ci pomóc w efektywnym korzystaniu z MapDB.

Odpowiedz

2

Operacja commit jest operacją pod numerem transactions, podobnie jak w systemie baz danych. MapDB implementuje transakcje, więc commit skutecznie "wprowadza zmiany, które wprowadziłem w tym DB na stałe i widoczne dla innych użytkowników". Bezpłatna operacja to rollback, która odrzuca wszystkie zmiany wprowadzone w bieżącej transakcji. Commit nie wpływa (bezpośrednio) na to, co jest w pamięci, a co nie. Zamiast tego warto spojrzeć na numer compact(), jeśli próbujesz odzyskać przestrzeń stosu.

Jeśli chodzi o drugie pytanie, jeśli posiadasz silne odniesienie do obiektu, to nadal utrzymuj silne referencje. MapDB nie zamierza go usunąć. Powinieneś pomyśleć o MapDB jako normalnej Mapie Java, przez większość czasu. Po wywołaniu get, MapDB ukrywa, czy jest w pamięci lub na dysku od ciebie i po prostu zwraca użyteczną referencję do pobranego obiektu. Ten pobrany obiekt będzie zawieszony w pamięci, dopóki nie stanie się śmieciem, tak jak wszystko inne.

Powiązane problemy