veritabanında satır ve ileri / geri değişiklikler için herhangi bir kütüphane / framework var mı?

oy
2

Benim başlık olabilir açık değildir. wiki yaptığı gibi yıkıcılık, dosyalar üzerinde yaptığı gibi ben, veritabanı tabloları sürüm kontrolü çeşit arıyorum.

Ben değişiklikler log izlemek istiyoruz. Ben ayıklamak ve ters diff çalıştırmak istiyorum. (A : 100 svn 101 r birleştirme gibi geri). Ben tarihe bir dizine arama gerekebilir.

Ben okudum Geri Al Engine Tasarım Desen , ancak Patterns ile ilgilidir. Tekerleği yeniden icat etmeden ben yeniden bir şey var mı?

DÜZENLEME: Örneğin, banka hesap işlemleri. Masanın güncelleme sütun denge (ve diğerleri) var. Bir kullanıcı 10 gün sonra onun tarafından bir hata bulacak ve diğerlerini değiştirmeden / iptal belirli hareketi geri almak isteyeceklerdir.

Nasıl uygulama düzeyinde incelikle yapabiliriz?

Oluştur 09/12/2008 saat 15:08
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
1

Bilgiçlik nokta. Banka hesap örnek, bir denetçi / regülatör geçmiş olsun olmazdı.

Bir hesaptaki herhangi hatalı girişler kayıt için orada bırakılmalıdır. Bir eşit ve zıt düzeltme işlemi hesabına uygulanacak. Aslında orijinal hareketi geri ancak orijinal hata ve düzeltme çok bariz iz bırakmadan.

Cevap 09/12/2008 saat 16:05
kaynak kullanıcı

oy
2

Martin Fowler konuyu kapsar zamanla değiştirmek şeyler için Patterns . Yine desenler ve gerçek bir çerçeve ama o örnek veri ve nasıl kullanılacağını gösterir.

Cevap 09/12/2008 saat 16:19
kaynak kullanıcı

oy
2

Sen izlemek istediğiniz her kayıt için bir revizyon yaklaşımı kullanabilirsiniz. Bu kaydın her revizyon için tablodaki bir satır istinat içerecektir. kayıtları paylaşılan 'ID' ile birbirine bağlanmış olacak ve 'Revizyon Durum' (örn alın son "Onaylı" kaydı) üzerine sorgulanan mümkündür.

Başvurunuz katmanı olarak, tek tek bu kayıtları işleyebilir ve sürece gerekli tüm bilgileri kaydetmek gibi gerekirse daha önceki bir duruma geri almak.

[ID] [Revision Date] [Revision Status] [Modified By] [Balance]
1     1-1-2008         Expired           User1         $100
1     1-2-2008         Expired           User2         $200
2     1-2-2008         Approved          User3         $300
1     1-3-2008         Approved          User1         $250
Cevap 09/12/2008 saat 16:40
kaynak kullanıcı

oy
0

James Anderson'a Yorumlarınız dayanarak, bir işlemi iptal ettiğinde kullanıcı arayüzü, yeni bir insert yazmak gerekir. Bu değerin dışında iptal işlemin negatif bir sayı yerine pozitif bir sayı olacağı gibi aynı değerleri vardı tabloya yeni bir kayıt eklemek olacaktır. Eğer işlemin amacını tanımlamak için bir şeyler içeren bir yapınız varsa, bunu iptal dedirtir ve iptal edildi işlemin rekor sayıda olacaktır.

Cevap 09/12/2008 saat 17:05
kaynak kullanıcı

oy
0

Bunu daha fazla satır ekleyerek veya basitçe sonraki değişiklikler silme anlamına yeri olsun, gerçekleştirmek ve geri alma için gerekli tüm verileri verecek bir iki zamansal veritabanı tasarımı ile gider.

Orada incelik adil bir miktar gibi bir veritabanı tasarımı var ama orada konuda çok iyi bir kitap gibidir:

Richard T. Snodgrass tarafından SQL Zaman odaklı Veritabanı Uygulamaları Geliştirme

Burada indirilebilir:

http://www.cs.arizona.edu/people/rts/tdbbook.pdf

temelde veritabanı işlemleri mümkün olduğunca kısa olmalıdır - bu veritabanında yaratacak kilitler çünkü Veritabanı işlemi kullanarak kötü bir fikir olacaktır.

bazı kalıcılık mekanizması kendisi olmadıkça (yani bir gereklilik olmayabilir rağmen) uygulama katmanında şey, uygulama yeniden başlatılır hayatta kalamaz.

Cevap 09/12/2008 saat 18:02
kaynak kullanıcı

oy
0

Çeşitli yorumlara dayanarak sizin sorun için olası bir çözüm, bir "tarih etkili" tablosunu yapmak olacaktır.

Javascipt her masaya gelen güncel geçerli ve geçerli güncel sütunları ekleyin.

"Geçerli" kayıt daima "2999-12-31" veya bazı arbiteraly yüksek değerin bir valid_to_date olmalıdır. Bir değer ile geçerli tarihe "güncel geçerli" ve insert yeni bir satır değiştirmek değiştiğinde geçerli bir-den güncel bugün ve geçerli güncel "2999/12/31" tüm kopya eski satırdan sütunların değiştirilmedi eğer.

Sen "hepsi sütunlar-hariç-valid-xx güncel tablosundan nerede geçerli güncel = '2999/12/31' select" ile görüş oluşturabilir

Hangi mevcut tüm sorgular değişmeden çalışmasını sağlayacak.

Bu veri ambarı ortamlarda ve etkili tarih önemlidir döviz kurları gibi şey için çok yaygın bir yöntemdir.

geri alma mantığı açık olmalı.

Cevap 10/12/2008 saat 11:07
kaynak kullanıcı

oy
0

Ben tetikler ve rowversions kullanmadan önce tam geri al / denetim geçmişlerini kurdunuz rağmen, belirli bir desen farkında değilim.

Eğer günlükleri ile trol ve fiili değişiklikleri görelim MS Sql için uygulamalar bir çift vardır.

Şimdi olsa bulamıyorum - Geri bana belirli tarihsel hareketi geri izin verirdi MS SQL 2000 ile Giriş Navigator diye bir tane kullandım.

http://www.lumigent.com ve http://www.apexsql.com günlükleri görüntülemek için araçlar, ama bence ya onları geri almanıza izin verir yoktur.

Eğer nasıl yapılacağını zaten burada iyi birkaç önerimiz var - Bunu yapmanın en iyi yolu bu akılda ile uygulama yazmak olduğunu düşünüyorum.

Cevap 10/12/2008 saat 11:20
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more