Oracle database change notification feature wysyła wiersze (fizyczne adresy wierszy) w wierszach wstawia, aktualizuje i usuwa. Jak wskazano w dokumentacji Oracle, ta funkcja może być używana przez aplikację do budowania pamięci podręcznej średniego poziomu. Ale wydaje się to sprzeczne, gdy mamy szczegółowe spojrzenie na działanie identyfikatorów rzędów.Powiadomienie o zmianie bazy danych Oracle i ROWID's
ROWID (fizyczne adresy wierszy) mogą się zmieniać, gdy wykonywane są różne operacje na bazach danych, zgodnie ze wskazaniem this stackoverflow thread. Oprócz tego, jak wspomina Tom w tym thread tabel klastrowanych mogą mieć same rowids.
Na podstawie powyższych badań nie wydaje się być bezpieczne korzystanie z rowid wysłany podczas powiadomienia o zmianie bazy danych jako klucz w pamięci podręcznej aplikacji, prawda? Pojawia się również pytanie dotyczące - Czy funkcja powiadamiania o zmianie bazy danych powinna być używana do budowania pamięci podręcznej serwera aplikacji? lub czy zalecane jest zrestartowanie wszystkich klastrów serwerów aplikacji (w celu przeładowania/odświeżenia pamięci podręcznej), gdy tabele obiektów z pamięci podręcznej są poddawane operacjom, które powodują zmianę wiersza? Czy byłoby to dobre założenie dla środowisk produkcyjnych?
Dlaczego nie polegasz na atrybutach podmiotów gospodarczych/domen? – zerkms
Nie do końca zrozumiałem twoją rekomendację. Dzięki powiadomieniu o zmianie bazy danych oracle wysyła tylko rzędy do wstawionych/zaktualizowanych wierszy. Nie można go skonfigurować do podawania jakichkolwiek innych informacji o kolumnach w tej tabeli. –
tak, i dlaczego nie stworzysz warstwy pamięci podręcznej na warstwie dostępu do danych, opierając się na danych biznesowych, a nie na pamięci. Czy myślisz, że możesz buforować dane lepiej, niż robi to wyrocznia? – zerkms