Я бы использовал PostgreSQL, потому что знаю его) А детальнее - вначале создал бы собственный тип, описывающий цену в момент времени, состоящий из времени и цены. Потом просто создал бы таблицу товаров, в которой бы была колонка с массивом этого нового типа цен в момент времени. И при каждой новой загрузке информации я бы раскладывал для подходящего товара данные о времени и цене в этот массив. Ну и добавил бы первичный ключ по товарам и gin индекс по массиву временных точек цен. По идее в таком виде таблица не станет очень большой и вы сохраните возможность быстро проводить агрегацию по данным. Ну и данные будет легко шардировать, если потребуется.
Вы делаете кросс джоин, получая все возможные комбинации (12х12=144). Вам нужно сделать соединение по номерам строк. У меня постгреса под рукой нет, но на память типо такого
with t1_rows as (
select row_number() over(), items from table1
),
t2_rows as (
select row_number() over(), items from table2
)
select a.items, b.items from t1_rows a
full join t2_rows b using (row_number)
Ну если основная база от логов сильно распухает и транзакции вам для них особо не нужны - вынесите логи через plproxy в другую базу (на другом диске/сервере - не важно). Храните их в нормализованном виде и анализируйте, будет вам счастье. И основная база будет компактной, и нагрузка на неё будет меньше, и логи хранятся в таком же PostgreSQL (чем меньше зоопарк, тем проще с ним жить)
Наверное, знать надо все и до бесконечности. Я тоже работаю с PostgreSQL, для разработки и администрировании по моему горькому опыту нужно знать: 1) Linux
стандартный набор консольных утилит
система выдачи прав на файлы
знания про работу с памятью для тюнинга БД
lxc (возможность поднять кучу легковесных контейнеров с разными базами очень помогает)
уметь настраивать фаервол (чтобы у сервера БД не торчало лишнее наружу)
ssh проброс портов с удаленного компьютера (чтобы удобно подключаться к БД)
2) Система контроля версий - git, svn и т.д. 3) PostgreSQL
внутренняя работа под капотом (для тюнинга производительности)
FTS, триграммы, plproxy
pgtap для тестирования
система версионирования схемы бд (я рекомендую pyrseas)
Успешно пользую Pyrseas в продакшене. Сохраняет схему в виде yaml файла, удобного для версионирования и работы с ветками. По разнице между yaml файлом и базой автоматически генерирует sql миграцию.
Ответ написан
Комментировать
Комментировать
Оценили как «Нравится»
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.