Ben veritabanında güncelleme / seçme sorguları çok yüksek yürütme içeren bir uygulama üzerinde çalışıyorum.
Bir varlık için bir gün için yaklaşık 500 kayıtları olacak bir temel tablo (A) var. Ve sistemdeki her kullanıcı için, kullanıcının bazı tercihlerine göre bu varlığın bir varyasyonu oluşturulur ve bunlar başka bir tabloda (B) saklanır. Bu, her gün gece yarısı çalışan bir cron işi tarafından yapılır.
Dolayısıyla A tablosunda 10.000 kullanıcı ve 500 kayıt varsa, o gün için B tablosunda 5M kayıtları olacaktır. Bu tablolarda her zaman bir gün için veri saklıyorum ve gece yarısı HBase'ye geçmiş verilerini arşivliyorum. Bu kurulum iyi çalışıyor ve şu ana kadar performans sorunlarım yok.
Son zamanlarda iş gereksinimlerinde bazı değişiklikler oldu ve şimdi temel tablo A'daki bazı özellikler (15-20 kayıt için) her 20 saniyede bir değişecek ve buna bağlı olarak tablo B'deki tüm bu varyasyon kayıtları için bazı değerleri yeniden hesaplamam gerekiyor. tüm kullanıcılar. Sadece 20 ana kayıt değişse de, yeniden hesaplama yapmam ve 20 saniyeden uzun süren 200.000 kullanıcı kaydını güncellemem gerekiyor ve bir sonraki güncelleme sonunda tüm Seçme sorgularının sıraya girmesine neden oluyor. Çevrimiçi kullanıcılardan yaklaşık 3 alma isteği / 5 saniye alıyorum. Bir API isteğine yanıt vermek için her zaman tablo B'deki alanları kullanırım.
Daha fazla işlem gücü satın alabilir ve bu durumu çözebilirim, ancak bir milyon kullanıcıyı bile işleyebilecek doğru ölçeklendirilmiş bir sisteme sahip olmakla ilgileniyorum.
Buradaki herhangi biri daha iyi bir alternatif önerebilir mi? Nosql + ilişkisel veritabanı bana burada yardımcı oluyor mu? Verileri kilitlemeden sık sık güncellememe ve aynı zamanda bir varlıktaki çeşitli alanlarda seçili sorgular yürütme esnekliği sağlayan platformlar / veri depoları var mı?