Kullanıcı tarafından düzenlenebilir içerik içeren bir web projesi üzerinde çalışıyorum ve bir veritabanında yaşayan gerçek içeriğin sürüm izlemesini yapmak istiyorum. Temel olarak, wiki tarzı değişiklik geçmişlerini uygulamak istiyorum.
Bazı arka plan araştırmaları yaparken, veritabanı şemanızı nasıl güncelleyeceğinize dair çok fazla belge görüyorum (benimki zaten kontrol ediliyor), ancak veritabanı içeriği değişikliklerinizi nasıl izleyeceğinizle ilgili mevcut stratejiler , en azından şema sürümleme çığında kayboluyor aramalarımda.
Kendi değişiklik izlememi uygulamak için birkaç yol düşünebilirim, ancak hepsi oldukça kaba görünüyor:
- Her değişiklikteki tüm satırı kaydedin, satırı Birincil anahtarla kaynak kimliğiyle ilişkilendirin (şu anda doğruya eğildiğim şey, en basitidir). Bununla birlikte, birçok küçük değişiklik bir sürü masa şişmesine neden olabilir.
- Her değişiklik için önce / sonra / kullanıcı / zaman damgası kaydedin; değişikliği ilgili sütuna geri getirmek için bir sütun adıyla kaydedin.
- her sütun için bir tablo ile önce / sonra / user / timestamp kaydedin (çok fazla tablo ile sonuçlanır).
- bir sütunla her değişiklik için diffs / user / timestamp değerini kaydedin (bu, belirli bir tarihe geri dönmek için araya giren tüm değişiklik geçmişini yürümek zorunda kalacağınız anlamına gelir).
Buradaki en iyi yaklaşım nedir? Kendimi yuvarlamak muhtemelen başka birinin (daha iyi) kod tabanını yeniden icat ediyorum gibi görünüyor.
PostgreSQL için bonus puanlar.