Ответы пользователя по тегу PostgreSQL
  • Где ошибка в запросе?

    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)
    Ответ написан
  • Как правильно хранить/выбирать данные в PostgreSQL?

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

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

    darthunix
    @darthunix
    Знаю PostgreSQL, Ubuntu, DICOM и медицину.
    Я рекомендую использовать pyrseas. В нем dbtoyaml парсит схему базы с поддержкой всех самобытных фишек PostgreSQL в yaml файл, который вы помещаете в систему контроля версий. В отличие от SQL дампа с yaml схемой легко работать и осуществлять слияния в ветках. Я использую PyCharm с подсветкой yaml синтаксиса для этого. Так же yamltodb может сравнить yaml файл с базой и сформировать SQL миграцию. Я этой штукой уже год пользуюсь на работе, все остальные решения рядом не стояли.
    Ответ написан
    Комментировать
  • Как синхронизировать две БД PostgreSQL?

    darthunix
    @darthunix
    Знаю PostgreSQL, Ubuntu, DICOM и медицину.
    Посмотрите в сторону plproxy. На сервере Б пишите логику обновления 5 строк в виде функции fB. На сервер А ставите расширение plproxy, подключаете к нему сервер Б и пишете функцию fA, вызывающую удалённо функцию fB обновления 5 строк на сервере Б. По обновлению строки на сервере А дергаете fA и получаете обновление на сервере Б
    Ответ написан
    2 комментария
  • PostgreSQL система контроля версий?

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