iki farklı veritabanında data senkronizasyonu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

iki farklı veritabanında data senkronizasyonu

Mesaj gönderen dabaddah »

12 makineli bir ofiste kullanılan bir program var.veritabanı firebird.

ofiste datalar server üzerinden ortak kullanılıyor.ancak bazı kullanıcılar bilgisayarlarını götürüp ofis dışındada çalışmak istiyorlar.
bu durumda server üzerinden veritabanı dosyasını kopyalayıp kendi makinelerindeki dizine atarak çalışmalarına devam ediyorlar.

ancak bu bilgisayar tekrar ofis ağına katıldığı zaman kullanıcının makinesindeki veritabanı ile server üzerindeki veritabanı senkronize olarak kullanıcının veritabanındaki
dataların server veritabanındada güncellenmesi gerekiyor.

bu olayla ilgili nasıl bir MANTIK yürütmeli ve nasıl bir yol izlemeli.

(ancak burada ciddi bir sorunda şu eğer kullanıcı yeni kayıtlar oluşturmuşsa sorun yok yeni kayıtların tespiti ve veritabanına eklenmesi bir nebze kolay.

fakat kullanıcı ofis ağından ayrıldıktan sonra ofisde bir kayıt üzerinde değişiklik yapıldı diyelim kullanıcıda kendi makinesinde aynı kayıt üzerinde daha başka bir değişiklik yaptı diyelim.

bu durumda bu iki farklı değişiklik arasında nasıl bir bağ kurularak kaydı ona göre güncelleme yapmak gerekir.)

biliyorum belki biraz karışık oldu ama sormaktan yada bişeyler yazmaktan çekinmeyin lütfen.

iyi çalışmalar
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: iki farklı veritabanında data senkronizasyonu

Mesaj gönderen CiTiZEN »

her seferinde veritabanını kopyalamak yerine neden servere bir static ip alıpta uzaktan bağlanmalarını sağlamıyorsunuz?
bir ikincisi eğer düzenlenmiş kayıtları kontrol etmek istiyorsanız veritabanlarınıza düzenleme tarihi diye bir alan açıp ilk kayıt esnasından itibaren her düzenlendiğinde güncelleyerek kontrol edebilirsiniz, ilk aklıma gelen buydu ama ne derece sağlıklı olur bilmiyorum kayıt sayısı fazlaysa herbirini kontrol etmek zor olacaktır, en mantıklısı servere uzaktan bağlanmak.
UWESIS CORPORATION
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

Re: iki farklı veritabanında data senkronizasyonu

Mesaj gönderen dabaddah »

sevgili CİTİZEN kardeşim ilgin ve cevabın için çok teşekkür ederim.

servere uzaktan bağlanmak mümkün aslında ama kişilerin ofis dışında çalıştığı ortamda internet yok.sorun orada zaten

internet olsaydı birinci seçenek çok daha kolay ve kullanışlı olurdu.

kayıt sayısı mininum 2000 maximum 6000.

mesele düzenlenmiş kayıt varmı yok mu öğrenmek değil benim bahsettiğim şey kullanıcı serverdeki datayı alıp gittiğinde yeni kayıt ekleme yapabilir yada önceki kayıtlarda düzenleme yapabilir. bu kişi tekrar ofise geldiğinde serverdeki veritabanı ile kişinin veritabanı senkronize olarak bütün farklılıklar eşitlenmeli.

benim istediğim şey bu ancak MANTIK olarak nasıl bir yol izlemeli fikirleriniz talep ediyorum.

iyi çalışmalar diliyorum
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: iki farklı veritabanında data senkronizasyonu

Mesaj gönderen emin_as »

Bu tür veritabanıyla baglantı olmadan çalışmak için iki farklı teknik kullanılabilir.

Birincisi replication diye geçer. Farklı yerlerde çalıştırılan veritabanlarına herkes kendi bilgisini girer, daha sonra akşamları veya ofise gittiklerinde ana veritabanına yaptıkları değişiklikleri yüklerler. Tablolara insert durumunda keyler için gerekli önlemler alınmalıdır, yani iki farklı kullanıcı yeni bir kayıt girerken aynı keyi vermemelidir. Autoinc alan kullanılıyorsa, bunun içinde gerekli düzenlemeler yapılmalıdır. Bu işlemler için özel programlar da kullanabilirsin.
http://www.firebirdfaq.org/faq249/
http://fibre.sourceforge.net/

