Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizowanie zdenormalizowanych tabel bazy danych

Istnieje kilka sposobów radzenia sobie z tą sytuacją:

  1. Możesz użyć wyzwalacza bazy danych. Nie jest to opcja niezależna od bazy danych, a obsługa RoR nie istnieje, o ile wiem. Jeśli Twoja sytuacja nie wymaga żadnej niespójności danych Prawdopodobnie byłby to najskuteczniejszy sposób osiągnięcia celu, ale ja nie ekspert DB.
  2. Można użyć operacji wsadowej, aby okresowo synchronizować dwie tabele. Ta metoda umożliwia rozdzielenie dwóch tabel, a następnie co jakiś czas ponownie synchronizuje dane. Jeśli twoja sytuacja pozwala na wystąpienie tego dryfu, może to być dobra opcja, ponieważ pozwala na aktualizację bazy danych poza godzinami pracy. Jeśli musisz wykonywać synchronizację co 5 minut, prawdopodobnie będziesz chciał przyjrzeć się innym opcjom. Może to być obsłużone przez kod ruby, ale będzie wymagało pewnego rodzaju programu uruchamiającego zadania w tle (cron, delayed_job, redis itp.)
  3. Możesz użyć wywołania zwrotnego z wnętrza swojego modelu Rails. Możesz użyć "after_update :sync_denormalized_data" . To wywołanie zwrotne zostanie opakowane w transakcję na poziomie bazy danych (zakładając, że Twoja baza danych obsługuje transakcje). Będziesz mieć kod na poziomie Railsów, spójne dane i nie będziesz potrzebował procesu w tle kosztem wykonywania dwóch zapisów za każdym razem.
  4. Pewien mechanizm, o którym nie pomyślałem...

Tego typu problemy są bardzo specyficzne dla aplikacji. Nawet w tej samej aplikacji możesz użyć więcej niż jednej metody, w zależności od elastyczności i wymagań dotyczących wydajności.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź datę i godzinę najbliższą podanej w zapytaniu mysql

  2. Wybieranie/rzucanie danych wyjściowych jako liczby całkowitej w SQL

  3. Przywróć bazę danych mysql z plików .frm

  4. usuń zduplikowane pola w wierszach wyników php-mysql

  5. Jak utworzyć tę strukturę tablicy w formularzu HTML?