У меня есть проект с python с пандой данных, мне нужна база данных для сканирования большого количества строк для каждого клиента Теперь в MySql выполнение запросов к базе данных занимает много времени, мне нужна лучшая производительность с новой системой баз данных, но сейчас я не знаю, какой вариант лучше выбрать: RedShift или DynamoDb, потому что мне нужна скорость для выполнения Вставить / удалить / выбрать большой запрос из двух таблиц, ниже я объясню описание работы системы:
Таблицы: sales, sales_simulate, для этих таблиц не требуется реляционный с другими таблицами только столбец client_id, который получает идентификаторы из источника файла данных при начале процесса, этот файл импортируется каждый месяц для имитации данных
Предполагается: система предназначена только для 1 администратора, который работает в vps, только 1 большой запрос для клиента и продаж моделирует и меняет значения каждый месяц, и мне необходимо пересчитать данные за 3 года go, эта система запускать только 1 раз в месяц
ПРОБЛЕМА: Чтобы получить запрос на 30 000 клиентов_id = ~ 8 с
Чтобы получить продажи каждого клиента, возьмите = ~ 4 с
Обработать с помощью python (рассчитать продажи и т. Д.) Потребуется = 2 м
Для удаления / вставки запроса каждые 1 КБ обработанные клиенты 1кк строки = ~ 12м
1к клиентов = ~ 14м
~ 14м * 30к клиентов = 420м / 60 = 7 часов <- всего <br>
Пример данных: У меня 30 тысяч клиентов Мне нужно получить продажи для каждого клиента от 3 лет до текущей даты 1 клиент имеет 4 ~ 10 тыс. Строк реестров продаж, а у меня 30 тыс. Клиентов: 30 тыс. * 4 тыс. = 120 тыс. Макс. 300 тыс. * Пример:
client_id | date | amount
1 2019-02-01 12:33:44 100.0
1 2019-02-01 12:34:44 100.0
1 2019-02-01 20:54:44 100.0
2 2019-02-01 08:54:44 62.0
2 2019-02-01 23:54:44 60.0
Я получаю итоговую сумму даты:
client_id | date | amount
1 2019-02-01 300.0
2 2019-02-01 122.0
Теперь с pandas полными фреймом данных для каждого клиента с 3 года до даты по сегодняшний день:
client_id | date | amount
1 2070-02-20 0
....
1 2019-02-01 300.0
...
1 2020-02-20 0
Затем, когда у нас есть фрейм данных со всеми датами всех клиентов, я отправил сохранить в база данных 1.125k строк для каждого клиента: 1.125k * 30k (клиентов) = 33 750 000 строк
Теперь я пытаюсь сохранить данные в каждой части, каждый обработанный клиент 1000k, я сохраняю строки в таблице, 1.125k * 1k = 1 125 000 строк