sql >> Databáze >  >> RDS >> Mysql

Aktualizace denormalizovaných databázových tabulek

Existuje několik způsobů, jak tuto situaci vyřešit:

  1. Můžete použít spouštěč databáze. Toto není databázová agnostická možnost a její podpora RoR, pokud vím, neexistuje. Pokud vaše situace nevyžaduje absolutně žádnou nekonzistenci dat, toto by byl pravděpodobně nejvýkonnější způsob, jak dosáhnout vašeho cíle, ale ne odborník na DB.
  2. K pravidelné synchronizaci těchto dvou tabulek můžete použít dávkovou operaci. Tato metoda umožňuje, aby se vaše dvě tabulky od sebe oddělily, a pak se data často znovu synchronizují. Pokud vaše situace umožňuje, aby k tomuto posunu došlo, může to být dobrá volba, protože umožňuje aktualizaci DB v mimopracovních hodinách. Pokud potřebujete provést synchronizaci každých 5 minut, pravděpodobně se budete chtít podívat na další možnosti. To může být řešeno vaším ruby ​​kódem, ale bude to vyžadovat nějaký druh běhu úlohy na pozadí (cron, delayed_job, redis atd.)
  3. Můžete použít zpětné volání zevnitř modelu Rails. Můžete použít "after_update :sync_denormalized_data" . Toto zpětné volání bude zabaleno do transakce na úrovni databáze (za předpokladu, že vaše databáze transakce podporuje). Budete mít kód na úrovni Rails, konzistentní data a nebudete potřebovat proces na pozadí na úkor provádění dvou zápisů pokaždé.
  4. Nějaký mechanismus, na který jsem nepomyslel...

Tyto typy problémů jsou velmi specifické pro aplikaci. I v rámci stejné aplikace můžete použít více než jednu z metod v závislosti na požadavcích na flexibilitu a výkon.



  1. Pochopení SQL Server LOCKS na SELECT dotazy

  2. Obecná chyba:Neshoda verze OS

  3. Dotaz s více lajky

  4. Uložit výsledky dotazu SQLite do textového souboru