Diger bir yöntem ise datasnap ile briefcase (evrak çantası) çalışmadır. Bu durumda clientdatasetlere yüklenen bilgiler kullanıcının makinasına kaydedilecek, ve daha sonra ofisteki veritabanıyla birleştirilecektir. Buradaki temel zorluk, iki farklı program yazılmalısının gerekmesidir. Birincisi veritabanıyla program arasında arakatman görevi gören server, digeri ise kullanıcının bilgi girişi yaptıgı istemcidir.
http://www.drbob42.com/examines/examin64.htm

Her iki sistemin de kendine göre avantajları ve dezavantajları vardır. Programı yazdıgın için, datasnap seçenegini uygulaman çok zor görünüyor. Replication için programlar araştırman daha kolay olacaktır. Bu replication programları veritabanına procedure ler yerleştirecekler ve kullanıcıların tablolarda yaptıgı silme, değiştirme ve ekleme işlemini loglayıp, daha sonra bu değişklikleri anaveritabanına aktaracaklar.
Kullanıcı avatarı
dabaddah
Üye
Mesajlar: 167
Kayıt: 13 Mar 2008 04:42
Konum: istanbul

Re: iki farklı veritabanında data senkronizasyonu

Mesaj gönderen dabaddah »

sevgili emin_as kardeşim ilgin ve cevabın için çok teşekkür ederim

gayet aydınlatıcı ve bilgilendirici bir cevap oldu benim için.

zannedersem bunu iman gücüyle (kendi yazdığım ara programcıklarla) :!: :lol: yapmak mümkün değil.mümkünse bile açıklarını kapatmak ve tam anlamıyla kontrol etmek

ve her ihtimali düşünmek gayet zor görünüyor ve zaman istiyor.verdiğin birinci linkteki replicator 3.parti toollar en kolay yöntem görünüyor şimdilik.

tekrardan teşekküler.

ama cevap yazacak diğer arkadaşlar lütfen yazmaktan çekinmeyin.

iyi çalışmalar.
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: iki farklı veritabanında data senkronizasyonu

Mesaj gönderen aslangeri »

s.a.
replication tool lar değişen kayıtları kontrol etmen biraz zor olur gibime geliyor. Gerçi linkteki programları incelemedim ama sadece değişen kayıtları al gibi bir seçenekleri olduğunu zannetmiyorum.
bence tablolara en son değişme tarihi ve değiştiren kullanıcı bilgilerinide ekleyip bir ara program ile verilerin aktarılmasını sağlamanız daha doğru olur. iki kullanıcı aynı veri üzerinde değişiklik yaptıkları zaman (ki bunun ne kadar mümkün olduğunu bilemiyorum) kontrol mekanizmanında olması lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
cecihan
Üye
Mesajlar: 94
Kayıt: 30 Ara 2006 11:40
İletişim:

Re: iki farklı veritabanında data senkronizasyonu

Mesaj gönderen cecihan »

geçmişte benimde böyle bir sıkıntım olmuştu. trigerlar vasıtasıyla değişen dataların idlerini ve hangi işlemin yapıldığını (ekleme, silme, düzeltme) ayrı bir tabloya kaydedip kendi yazdığım eşitleme programı ile aktarıyordum.
GURGAH
Üye
Mesajlar: 22
Kayıt: 10 Ağu 2010 06:10

Re: iki farklı veritabanında data senkronizasyonu

Mesaj gönderen GURGAH »

her bir tablona dinleme triggerları oluştur ekleme silme ve güncelleme. bu triggerler yapılan her işlemi ayrı tablolarda tutsun. tuttugu bu tabloların adıda örneğin TRG$<TABLO_ADI> şeklinde olsun. ve bu TRG Tablolarında normal tablodan farklı olarak ornegin islem_turu isminde bi alanın olsun. bu alanda da yapılan işlemin ne tür bir işlem olduğunu tutabilirsin. data nereye giderse gitsin bu triggerlar datada yapılan her işlem için TRG$ dosyalarına bir kayıt ekleyecektir. eklenen kayıtar orjinal tablodaki kaydın kopyasından biraz daha fazlası olacaktır. :)
sonrada sql le bu tabloları eşleştirip farklılıkları bulur ve orjinal database ine eklersin. Yada Ek bir program kullanırsın ;)
Cevapla