2019 dan beri geliştirdiğim bir projem var. Hali hazırda 400'e yakın işletme tarafından kullanılıyor. Firmaların kahir ekseriyeti projeyi local sunucu üzerinden kullanıyor. Firmaların müşteri dataları, alacakları, servisleri, stokları gibi verileri ynetiliyor proje üzerinden. Şimdi projeyi farklı bir noktaya getirmem gerekiyor. Kurumsal bir firma şubeleri için projemize talip oldu. Yanlız istedikleri şey proje üzerinde radikal değişiklik gerektiriyor. Şubeler kendi datalarına erişebilecekler. Ancak genel merkezdekiler şubelerin tüm datalarına erişebilecekler. Burada aklımda iki temel yaklaşım var. Ya projeyi komple değiştirip herbir tabloya SubeID gibi bir tanımlama yaparak tüm CRUD işlemlerini elden geçirmem gerekecek. ya da şubelerin databaselerine bağlanıp ayrı ayrı raporlama yapanayrı bir arayüz geliştirmem gerekecek. Çok kararsızım. Bana bu konuda fikir verebilir misiniz? Şimdiden teşekkürler.

hocam neriler çok iyi hatta kafamda toz bulutu oluşturacak kadar iyi hepsi için teşekkür ediyorum. fakat şyle de bi problem var. hali hazırda projeyi kullanan firmalar da aynı kanaldan güncelleme alıyor. şyle ki ben yeni bir sürüm çıkardığımda sunucuya atıyorum. versiyon numarası değişikliğinde client tarafı bunu fark edip otomatik güncelleme yapıyor. bu projede hakkari deki local db kullanan adam da aynı exe yi kullanıyor, tekirdağ daki iki farklı ofiste kullandıkları için bulut db kullanan adam da aynı exe yi kullanıyor. api vs devreye girdiğinde ben şube yapısı kullanan müşteriler için ayrı bir versiyon çıkarmam gerekecek. bu ileride programa yapacak olduğumuz yeni modülleri her iki sürüm için ayrı ayrı derleme yapmam gerekecek bu da zaman alıcı bi durum. Bu işin asıl doğrusu hiçbir clientın db ye direk erişimi olmaması gerekir fakat genelde kervan yolda düzülür kafası olduğu için başlangıçta bunlar planlanmıyor. Db nüne bi servis inşa etmiş olsaydın db servisini eski yeni sorgulara veri dnecek şekilde güncellerdin problem olmazdı. Genel merkez anlık şube datası ister anlık stok kasa durumu satış hacmi vs vs o yüzden günlük işleri kısa gecikmeli localden basabilmen için servis şart trooper tarafından 01/Eki/23 15:02 tarihinde düzenlenmiştir ZzZzZzZ...!

2019 dan beri geliştirdiğim bir projem var. Hali hazırda 400'e yakın işletme tarafından kullanılıyor. Firmaların kahir ekseriyeti projeyi local sunucu üzerinden kullanıyor. Firmaların müşteri dataları, alacakları, servisleri, stokları gibi verileri ynetiliyor proje üzerinden. Şimdi projeyi farklı bir noktaya getirmem gerekiyor. Kurumsal bir firma şubeleri için projemize talip oldu. Yanlız istedikleri şey proje üzerinde radikal değişiklik gerektiriyor. Şubeler kendi datalarına erişebilecekler. Ancak genel merkezdekiler şubelerin tüm datalarına erişebilecekler. Burada aklımda iki temel yaklaşım var. Ya projeyi komple değiştirip herbir tabloya SubeID gibi bir tanımlama yaparak tüm CRUD işlemlerini elden geçirmem gerekecek. ya da şubelerin databaselerine bağlanıp ayrı ayrı raporlama yapanayrı bir arayüz geliştirmem gerekecek. Çok kararsızım. Bana bu konuda fikir verebilir misiniz? Şimdiden teşekkürler. Ben olsam şube yapısını inşa ederim komple fakat mevcut şubeleri ayrı dbler üzerinden yürütmeye devam ederim. Bir servis yazarak cronda fark yedek alarak genel merkez db ye basarım ki genel merkez tüm dataya erişir. Bu sana ne kazandırır yarın başka bir müşteri gelir şubelerde diğer şubelerin stoklarını grsün müşteri kartları ortak olsun vs derse daha kolay devreye alırsın bu işi yaparken şube işlemlerini yetki rol yapısıyla birleştir ki ileride uğraşma 😀 bu bilgiler db yapısı localde çalışıyor esasına gre verilmiştir. Db sunucuda çalışacaksa yapı tercihi daha farklı olur trooper tarafından 30/Eyl/23 20:55 tarihinde düzenlenmiştir ZzZzZzZ...!

