Ответы пользователя по тегу SQL
  • Как правильнее заносить и хранить большой объем данных в бд?

    darthunix
    @darthunix
    Знаю PostgreSQL, Ubuntu, DICOM и медицину.
    Я бы использовал PostgreSQL, потому что знаю его) А детальнее - вначале создал бы собственный тип, описывающий цену в момент времени, состоящий из времени и цены. Потом просто создал бы таблицу товаров, в которой бы была колонка с массивом этого нового типа цен в момент времени. И при каждой новой загрузке информации я бы раскладывал для подходящего товара данные о времени и цене в этот массив. Ну и добавил бы первичный ключ по товарам и gin индекс по массиву временных точек цен. По идее в таком виде таблица не станет очень большой и вы сохраните возможность быстро проводить агрегацию по данным. Ну и данные будет легко шардировать, если потребуется.
    Ответ написан
    Комментировать
  • Где ошибка в запросе?

    darthunix
    @darthunix
    Знаю PostgreSQL, Ubuntu, DICOM и медицину.
    Вы делаете кросс джоин, получая все возможные комбинации (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)
    Ответ написан
  • Нормально ли хранить логи в основной базе?

    darthunix
    @darthunix
    Знаю PostgreSQL, Ubuntu, DICOM и медицину.
    Ну если основная база от логов сильно распухает и транзакции вам для них особо не нужны - вынесите логи через plproxy в другую базу (на другом диске/сервере - не важно). Храните их в нормализованном виде и анализируйте, будет вам счастье. И основная база будет компактной, и нагрузка на неё будет меньше, и логи хранятся в таком же PostgreSQL (чем меньше зоопарк, тем проще с ним жить)
    Ответ написан
    Комментировать
  • Что должен знать SQL разработчик?

    darthunix
    @darthunix
    Знаю PostgreSQL, Ubuntu, DICOM и медицину.
    Наверное, знать надо все и до бесконечности. Я тоже работаю с PostgreSQL, для разработки и администрировании по моему горькому опыту нужно знать:
    1) Linux
    • стандартный набор консольных утилит
    • система выдачи прав на файлы
    • знания про работу с памятью для тюнинга БД
    • lxc (возможность поднять кучу легковесных контейнеров с разными базами очень помогает)
    • уметь настраивать фаервол (чтобы у сервера БД не торчало лишнее наружу)
    • ssh проброс портов с удаленного компьютера (чтобы удобно подключаться к БД)
    2) Система контроля версий - git, svn и т.д.
    3) PostgreSQL
    • внутренняя работа под капотом (для тюнинга производительности)
    • FTS, триграммы, plproxy
    • pgtap для тестирования
    • система версионирования схемы бд (я рекомендую pyrseas)
    • балансировщики, репликация, PIT бэкапы (рекомендую barman)
    • FDW для подключения к разным другим источникам данных

    А вообще, смотри видео и читай доклады с pgconf и документацию по PostgresPro, это хорошо помогает быть в курсе последних тенденций.
    Ответ написан
    7 комментариев
  • PostgreSQL система контроля версий?

    darthunix
    @darthunix
    Знаю PostgreSQL, Ubuntu, DICOM и медицину.
    Успешно пользую Pyrseas в продакшене. Сохраняет схему в виде yaml файла, удобного для версионирования и работы с ветками. По разнице между yaml файлом и базой автоматически генерирует sql миграцию.
    Ответ написан
    Комментировать