Добрый день!
У меня есть примерно следующие вещи:
- БД: Postgres или Greenplum
- madlib: библиотека для различной статистики и мэшин-лернинга
А теперь происходит следующее: я строю очень много деревьев принятия решений (штук 20-50), по каждому из них делаю предсказание. Получаю 50 табличек, состоящих из одинакового числа строчек (может быть дофига, до нескольких миллионов) и двух столбиков: primary key (везде одинаковые) и вещественный value.
Так вот, так как дальше мне надо строить логистическую регрессию, все эти таблички надо объединить в одну большую. Я придумал два способа: либо CREATE TABLE blablabla as SELECT ... и JOIN по всем этим дофига таблицам, либо создаем пустую таблицу, и потом UPDATE'ом туда пихаем данные (что уже хуже первого решения).
Проблема вся в том, что в Постгресе джойн работает хорошо, но на больших объемах ему не хватает оперативки (несколько гигов), и он падает. В Greenplum же запрос с JOIN на любом числе строчек (даже сотне) вешает ядро намертво, UPDATE же работает за квадратичную (!) асимптотику.
Вопрос: что же делать? Может есть какие-то советы?