|
Repeatoble read без транзакции.
|
|||
---|---|---|---|
#18+
Добрый день! Есть переливка в виде скрипта на питоне которая на начальном этапе работает так: В источник на транзакцию, читающую данные из PostgreSQL ставится уровень изоляции repeatable read чтобы читаемые данные были "зафиксированы" на момент начала читающей транзакции. Это нужно т.к. прочитать за раз нужно данные из нескольких таблиц, а данные в них часто меняются и связаны друг с другом по всякому. Если читать в разных транзакциях то пока один объект прочитаешь в других уже данные новее будут и связи другие и т.д. Эту переливку нужно реализовать на ETL инструменте который читать данные из нескольких объектов в одной транзакции не умеет. Вопросы: 1) Можно ли создать условия в PostgreSQL такие как в repeatoble read для нескольких таблиц одновременно. Только без явного открытия транзакции? Типа команды lock (но она опять же в явно открытой транзакции только работает). 2) Может у кого то был опыт чтения версий данных таблиц на какой то момент времени фиксированный. Направьте где глубже узнать про это. 3) Принципиально другой подход? Решение в виде базы реплики и остановки репликации на время понятно, но интересно есть ли что полегче. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 12:56 |
|
Repeatoble read без транзакции.
|
|||
---|---|---|---|
#18+
DoubleDouchebag Добрый день! Есть переливка в виде скрипта на питоне которая на начальном этапе работает так: В источник на транзакцию, читающую данные из PostgreSQL ставится уровень изоляции repeatable read чтобы читаемые данные были "зафиксированы" на момент начала читающей транзакции. Это нужно т.к. прочитать за раз нужно данные из нескольких таблиц, а данные в них часто меняются и связаны друг с другом по всякому. Если читать в разных транзакциях то пока один объект прочитаешь в других уже данные новее будут и связи другие и т.д. Эту переливку нужно реализовать на ETL инструменте который читать данные из нескольких объектов в одной транзакции не умеет. Вопросы: 1) Можно ли создать условия в PostgreSQL такие как в repeatoble read для нескольких таблиц одновременно. Только без явного открытия транзакции? Типа команды lock (но она опять же в явно открытой транзакции только работает). 2) Может у кого то был опыт чтения версий данных таблиц на какой то момент времени фиксированный. Направьте где глубже узнать про это. 3) Принципиально другой подход? Решение в виде базы реплики и остановки репликации на время понятно, но интересно есть ли что полегче. 1) Уровень изоляции выставляется на уровне всего сервера. Транзакция все равно откроется, исходя из вводных. 2) вариаций может масса - запомнили последнюю бизнес дату на таргете, считали ее, программно ввели нужную дату отсечку, смотря на которую работаем со всеми тремя источниками в виде параметра/процедурно/функционально. Либо считываем parent source / major источник - так же запоминаем и идем в остальные. Хорошенечко изучите ваше ETL средство 3) непонятно что вы делаете до конца, чтобы подход советовать ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 13:17 |
|
Repeatoble read без транзакции.
|
|||
---|---|---|---|
#18+
yob, >>3) непонятно что вы делаете до конца, чтобы подход советовать Нужно просто переделать логику загрузки скриптом на ETL информатики. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 13:33 |
|
|
start [/forum/topic.php?fid=53&fpage=13&tid=1994112]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 137ms |
0 / 0 |