Я працюю над додатком, який передбачає дуже високе виконання запитів оновлення / вибору в базі даних.
У мене є базова таблиця (A), яка буде мати близько 500 записів для організації. І для кожного користувача в системі створюється зміна цього об'єкта на основі деяких уподобань користувача і вони зберігаються в іншій таблиці (B). Це робиться за допомогою крон-роботи, яка працює о півночі щодня.
Отже, якщо в таблиці А буде 10 000 користувачів та 500 записів, у цій таблиці буде 5M записів. Я завжди зберігаю дані на один день у цих таблицях, а опівночі я архівую історичні дані в HBase. Ця налаштування працює чудово, і у мене поки що немає проблем з продуктивністю.
Останнім часом відбулися певні зміни в бізнес-вимогах, і тепер деякі атрибути в базовій таблиці A (для 15 - 20 записів) змінюватимуться кожні 20 секунд, і виходячи з цього, я повинен перерахувати деякі значення для всіх цих записів варіацій у таблиці B для всі користувачі. Незважаючи на те, що змінюється лише 20 головних записів, мені потрібно зробити перерахунок та оновити 200 000 записів користувачів, що займає більше 20 секунд, і до цього часу відбудеться наступне оновлення, що призведе до черги всіх запитів Select Select. Я отримую приблизно 3 запиту / 5 секунд від користувачів онлайн, що призводить до 6-9 Вибір запитів. Щоб відповісти на запит api, я завжди використовую поля таблиці Б.
Я можу купити більше процесорних потужностей і вирішити цю ситуацію, але мені цікаво мати належну систему масштабування, яка може працювати навіть з мільйоном користувачів.
Хтось тут може запропонувати кращу альтернативу? Чи допомагає мені тут реляційна база даних noql +? Чи є якісь платформи / сховища даних, які дозволять мені часто оновлювати дані, не блокуючи, і водночас надають мені гнучкість виконання обраних запитів у різних полях сутності?