• 13-07-2026, 10:42:01
    #1
    Selamlar,

    Redis, Cache ve maximum optimizeler yapılmasına rağmen tek database yede işimize yaramıyor diyelim.
    Saniyede 100k veya 500k write yapmalısınız.
    500k Write işlemi için tek database kullanırsanız ilk 5 saniye gecikme 5-10. Saniyeyi görür/görmez Sunucu down olur.
    Burada da o zaman 3 tane dedicated database sistemi yapalım diyelim.
    Peki, ben write isteği yaptığımda "order_ID" değeri lastid+1 yani son id 500 ise sonraki id 501 olacak.
    Şimdi son idyi kaydedeceğim ama hangi db serverınde idyi nasıl belirleyeceğiz ve ekstra 3 database olduğu için login olurken hangisi sorgulanacak vb. Fikriniz var mıdır?
    Mantığı oturtamadım.
  • 13-07-2026, 10:49:18
    #2
    UUID, ULID veya Snowflake kullanabilirsin id yerine kullanıcının da hangi veritabanına gideceğini kullanıcı_id % 3 gibi formül ile hesaplayabilirsin. Write olarak direk lastId+1 gibi kullanma
  • 13-07-2026, 10:50:01
    #3
    bir main dbniz olsun orada login vs işlemleri bulunsun. lastid i de prosedür ile yeni bir tablodan çekin bu main dbden. prosedür dememin sebebi aynı anda diğer dblerden de istek geldiğinde aynı id başka yere kaymasın.
  • 13-07-2026, 10:50:15
    #4
    Backend Developer
    mysql kısmında auto increment offset özelliği mevcut hocam yani
    1. db 1 4 7 diye giderken
    2. db 2 5 8
    3. db 3 6 9 diye gidebilir query atarkende her db servere bir istek atarsın örnek login senaryosunda ek olarak bu yazma işlemini bir anda yapmak yerine kuyruk ile yapman daha verimli olur
  • 13-07-2026, 10:51:08
    #5
    mantigi oturtamaman normal cunku mantikli degil. sql tamam replica edilebilir ama bu replica yazma degil de daha cok okuma ve scaling için.

    o kadar write islemi varsa once bir queue kurup, datalari sql'e degil de daha hizli yazma cozumleri sunan nosqle gecmen gerekecek.
  • 13-07-2026, 10:54:19
    #6
    Alwayson cluster yapısı kurabilirsiniz. Reis cache vs gibi read işlemlerini secondary db den hızlıca yapıp primary e sadece write işlemlerini yapabilirsiniz.
    Autoincrementi id yi birkaç sunucuya bölmek için en basit mimari bir sunucuda tek id ler 1-3-5-.. diğer sunucuda çiftler
  • 13-07-2026, 10:56:03
    #7
    Çoklu Veritabanı Mimarisi — Distributed Write Scaling & ID Yönetimi
    https://gist.github.com/gkhantyln/2d...652ce1bdeceebb
  • 13-07-2026, 11:02:11
    #8
    taylanweb adlı üyeden alıntı: mesajı görüntüle
    Çoklu Veritabanı Mimarisi — Distributed Write Scaling & ID Yönetimi
    https://gist.github.com/gkhantyln/2d...652ce1bdeceebb
    İşte doğru bir AI kullanımı, gist olarak da kayıt etmiş ki boşa su gitmemiş oldu, canı gönülden tebrik ediyorum
  • 13-07-2026, 11:31:23
    #9
    soylenmezsmt adlı üyeden alıntı: mesajı görüntüle
    Selamlar,

    Redis, Cache ve maximum optimizeler yapılmasına rağmen tek database yede işimize yaramıyor diyelim.
    Saniyede 100k veya 500k write yapmalısınız.
    500k Write işlemi için tek database kullanırsanız ilk 5 saniye gecikme 5-10. Saniyeyi görür/görmez Sunucu down olur.
    Burada da o zaman 3 tane dedicated database sistemi yapalım diyelim.
    Peki, ben write isteği yaptığımda "order_ID" değeri lastid+1 yani son id 500 ise sonraki id 501 olacak.
    Şimdi son idyi kaydedeceğim ama hangi db serverınde idyi nasıl belirleyeceğiz ve ekstra 3 database olduğu için login olurken hangisi sorgulanacak vb. Fikriniz var mıdır?
    Mantığı oturtamadım.
    Last id den gitmek en mantıksız iş, olması gereken istek geldiğinde uuid id alcaksın, veri tabanına yazmak yerine kafka rabbit mq kuyruk sistemine verceksin işleri o halledecek