Size: a a a

Архитектура данных

2020 September 16

CO

Chern Oleksander in Архитектура данных
Если что спасибо без сарказма
источник

C

Constantine in Архитектура данных
В своё время писал мердж для постгреса, может, кому поможет.
источник

C

Constantine in Архитектура данных
with t as (SELECT * FROM (VALUES
(1, 'Убытие из пункта выезда с территории РФ', false, null, 'departure_from_control_point')
,(3, 'Перевозка прекращена', false, null, 'terminated_transportation')
,(2, 'Нарушение перевозки', false, null, 'violation_transportation')
,(4, 'В КП выезда зафиксировано нарушение пломб', false, null, 'violation_in_control_point')
,(5, 'Установка недействительности талона', false, null, 'cancelled')
                        )AS t
(id, name, is_deleted, shortname, code)),

upd AS (
    UPDATE deactivation_reasons
    SET    name=t.name, is_deleted=t.is_deleted, shortname=t.shortname, code=t.code, updated_at=now()
    FROM   t
    WHERE not exists(select name from t where deactivation_reasons.code=t.code)
          and deactivation_reasons.name = t.name
    RETURNING deactivation_reasons.code
),ins as (
INSERT INTO deactivation_reasons(name, is_deleted, shortname, code,created_at)
SELECT t.name,t.is_deleted,t.shortname, t.code, now() as created_at
FROM   t
WHERE not exists(select code from upd where t.code=upd.code))

UPDATE deactivation_reasons d
    SET    is_deleted=True, updated_at=now()
    WHERE not exists(select code from t where d.code=t.code)
источник

DT

Denis Troyan in Архитектура данных
Constantine
with t as (SELECT * FROM (VALUES
(1, 'Убытие из пункта выезда с территории РФ', false, null, 'departure_from_control_point')
,(3, 'Перевозка прекращена', false, null, 'terminated_transportation')
,(2, 'Нарушение перевозки', false, null, 'violation_transportation')
,(4, 'В КП выезда зафиксировано нарушение пломб', false, null, 'violation_in_control_point')
,(5, 'Установка недействительности талона', false, null, 'cancelled')
                        )AS t
(id, name, is_deleted, shortname, code)),

upd AS (
    UPDATE deactivation_reasons
    SET    name=t.name, is_deleted=t.is_deleted, shortname=t.shortname, code=t.code, updated_at=now()
    FROM   t
    WHERE not exists(select name from t where deactivation_reasons.code=t.code)
          and deactivation_reasons.name = t.name
    RETURNING deactivation_reasons.code
),ins as (
INSERT INTO deactivation_reasons(name, is_deleted, shortname, code,created_at)
SELECT t.name,t.is_deleted,t.shortname, t.code, now() as created_at
FROM   t
WHERE not exists(select code from upd where t.code=upd.code))

UPDATE deactivation_reasons d
    SET    is_deleted=True, updated_at=now()
    WHERE not exists(select code from t where d.code=t.code)
источник

C

Constantine in Архитектура данных
У меня вот девопсы пытаются навязать имутабельную инфру. Мол, infra as code.
источник

C

Constantine in Архитектура данных
Есть у кого опыт с таким над базейками?
источник

C

Constantine in Архитектура данных
Ну тогда такого не нашел, каюсь - изобретал велосипед
источник

C

Constantine in Архитектура данных
Толи 2016,  Толи 2017 и постгря 9.3
источник
2020 September 17

C

Constantine in Архитектура данных
Constantine
Есть у кого опыт с таким над базейками?
Опишу проблему. Как отключать диски с data и катить, например, обновления, в целостной, последовательной модели инструкций ansible или puppet, избежав при этом проблем с доступностью сервиса (считай двх).
Вот вообще не могу прикрутить сюдой infra as code.
Дичь какая-то.
источник

PD

Phil Delgyado in Архитектура данных
Хм. Ansible - это решение для начального развертывания систем. Для обновления системы, особенно со сложной логикой - ansible не очень пригоден.
источник

VS

Vladislav 👻 Shishkov... in Архитектура данных
Phil Delgyado
Ну, я больше люблю flyway. Но разница не очень большая.
Вот только dry run и undo only PRO version...
источник

VS

Vladislav 👻 Shishkov... in Архитектура данных
Constantine
У меня вот девопсы пытаются навязать имутабельную инфру. Мол, infra as code.
Имутабельная инфра и инфра как код - это разные вещи...
источник

VS

Vladislav 👻 Shishkov... in Архитектура данных
Phil Delgyado
Хм. Ansible - это решение для начального развертывания систем. Для обновления системы, особенно со сложной логикой - ansible не очень пригоден.
Не правда, все пригодно, просто надо нормально описать. Например, у меня автоматизирована полноценно вертика
источник

PG

Paul Golubev in Архитектура данных
По сути патч - это управляющий скрипт, который вызывает в правильной последовательности код в гит ветке контура+ содержит dml. В свое время, когда рассматривал различные решения, они лишь усложняли процесс. В итоге кто-то накатал на апексе графический интерфейс, который накатывал указанный скрипт и выводил лог ошибок или успех
источник

PG

Paul Golubev in Архитектура данных
Потом коллеги писали свое решение, хотели через захват диффа сделать автонаписание патча, но из-за слишком большого количества нюансов стабильность была так себе
источник

PG

Paul Golubev in Архитектура данных
так что я пока все еще придерживаюсь мнение, что написание прогером управляющего скрипта проще и эффективнее
источник

PD

Phil Delgyado in Архитектура данных
Vladislav 👻 Shishkov
Не правда, все пригодно, просто надо нормально описать. Например, у меня автоматизирована полноценно вертика
Вертика - это простой кейс. А вот разворачивание сервисов с канарейкой, миграциями на нескольких базах и так далее - уже в Ansible не влезает.
А обычно нужно именно это.
источник

VS

Vladislav 👻 Shishkov... in Архитектура данных
все влезает
источник

PD

Phil Delgyado in Архитектура данных
Ну-ну... Что-то я не видел работающих решений для этой задачи. Все сползают или на груви или на что-нибудь еще.
источник

VS

Vladislav 👻 Shishkov... in Архитектура данных
очень интересно было бы послушать, как яп влияет на различие работы при деплое канарейкой или грин-блю, но тематика данного чата все таки данные, поэтому велкам в другие профильные чаты или на митапы - с удовольствием ознакомлюсь с данной теорией
источник