Size: a a a

pgsql – PostgreSQL

2021 January 12

YS

Yaroslav Schekin in pgsql – PostgreSQL
Sasha Sasha
Я не знаком с jsonpath. Вообще почитаю что-нибудь, у меня большой пробел с работой с жсоном в реляционных базах
источник

a

at in pgsql – PostgreSQL
Drive_in
Ага , я правильно понимаю: Пришли данные на сервер (1,2)  они будут хрониться на сервере пока новые данные не придут ???
пока сам не сделаешь то что посчитаешь нужным, можно удалить после того как забрал данные, пометить  что ты их уде забрал и тп
источник

b

blkmrkt in pgsql – PostgreSQL
Как может таблица на слейве иметь srsublsn=NULL и иметь srsubstate=r одновременно?

Я добавил пару append-only таблиц в публикацию и обновил подписку на слейве с параметром copy_data=false. Причем в одной из таблиц новые данные появляются, а вторая все еще пустая.

Остальные таблицы в подписке работают как надо и имеют srsublsn.
источник

I

Ivan in pgsql – PostgreSQL
Alexander Greckov
Можно ли как-то отключить триггер, когда данные вставляються/обновляються/удаляються приложением синхронизации?
Alter table mytable disable trigger user
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Ivan
Alter table mytable disable trigger user
Спасибо, но мне нужно отключать их на уровне транзакции
источник

AG

Alexander Greckov in pgsql – PostgreSQL
ибо парралельно может выполняться множество запросов с таблицей
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Greckov
Добрый день! Подскажите пожалуйста, как лучше сделать трек изменений (для синхронизации), на уровне приложения или бд?
Просто для информации, по отношению к надёжному multi-master СУБД бывают примерно трёх видов:
1. Те, где его нет.
2. Те, которые врут, что он у них есть.
3. Распределённые СУБД.

Я к тому, что "на коленке" на базе PostgreSQL у Вас почти неизбежно получится (2).
Может, стоит найти какое-то другое решение или изменить саму задачу?
источник

AG

Alexander Greckov in pgsql – PostgreSQL
У меня есть такая задача. Есть множество компьютеров (которые могут работать оффлайн) и они накапливают разные данные/обновляют. Есть основной сервер с приложением (на нем тоже меняються данные). И получается они могут работать в двухстороннем порядке
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Задача усложняется тем, что каждый компьютер имеет свой определенный набор данных и их может быть сотнями
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Yaroslav Schekin
Просто для информации, по отношению к надёжному multi-master СУБД бывают примерно трёх видов:
1. Те, где его нет.
2. Те, которые врут, что он у них есть.
3. Распределённые СУБД.

Я к тому, что "на коленке" на базе PostgreSQL у Вас почти неизбежно получится (2).
Может, стоит найти какое-то другое решение или изменить саму задачу?
Спасибо за ответ. Но есть лучшее решение, чем я описал выше?
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Шардирование не подходит, так как от того будет ещё больше проблем
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Greckov
Спасибо за ответ. Но есть лучшее решение, чем я описал выше?
А Вы, на самом деле, не описали никакого решения (достаточно подробно, чтобы можно было сделать хоть какие-то выводы).
Я имел в виду, что всё это гораздо сложнее, чем кажется на первый взгляд.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Greckov
У меня есть такая задача. Есть множество компьютеров (которые могут работать оффлайн) и они накапливают разные данные/обновляют. Есть основной сервер с приложением (на нем тоже меняються данные). И получается они могут работать в двухстороннем порядке
И Вам нужно просто обмениваться данными время от времени?
Консистентность имеет значение?
И откуда "данные были inserted из другого мастера"? Т.е. эти наборы нетривиально пересекаются?
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Извиняюсь. Сейчас планирую использовать следующим образом. Устанавливаються триггеры на таблицы, изменения пишуться в 1ну таблицу, сервер синка их поддягивает, роутит и применяет к каждому компьюттер. Каждый компьютер так же трекает изменения и периодически связываеся с сервером синка и обменивается данными
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Но если сервер синка будет на главную бд делать insert, то это будет триггерить триггеры (которые будут писать изменения для отправки да другие комлпьютеры), что не правильно вообще
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Yaroslav Schekin
И Вам нужно просто обмениваться данными время от времени?
Консистентность имеет значение?
И откуда "данные были inserted из другого мастера"? Т.е. эти наборы нетривиально пересекаются?
Консистентность нужна, ибо рассинхронизация - это плохо и будут возникать вопросы
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Такие системы мне приходиться проектировать впервые, и даже не знаю как правильно к этому подойти
источник

SB

Sergey Bezrukov in pgsql – PostgreSQL
Alexander Greckov
Такие системы мне приходиться проектировать впервые, и даже не знаю как правильно к этому подойти
Может вам просто нужна "общая шина" на базе какой-нибудь Apache Kafka или подобного? Синхронизация прямо на уровне БД, как вы её описываете, выглядит не особо надёжно.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexander Greckov
Извиняюсь. Сейчас планирую использовать следующим образом. Устанавливаються триггеры на таблицы, изменения пишуться в 1ну таблицу, сервер синка их поддягивает, роутит и применяет к каждому компьюттер. Каждый компьютер так же трекает изменения и периодически связываеся с сервером синка и обменивается данными
Да, теоретически это может работать (есть consistent триггерные системы репликации, например slony).
Если Вы заглянете в его исходники, увидите, насколько это "просто".

> Такие системы мне приходиться проектировать впервые, и даже не знаю как правильно к этому подойти

Убежать в ужасе, например. ;) На самом деле, стоит посмотреть на существующие системы / почитать теорию по этому поводу.
источник

AG

Alexander Greckov in pgsql – PostgreSQL
Yaroslav Schekin
Да, теоретически это может работать (есть consistent триггерные системы репликации, например slony).
Если Вы заглянете в его исходники, увидите, насколько это "просто".

> Такие системы мне приходиться проектировать впервые, и даже не знаю как правильно к этому подойти

Убежать в ужасе, например. ;) На самом деле, стоит посмотреть на существующие системы / почитать теорию по этому поводу.
Задача ещё более усложнена тем, что надо делать ещё роутинг данных (привязка к разным компьютерам на уровне записи)
источник