Arkasında aynı veri mimarisine sahip bir uygulama oluşturdum; otomasyonun ve dahili günlük bilgilerin çoğunu içeren yerinde bir SQL veritabanına sahibiz ve daha sonra satış, hesap yönetimi, saha personeli vb. için kullanılan bir üçüncü taraf bulut hizmetine sahibiz. ve ekipmana girdim ve içeri girene kadar iki farklı uygulamadan alıyordum.
Uzun ve kısa, bir veri kaynağının diğerinin kayıtlarına referans olması gerektiğidir. Bizim durumumuzda, üçüncü taraf bulut verileri, yerinde verilere referanslar içerir, çünkü en çok kontrol ettiğimiz düzenleme budur. Şimdi, her iki veri kaynağından da bir kayıt kimliği ile her ikisinden de veri alabiliriz; bir bulut kimliği ile kaydı buluttan alıyoruz, yerinde kimliği alıyoruz ve yerinde verileri alıyoruz. Yerinde kimlikle, her iki veri kaynağını da bu kimliğe göre yoklarız.
Sistemimde, her iki nesneyi de etki alanı katmanında diğerinin alt öğesi yapmadım; her iki mağazadaki verilerin her türlü kullanımı iki nesne örneğini korumalıdır. İkisinin de var olması garanti edilmez, bu yüzden bunu böyle yaptım; uygulama yalnızca bulut verileriyle veya yerinde verilerle veya her ikisiyle birden çalışabilir.
Ancak, bunu değiştirmek zor değildir, özellikle de bir tarafın her zaman var olacağından eminseniz; nesneye, her zaman verinin var olacağı tarafı temsil eden, yani diğer veri deposunun kaydını temsil eden nesne türündeki bir özelliği eklemeniz yeterlidir. İki grafiğin daha gelişmiş bir "birleştirilmesi" mümkündür.
Bu tür bir düzenleme mutlaka belirli bir düzeyde birleştirilmelidir. Her iki veri deposuyla da arabirim oluşturabilen bir DAL'ye sahip olabilir veya her veri deposu için bir tane olmak üzere DAL'leri segmentlere ayırabilir ve Denetleyici gibi verileri daha yüksek bir katmandan her birinden alabilir ve birbirine yapıştırabilirsiniz. Ancak, bir düzeyde, programınızın bu iki farklı veri kaynağının verilerini bir araya getirecek akıllılara sahip olması gerekir.
Verilerin tam olarak nereden geldiğinin ayrıntılarını soyutlayarak çoğu durumda gerekli olan bağlantıyı azaltabilirsiniz. Oluşturulan sınıfların örnekleri olarak size verilen bir web hizmetinden veri alırsanız, hizmet sınıfının derin bir kopyasını kontrol ettiğiniz bir şeye dönüştürmek için bir dönüştürücü yerleştirin; kaynak yapar (yalnızca şema yaparsa).
Şimdi, bu çok büyük bir girişim olabilir; kullandığımız bulut, bazıları yüzlerce veri alanına sahip düzinelerce alan adı sınıfına sahiptir ve - işte kicker - farklı bir buluta veya başka bir uzaktan kumandaya geçmek için soyut veri türünde büyük değişiklikler yapmanız gerekebilir veri kaynağı. Bu nedenle rahatsız etmedim; Oluşturulan web hizmeti etki alanını doğrudan kullanıyorum ve şimdi buluttan bir saha dışı (ancak bizim kontrolümüz altında) bir veri deposuna bir değişiklik beliriyor, ayrıntıları hala bilmiyorum, sadece formları değiştirmeyi planlıyorum ve yeni şema ve / veya veri nesnelerini yansıtmak için verilerin "birleştirildiği" uygulamanın kod bağları. Hangi yolu dilerseniz seçin büyük bir iştir.