BEYAZMASTER adlı üyeden alıntı

Öncelikle ilginiz ve cevabınız için gerçekten teşekkür ederim...


Üstadlığınızı göstermiş ve hem güzel sorular sormuşsunuz hem de çok güzel bir açılım yapmışsınız...
(Her ne kadar paylaştıklarınızı henüz tam anlamasam da...)


CEVAP 1

Gereksinimin nedeni şu;

10 Ayrı şehir için 10 Ayrı veri tabanı oluşturdum...

Hem veri tabanlarının şişmemesi, sayfaların kasılmaması için...

Hem de bir veri tabanına sızılırsa tüm veriler ele geçirilemesin diye...

Her şehir sayfası kendisine ait veri tabanına bağlanıp verilerini sorunsuzca çekiyor.

Lakin bunun yanında bir de tüm şehirlerdeki verileri tek bir sayfada göstermek istiyorum...

Bu ihtiyaç da buradan hasıl oldu.

10 veri tabanına bağlanabiliyorum ve verileri ayrı ayrı çekebiliyorum ama bu tek bir liste oluşturmamı sağlamıyor...

Bir sayfada 10 ayrı liste olmuş oluyor...

Sanırım şu an anladığınız üzere;
10 veri tabanı içindeki verileri tek bir listede toplayıp, hepsini iskambil kağıdı gibi karıştırıp isme yada başka bir sütun değerine göre listelemek istiyorum...


CEVAP 2

Şimdilik web sitesi, mobil uygulamaya da döndürmem gerekiyor sonraki aşamada...


CEVAP 3

Büyüklük terabyte değil ve hiçbirzaman da olacağını sanmam...


Sonraki yazdıklarınız, kullandığınız terimler ciddi birer araştırma konusu benim için...

Şu an bunu yapabilmek olanak dahilinde değil...


Paylaştığım evaplar doğrultusunda ekleyeceğiniz bilgiler ve kod olursa çok sevinirim...


TEKRAR ÇOK TEŞEKKÜR EDİYORUM ÜSTADIM...




Aklıma ilk şu soru geldi? Fazladan bir mühendislik (over engineering) gereksinimi oluşturulmuş gibi.

10 ayrı şehir için 10 ayrı veritabanı oluşturmaktansa, tek bir veri tabanında rahatça yapılabilir gibime geldi..

Veritabanına sızma işlemi yapılırsa kısmı için bu denli bir çözüme gitmek, bana pek doğru gelmedi.

DB'ye erişme ihtimali sunucu taraflı güvenlik açığıdır, bunun için güvenli yazılım + sunucu güvenliği içinde AWS yada yerli bir çözümden destek alınması en doğru yöntem olacaktır. AWS / DigitalOcean üzerinde günlük yedekli bir DB servisi almanızı tavsiye ederim, güvenlik dertleriniz ortadan kalkıp, daha çok yazılım çözümüne odaklı işlere zaman ayırmış olursunuz.

Anladığım kadarıyla zaten büyük bir veri yok ortada..

Mevcut çözümde aklıma gelen en basit çözüm :

Mevcut bir şehirdeki DB 'den DDL scriptlerini alıp ortak DB + şema oluşturun.
Ortak DB'deki tüm tablolara bir discriminator ekleyin. Bu discriminator : ilgili DB yi belirtecek bir şehir ID, NAME gibi unique bir alan olmalı. Birde tüm tablolara deleted bir alan ekleyin (0,1) değerlerini alsın, default değeri 0 olsun.

Saatte bir çalışan job yazın.

job verileri sırasıyla her veritabanından (paginated olarak yada yapabiliyorsanız ve kullandığın db driver destekliyorsa stream ile) çekip, ortak bir DB'ye yazsın. Bir ortak db üzerinden çözüm üretin.

Ortak DB'ye yazarkende, şöyle mantıkta ilerleyin.

Ankara şehrinden bir tablodan verileri çekmeden önce ortak DB'de ilgili tablodaki tüm ankara şehri kayıtlarını soft olarak delete yapın;

soft delete sql : update table_name set deleted = 1 where discriminator = 'ANKARA';

sonrada çekilen verileri insert edin.

Diğer türlüsü ayrı ayrı db 'ye bağlan, verileri topla, sonra sort et :) zahmetli iş.. Heleki bir ekranda sayfalı bir şekilde bu işlem yapılacaksa, Allah kolaylık versin derim.

Veri merkezi bir yerde olduğunda istediğiniz çözümü rahatça gerçekleştirirsiniz.