Я работаю над приложением, которое включает очень высокое выполнение запросов обновления/выбора в базе данных.Какое хранилище данных лучше всего подходит для моего сценария
У меня есть базовый стол (A), который будет содержать около 500 записей для объекта в течение дня. И для каждого пользователя в системе, вариация этого объекта создается на основе некоторых предпочтений пользователя, и они сохраняются в другой таблице (B). Это делается заданием cron, которое выполняется ежедневно в полночь.
Так что, если в таблице A будет 10 000 пользователей и 500 записей, в таблице B на этот день будет 5M записей. Я всегда держу данные за один день в этих таблицах, а в полночь я архивирую исторические данные в HBase. Эта настройка работает нормально, и до сих пор у меня нет проблем с производительностью.
В последнее время произошли некоторые изменения в бизнес-требованиях, и теперь некоторые атрибуты в базовой таблице A (для 15-20 записей) будут меняться каждые 20 секунд и на основе этого я должен пересчитать некоторые значения для всех этих записей изменений в таблице B для всех пользователей. Несмотря на то, что изменяется только 20 основных записей, мне необходимо выполнить перерасчет и обновить 200 000 пользовательских записей, которые занимают более 20 секунд, и к тому моменту следующее обновление происходит в конечном итоге, в результате чего все запросы выбора становятся в очереди. Я получаю около 3 запросов/5 секунд от онлайн-пользователей, что приводит к 6-9 Выбор запросов. Чтобы ответить на запрос api, я всегда использую поля в таблице B.
Я могу купить больше вычислительной мощности и решить эту ситуацию, но я заинтересован в правильной масштабированной системе, которая может обрабатывать даже миллион пользователей.
Может ли кто-нибудь предложить лучшую альтернативу? Помогает ли мне база данных nosql + reational? Существуют ли какие-либо платформы/хранилища данных, которые позволят мне часто обновлять данные без блокировки и в то же время давать мне гибкость при выполнении отдельных запросов в разных полях в сущности?
Приветствия Кувшины