Как спроектировать архитектуру для одновременного обновления огромной таблицы базы данных - PullRequest
0 голосов
/ 02 октября 2019

Я ищу лучшие решения, чем у меня, для конкретной архитектуры.

Сейчас у нас есть одна огромная пользовательская таблица в Oracle (около 30 миллионов строк и растет), которая обновляется существующейсервис, который добавляет / удаляет строки каждый день, всего около 10 тыс. строк в день.

Мы должны создать новый сервис, который должен будет выбирать ВСЕХ пользователей, делать некоторую статистику по нему и распечатывать отчет. Я не могу сделать этот отчет в базе данных, так как некоторая дополнительная информация поступит от других микросервисов.

Конечно, запрос занимает много времени, и мы также должны сделать его в пакетном режиме, так как наш новый сервис не будетвозможность обрабатывать все это в памяти.

Так что я думал о создании кэша в памяти (Redis или что-то еще) для этой таблицы, используя стратегию Read-Through, время чтения будет уменьшено, но затемЯ боюсь, что со временем эта база данных вырастет, и через пару месяцев у нас закончится память.

Еще одна идея: мы могли бы попытаться масштабировать наш Oracle, чтобы увеличить количество экземпляров чтения, а затем многопоточное множествозапросы с определенными диапазонами.

Какие еще варианты у меня есть в этом сценарии?

Заранее спасибо!

1 Ответ

0 голосов
/ 02 октября 2019

Использование Redis было бы хорошим вариантом для обеспечения быстрого доступа к данным.

Я не понимаю, почему вы так говорите, не упоминая размер набора данных:

Я боюсь, что со временем эта база данных вырастет, и через пару месяцев у нас закончится память.

Вы можете развернуть кластер Redis, который будет распределять данные по многим узлам, если в конце концов,вам нужно больше оперативной памяти.

У вас есть несколько вариантов захвата обновлений из таблиц Oracle:

  1. Сбор данных изменения Oracle

  2. Использование JDBC уведомления об изменении базы данных (DCN)

Вы будете получать события с информацией, которая изменилась, и вы сможете создавать / обновлять ключ в Redis или любом кеше, используя это приложение. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...