Saya sedang mengerjakan sebuah aplikasi yang melibatkan eksekusi sangat tinggi dari pembaruan / pilih pertanyaan dalam database.
Saya memiliki tabel dasar (A) yang akan memiliki sekitar 500 catatan untuk entitas selama sehari. Dan untuk setiap pengguna dalam sistem, variasi entitas ini dibuat berdasarkan beberapa preferensi pengguna dan mereka disimpan dalam tabel lain (B). Ini dilakukan oleh pekerjaan cron yang berjalan pada tengah malam setiap hari.
Jadi jika ada 10.000 pengguna dan 500 catatan di tabel A, akan ada 5 juta catatan di tabel B untuk hari itu. Saya selalu menyimpan data untuk satu hari di tabel ini dan pada tengah malam saya mengarsipkan data historis ke HBase. Penyiapan ini berfungsi dengan baik dan saya tidak memiliki masalah kinerja sejauh ini.
Ada beberapa perubahan dalam persyaratan bisnis akhir-akhir ini dan sekarang beberapa atribut dalam tabel dasar A (untuk 15-20 catatan) akan berubah setiap 20 detik dan berdasarkan itu saya harus menghitung ulang beberapa nilai untuk semua catatan variasi dalam tabel B untuk semua pengguna. Meskipun hanya 20 catatan master yang berubah, saya perlu melakukan perhitungan ulang dan memperbarui 200.000 catatan pengguna yang membutuhkan waktu lebih dari 20 detik dan pada saat itu pembaruan berikutnya terjadi pada akhirnya yang mengakibatkan semua kueri pemilihan semakin antri. Saya mendapatkan sekitar 3 permintaan permintaan / 5 detik dari pengguna online yang menghasilkan 6-9 Pilih kueri. Untuk menanggapi permintaan api, saya selalu menggunakan bidang di tabel B.
Saya dapat membeli lebih banyak kekuatan pemrosesan dan menyelesaikan situasi ini, tetapi saya tertarik memiliki sistem dengan skala yang benar yang dapat menangani bahkan satu juta pengguna.
Adakah yang bisa menyarankan alternatif yang lebih baik di sini? Apakah basis data nosql + relasional membantu saya di sini? Apakah ada platform / datastore yang akan membiarkan saya memperbarui data sering tanpa mengunci dan pada saat yang sama memberi saya fleksibilitas menjalankan kueri pemilihan pada berbagai bidang dalam suatu entitas?