Bazı iş arkadaşları ve ben tarihsel verileri depolamanın en iyi yolu hakkında bir tartışmaya girdik. Şu anda, bazı sistemler için geçmiş verilerini depolamak için ayrı bir tablo kullanıyorum ve geçerli, aktif kayıt için orijinal bir tablo tutuyorum. Diyelim ki FOO masam var. Sistemim altında, tüm etkin kayıtlar FOO'ya ve tüm geçmiş kayıtlar FOO_Hist'e gidecek. FOO'daki birçok farklı alan kullanıcı tarafından güncellenebilir, bu yüzden her şeyin güncelliğini doğru bir şekilde tutmak istiyorum. FOO_Hist, otomatik artan HIST_ID haricinde FOO ile tam olarak aynı alanları tutar. FOO her güncellendiğinde, FOO_Hist'e aşağıdakine benzer bir ekleme ifadesi gerçekleştiririm insert into FOO_HIST select * from FOO where id = @id.
İş arkadaşım bunun kötü bir tasarım olduğunu söylüyor çünkü tarihsel nedenlerden ötürü bir tablonun tam bir kopyasına sahip olmamalıyım ve aktif tabloya sadece tarihi amaçlar için olduğunu belirten bir bayrakla başka bir kayıt eklemeliyim.
Geçmiş veri depolama ile ilgili bir standart var mı? Bana öyle geliyor ki, aktif kayıtlarımı bir milyondan fazla kayıt olabileceğini düşünerek aynı tablodaki tüm tarihsel kayıtlarım ile karıştırmak istemiyorum (uzun vadeli düşünüyorum).
Siz veya şirketiniz bunu nasıl hallediyorsunuz?
MS SQL Server 2008 kullanıyorum, ancak yanıtı genel ve keyfi herhangi bir DBMS tutmak istiyorum.