ฉันกำลังทำงานกับแอปพลิเคชันที่เกี่ยวข้องกับการเรียกใช้คิวรีแบบเลือกใช้ / อัปเดตในฐานข้อมูล
ฉันมีตารางฐาน (A) ซึ่งจะมีระเบียนประมาณ 500 รายการสำหรับหนึ่งวัน และสำหรับผู้ใช้ทุกคนในระบบรูปแบบของเอนทิตีนี้จะถูกสร้างขึ้นตามการตั้งค่าบางอย่างของผู้ใช้และพวกเขาจะถูกเก็บไว้ในตารางอื่น (B) ทำได้โดยงาน cron ที่ทำงานตอนเที่ยงคืนทุกวัน
ดังนั้นหากมี 10,000 ผู้ใช้และ 500 บันทึกในตาราง A จะมีระเบียน 5M ในตาราง B สำหรับวันนั้น ฉันมักจะเก็บข้อมูลเป็นเวลาหนึ่งวันในตารางเหล่านี้และในเวลาเที่ยงคืนฉันจะเก็บข้อมูลประวัติเพื่อ HBase การตั้งค่านี้ทำงานได้ดีและฉันไม่มีปัญหาด้านประสิทธิภาพมาก่อน
มีการเปลี่ยนแปลงข้อกำหนดทางธุรกิจเมื่อไม่นานมานี้และตอนนี้คุณลักษณะบางอย่างในตารางฐาน A (สำหรับ 15 - 20 บันทึก) จะเปลี่ยนทุก ๆ 20 วินาทีและขึ้นอยู่กับว่าฉันต้องคำนวณค่าบางอย่างสำหรับบันทึกชุดรูปแบบทั้งหมดในตาราง B สำหรับ ผู้ใช้ทั้งหมด. แม้ว่าจะมีการเปลี่ยนแปลงเรคคอร์ดหลักเพียง 20 รายการ แต่ฉันต้องทำการคำนวณใหม่และอัปเดตระเบียนผู้ใช้ 200,000 รายการซึ่งใช้เวลามากกว่า 20 วินาทีจากนั้นการอัปเดตครั้งต่อไปก็เกิดขึ้นในที่สุดจึงทำให้คิวรี Select ทั้งหมดเริ่มคิว ฉันได้รับคำขอประมาณ 3 ครั้ง / 5 วินาทีจากผู้ใช้ออนไลน์ซึ่งผลใน 6-9 เลือกข้อความค้นหา เพื่อตอบสนองต่อคำขอ API ฉันมักจะใช้เขตข้อมูลในตาราง B
ฉันสามารถซื้อพลังการประมวลผลเพิ่มเติมและแก้ไขสถานการณ์นี้ แต่ฉันสนใจที่จะมีระบบที่ปรับขนาดได้อย่างเหมาะสมซึ่งสามารถรองรับผู้ใช้กว่าล้านคน
ใครช่วยแนะนำทางเลือกที่ดีกว่านี้ได้ไหม ฐานข้อมูลเชิงสัมพันธ์ nosql + ช่วยฉันได้ไหม มีแพลตฟอร์ม / ดาต้าสโตร์ที่จะให้ฉันอัปเดตข้อมูลบ่อยครั้งโดยไม่ล็อคหรือไม่ในเวลาเดียวกันก็ให้ความยืดหยุ่นในการรันคิวรีแบบเลือกในฟิลด์ต่าง ๆ ในเอนทิตีหรือไม่