Şahsen bende şube yapısı yapardım sube_id diyerek Yada şuanki yapıyı bozmadan API kodlarsın şubenin interneti bile giderse localden devam eder db eşitle diye bir buton koyarsın interneti gelince veya direkt cron yaparsın her gece çalışır Tabi alacağın paraya gre değişir ki büyük ihtimal alacağın para bu yapıyı yazmaya değecektir diye düşünüyorum Bot ve lisans ihtiyaçlarınız için pm atınız.

Eski çalışan sisteme dokunma. Şubesiz olarak çalışan şirketlerde tüm işleyiş aynen devam etsin. Şubeli olarak kullanmak isteyen şirket için gerekli değişiklikleri yap. Tek bir merkezi veritabanı olsun. Diğerleri dediğin gibi şube_id ile veri yazsınlar. zetle yazılımının 2 versiyonu olsun. Bir tanesi eski versiyon diğeri şubeli olan yeni versiyon. Yeni versiyonu iyice geliştirip zaman içinde hepsini yeni versiyona güncellersin. İsimlendirme kurallarına ayrıca dikkat etmelisin. SubeID yazmak yerine TenantId veya tenant_id şeklinde ingilizce isimlendirmeler daha uygun olur.

hocam neriler çok iyi hatta kafamda toz bulutu oluşturacak kadar iyi hepsi için teşekkür ediyorum. fakat şyle de bi problem var. hali hazırda projeyi kullanan firmalar da aynı kanaldan güncelleme alıyor. şyle ki ben yeni bir sürüm çıkardığımda sunucuya atıyorum. versiyon numarası değişikliğinde client tarafı bunu fark edip otomatik güncelleme yapıyor. bu projede hakkari deki local db kullanan adam da aynı exe yi kullanıyor, tekirdağ daki iki farklı ofiste kullandıkları için bulut db kullanan adam da aynı exe yi kullanıyor. api vs devreye girdiğinde ben şube yapısı kullanan müşteriler için ayrı bir versiyon çıkarmam gerekecek. bu ileride programa yapacak olduğumuz yeni modülleri her iki sürüm için ayrı ayrı derleme yapmam gerekecek bu da zaman alıcı bi durum.

Hocam hatta nosql olarak Couchbase kullanabilirsin community sürümü var. Sql endpoint ile sql yazarak nosql çzümü kullanabilirsin.

Tüm veri tabanlarını saat başı tek bir verş tabanında güncelleme yapsan ve tek bir db üzerinden ilerlesen olmazmı?

realtime db, cacheleme sıstemı vs ıle kullan, yapıyı degıstırme, mıkro servısle gelıstır, localsunucuyu işlemlerde cache gibi kullan hocam. kredı kartı poslar gun sonu ıslemı alıp acıp kapama gıbı ıslemlerde verının ana servera gonderıdılgını farze ederek kurgu yapılabılır. bırde en basıt yontem her zaman en ıyı yontemdır. Genelde aklına ilk gelenı yap, surece gore kendı kendını şekillendiriyor olacaktır. Ben de hep bu şekilde oluyor hipokondriyak tarafından 01/Eki/23 11:10 tarihinde düzenlenmiştir Homo sapiens, yaşamak için, diğer canlıların yaşamasına muhtaç; obligat parazit türüdür. "Sen olursan boş bardak, sana olur koyan çok su. a. g."

Hocam yapmışken CompanyId ve OfficeCode ile çoklu şube gibi çoklu şirket yapısında kurup projeyi saas kafasıyla geliştirirsen daha iyi olur.

Basit gibi gzüksede uğraştırır. zellikle winform elini ayağını biraz bağlar. Yeniden yazsan netcore da web tabanlı işler çok daha kolay olurdu :) Şimdi program en başta monolitik bir mimari ve buna grede DB tasarlanmış. Her durumda db değişiklik gerekecek. SubeID ve 2-3 alan daha ekle. Bu saatten sonra micro mimariye veya dağınık veritanına çeviremezsin, bir çok sorunu beraberinde getirir bu. nerim; DB server merkezde olsun ama db server nüne bir api koy. Eski mantıkla formlar doğrudan db bağlanmasın. clientler sorguları apiye gndersin, api doğrudan db ile konuşsun ve ona gre yanıt dnsün. Bu güvenlik, yetkilendirme, loglamada vb. çok işine yarar. Ayrıca client/talep yoğunluğunda redis gibi kuyruklama/cache yapısı eklemen daha kolay olur. db server yormazsın. Burada yine başka sorun; şubede internet kesildi, ne olacak? ki bizim ülkede bu sıklıkla olur. Clientlar çalışmaya devam etmesi için cache db koyacak mısın? gibi birçok cevaplanması gereken sorularda olacaktır.