2009-09-17 16 views
6

Mevcut kurumsal çözüm, Entity Framework tarafından yönetilen bir ASP.NET MVC uygulamasıdır. Denetim için değişiklik olaylarına nasıl bağlanacağına dair birkaç bağlantı vardır. Bununla gerçekten ilgilenmiyorum.Kurumsal Veri Denetimi

Kurumsal düzeyde denetleme mimarisi ile ilgileniyorum. Kurumsal düzeyde savaş yaraları olanlarınız, sizin denetim çözümleriniz nelerdi? Veritabanlarındaki nesneleri bir çerçevede serileştirir misiniz? Denetim tablolarına veritabanı tetikleyicileri mi kuruyorsunuz? Bağımsız bir veritabanını hep birlikte kullanıyor musunuz? Böylece, denetim büyümeniz uygulama veritabanınızı etkilemez mi? Burada denenmiş ve gerçek çözümler ile ilgileniyorum. Teknoloji seçimimizde (EF) seçenekler olduğunu biliyorum, ancak öncelikle kuruluşla ilgileniyorum.

Linkler çok takdir edilecektir.

+0

Ayrıca önemli bir not da yazayım. Geri dönüp uygulamadaki eski verileri görebilme konusunda tutkuluyuz. Bu, devam eden seri hale getirilmiş nesnelerin yararlı olduğunu hissettiğimiz yer (yalnızca deltaları kaydetmek değil). – RailRhoad

+2

Bir veritabanı ve çoklu veritabanları arasındaki ayrım biraz yapay. Veritabanlarının birden çok dosya grubu olabilir ve tablolarda birden çok bölüm bulunabilir. Tek bir veritabanını çok sayıda veritabanı gibi ve tek bir tablo gibi birden çok tablo gibi etkili bir şekilde ele alabilirsiniz. –

cevap

1

(... biz aslında denetim günlüğüne bakmak gerekir için hiçbir şey yapmadım Verilen), ancak benim favori bir basitti:

  • denetim tablolar oluşturun o Her bir kaynak tablosunu yansıtın, tarihin ve değişiklik türünün (ekleme, güncelleme veya silme, destekliyorsanız) ve değişikliği yapan kullanıcıyı izlemek için birkaç tane ek sütun ekleyin. Tüm kısıtlamaları ve endeksleri kaldırın (çok fazla arama yapmayı beklemediğiniz sürece).

  • Tablo güncelleştirme mantığının içinde (prosedürleri kullandık, ancak uygun kancalar göz önüne alındığında bir OR/M veya başka bir kalıcı katmanla yapılamazdı), hem kaynak tabloya hem de denetim masası.

Bu sayısız faydalar, ama (Bence) en büyük olanı dert veya istemci eşleştirilmiş yazma işlemlerinin işlem bütünlük yönetmek için tüm kodu yazmak zorunda değildir vardır.

+0

EF kararıyla burada saklanan proaktif prodüksiyonlar yok, ancak bu değişiklikleri devam ettirebilmemiz anlamına gelen değişikliklere bağlanabiliyoruz. Yani temelde bu ayrı bir db içinde uygulama tablolarının bir aynası mı? – RailRhoad

+0

Doğru, aynı db dışında, "Çalışan" ve "Çalışanların İşleri" gibi tabloların yan yana olması gibi. (Yukarıdaki Craig Stuntz'ın yorumu burada gözükse de.) Geçmişe bakılırsa, saklı yordamları varsaydığını söylemem için bir neden yok, bu yüzden bu metni elden çıkardım. –

+0

Bu, bir veritabanının her şeyi iki kez yazmak zorunda olduğu anlamına mı geliyor? Bunu yapmanın verim üzerinde herhangi bir etkisi olduğunu fark ettiniz mi? – glenatron

2

Hiç bir bağlantım yok, fakat sistemde günlük işte tutmanın mutluluğunu yaşıyorum. Temel olarak aşağıdaki bilgileri saklayan tek bir denetim masasına sahibiz.

TableName, PrimaryKeyValue, ModifiedColumn, OldValue, newvalue, ChangeUser, Şimdi, bu bizim kodunda, biz otomatik uygulanması Denetim günlüğü için ortak bir arayüz var, denetim hızı için harika çalışıyor

Değişiklik Tarihi, fakat Bir "inceleme" bakış açısı, bilgiyi geri almak için "en hızlı" yol değildir. Ben çeşitli çözümler gördüm

+0

Yani temelde büyüyen bir tablo, bu aynı DB içinde mi? – RailRhoad

+0

Evet, bu doğru, ayrıca şu anda tabloda herhangi bir dizin yok. Bazıları için aynı DB içinde, ancak bir "Veritabanı" sütunu ekleyen ve dışında depolanan başka bir sürümü var. –

+0

İlişkilerdeki değişiklikleri nasıl ele alıyorsunuz? – camainc

2

Son zamanlarda bu sorunu işletmemizde çözmek zorunda kaldık. Önceki sürümlere de geri dönebilmemiz gerekiyordu.

SQL Server'daki tablolardan ziyade işletme varlıklarını denetlemeyi sonlandırdık. Temel olarak DB'deki kayıtları serileştiriyoruz ve bir versiyondan diğerine yapılan değişiklikleri takip ediyoruz. Bu yaklaşım, önceki sürümleri işletme birimlerine geri göndermemize ve aynı kaydetme işlemlerini çağırarak geri almamıza izin verir. Geri dönüş için bu işlevsellik, uygulamaların sorumluluğu üzerine kaydırılacaktır çünkü burada çözülmesi gerekmektedir, aksi takdirde servisimiz katılımcı uygulamalar hakkında çok fazla ayrıntı bilmek zorunda kalabilir. Serivce Operasyonları sürümlere göre kayıt alma, tarihlere göre, geçmişe bakış ve elbette denetleme değişikliklerini sağlar. Farklı uygulama grupları ve farklı varlıklar için bir katılım yaklaşımı (DB'deki her şeyin denetlenmesi gerekmediği için neden bu kadar önemlidir?).

Daha sonra hizmetle ilgili olan ve tüm sürümleri görüntüleyebilen hafif bir web sitesi hazırlarız.Sürümler arasında karşılaştırmak için eklemeler/güncellemeler/silme işlemlerini göstermek için bir mekanizma kurduk (gerçekten harika kullanıcı temsili), bu kullanıcıların neyin ne zaman ve ne zaman değiştiğini görmelerini sağlar. Hizmet, bir varlığın sürümlerini görüntülemek için URL'ye bir bağlantı gönderebilir. Bu, webaps + winform/wpf uygulamalarımızın, kullanıcıların değişiklikleri görebilmesi için bir tarayıcı başlatmasına olanak tanır.

Belki de bunu paketleyebilir ve ilgilenen biri varsa ....

+0

Yani EF nesnelerini alıyorsunuz ve bunları serileştiriyorsunuz, daha sonra bunları kendi kontrol tablolarına/veritabanlarına kaydediyorsunuz? Ebeveyn-çocuk ilişkilerini nasıl ele alıyorsunuz? – glenatron

İlgili konular