У меня есть несколько сложных вычислений, которые необходимо выполнить над моей таблицей фактов кластера Redshift.Пример a = (b+c)*(d/e)
(Позволяет вызывать a
как канал).
Я создаю запрос для приведенной выше формулы динамически в моем коде Python, например ((select sum(a).. + select avg(c)) * (select avg(d).. / select avg(e)))
, запускаю его в Redshift, и вывод снова вставляется в ту же таблицу Redshift, что иновая запись.
Для вычисления в среднем одного a
Я выполняю этот запрос 100 раз, в Redshift запускается 100 запросов, чтобы создать 100 новых записей для a
.В то время как я выполняю нагрузочное тестирование, я обнаружил, что это занимает слишком много времени, если у меня есть больше расчетов, таких как a
.Для расчета 150 каналов у меня ушло около 2 часов.Я думаю, чтобы интегрировать в память postgresql.Пока я искал в Интернете, я нашел два решения для этого
- testing.postgresql
- Pyembedpg
Вопросы:
- Пробовал ли какой-либо орган какое-либо из двух вышеупомянутых решений специально для Redshift, причина того, что я задал этот вопрос, лежит в моей таблице. У меня есть столбец с точностью 19,5 (точность является одной из основных проблем здесь), поэтому я хочузнаете, поддерживается ли он в каком-либо из двух вышеперечисленных инструментов, чтобы я мог перенести данные в память и выполнить вычисления для ускорения процесса?
- Будет ли реализация этого решения действительно полезной?Ускорит ли это весь процесс?
- О чем нужно помнить или о чем нужно подумать перед внедрением этого решения (Каковы плюсы и минусы)?
- Какой из них лучше /безопаснее в использовании?
Я новичок в программировании на Python и его среде.Было бы здорово, если бы кто-то мог помочь мне понять это.