• Можно ли в postgres переинициализировать базу данных?

    Melkij
    @Melkij
    PostgreSQL DBA
    Так переинициализировать или перенести на другой хост?

    переинициализировать - удалить директорию, сделать initdb.
    перенести на другой хост - выключить базу, скопировать весь PGDATA целиком включая всё содержимое по всем симлинкам, запустить базу. Либо вызвать штатный pg_basebackup и им скопировать запущенную базу (по протоколу репликации).
    Возможно только на той же аппаратной архитектуре.
    Ответ написан
    4 комментария
  • Big прайсы, обновлять или удалять и заново записывать?

    Melkij
    @Melkij
    PostgreSQL DBA
    Суть такова, что есть прайс(ы) ~5млн и его нужно быстро обновлять (раз в 2 часа).

    Это НЕ много и совсем НЕ часто.

    обновлять или удалять и заново записывать

    Ложный выбор, это одна и та же операция. MVCC update = delete + insert
    Но что важно - не делать update который вам действительно не нужен. Postgresql не анализирует данные в поиске пустых обновлений, update table set id = id; вам честно удвоит таблицу, хотя ничего на логическом уровне не изменится.

    Профилируйте, на что реально тратите время - pg_stat_statements ответит хорошо на этот вопрос со стороны базы. Пальцем в небо - вы работаете в автокоммите и естественно 5млн пишущих операций для любой честной ACID базы - это порядком медленного IO (даже для SSD)
    Ответ написан
    4 комментария
  • Big прайсы, обновлять или удалять и заново записывать?

    @rPman
    Вложите логику формирования цены (ту часть что меняет ее часто) в базу, в виде коэффициентов, таким образом чтобы достаточно было изменять общие из них а те что хранятся у товаров были постоянными.

    При выводе прайслиста формируйте его заново каждый раз, вычисляя из взятых в базе коэффициентов.

    Отличным примером является хранение в базе цен в валюте той площадки, куда вы перенаправляете ваши покупки (не верю я что все 5 миллионов это ваше локальное производство, само собой вы перепродавец), тогда достаточно вычислять обменный курс используемых валют на вашу базовую и умножать ее при выводе.

    Скорее всего будут еще коэффициенты, если площадок много, каждая может вносить свои изменения в цену. И еще, если эти площадки так же выдают вычисленную цену, вам придется перепроверять все цены на вашей площадке, чтобы внезапно не получить отдельные товары по странной цене.
    Ответ написан
    Комментировать
  • Как изменить не прямого потомка на чистом js?

    Если сомвераетесь, то воспользуйтесь youmightnotneedjquery.com там есть решение + альтарнатива
    Ответ написан
    2 комментария