Версионность // Длинный транзакции // Long transaction
kos2nus
Дата: 10.01.2015 14:18:25
Доброго времени суток.
Подскажите существует ли у Postgres механизм подобный Oracle TLL? Так называемые длинные транзакции? Я так понял что нативно нет. Поиск каких то сторонних плагинов пока так же результата не дал?
Немного поясню для чего конкретно мне такой функционал. К примеру есть ГИС система, которую редактируют несколько человек. Так вот после процесса редактирования, измененные данные должны быть проверены прежде чем буду применены.
Заранее спасибо
Maxim Boguk
Дата: 10.01.2015 14:26:21
kos2nus |
---|
Доброго времени суток.
Подскажите существует ли у Postgres механизм подобный Oracle TLL? Так называемые длинные транзакции? Я так понял что нативно нет. Поиск каких то сторонних плагинов пока так же результата не дал?
Немного поясню для чего конкретно мне такой функционал. К примеру есть ГИС система, которую редактируют несколько человек. Так вот после процесса редактирования, измененные данные должны быть проверены прежде чем буду применены.
Заранее спасибо |
Нет такой функциональности нет (и не планируется... уж больно специфическое требование)
Такое лучше на уровне приложения делать если надо под PostgreSQL.
Можно попробовать поиграться с
http://www.postgresql.org/docs/9.4/static/functions-admin.html#FUNCTIONS-SNAPSHOT-SYNCHRONIZATION (использование snapshot для нескольких транзакций) но применять изменения всеравно прийдется в основной транзакции.
--Maxim Boguk
www.postgresql-consulting.ru
этта
Дата: 10.01.2015 14:26:29
kos2nus,
ты куй
куй, и оно пойдёт
например расскажи нам ара, что там в ващемь ара, кале, называется тлл [толстый лысый луи ?] и мы, ара, калоед ты нашЪ, вместе подумаем, чего тебе не хватает
этта
Дата: 10.01.2015 14:35:22
Maxim Boguk,
если я прально поал -- эти чилавеки должны иметь общую транзакцию. если да -- то это делается в приложении[или третьем слое] -- всех их собираем в одном db-connection, говорим в нем BTGIN; и рулим очередью их запросов. только вот нафигакс это нужно ?
можно ещё всем набрасывать времянки, а одному коммитить все изменения в постоянку, но надо ли оно ?
кстати удобно было бы, если бы дблинк умел шарить соединение (по глобальному имени, например) -- тогда можно было бы не в третьем слое, а в дблинк-соединении такое сделать.
этта
Дата: 10.01.2015 14:46:36
всё же от лени это у вас всё
по чесноку надо делать набор постоянных объектов "изменения" с id этого изменения, и люди должны работать в коротких транзакциях с ними, с объектной моделью "изменений".
и даже не завершенные сегодня (до обеда) , но уже сделанные "изменения" должны сохраняться на завтра (на после обеда). а вот коммитить "изменение id такое-то" должны специальные операции.
где то тут аналитицки порыться надо.
или у вас пяток групп конкурентно должны это делать, а кто не успел -- того и тапком ?
тады да, тады именно захват снепшота и длинная общая через общее соединение транзакцияю
kos2nus
Дата: 10.01.2015 15:19:19
автор |
---|
всё же от лени это у вас всё
по чесноку надо делать набор постоянных объектов "изменения" с id этого изменения, и люди должны работать в коротких транзакциях с ними, с объектной моделью "изменений". и даже не завершенные сегодня (до обеда) , но уже сделанные "изменения" должны сохраняться на завтра (на после обеда). а вот коммитить "изменение id такое-то" должны специальные операции. где то тут аналитицки порыться надо.
или у вас пяток групп конкурентно должны это делать, а кто не успел -- того и тапком ? тады да, тады именно захват снепшота и длинная общая через общее соединение транзакцияю |
не с первого раза конечно, но я смог это прочитать. В принципе это то что надо
Люди работают с базой. Производят изменения, но эти изменения не применяются к тому набору данных с которым работают а сохраняются где то еще до проверки. А что не правильно понял, что подобный механизм называется long transactions?
Если ничего такого нет, то придется конечно делать самому. Я вижу это так: есть основная схема данных (read only). Все измененные данные будут сохраняться в схеме конкретного пользователя. А потом администратор, проверив, будет по очереди применять эти "транзакции" с основной схеме.
этта
Дата: 10.01.2015 15:46:59
kos2nus,
ну разоритесь же на аналитика, ять
оно дешевле по итогу будет
и выньте палец изо рта
NikolayV81
Дата: 10.01.2015 16:55:30
kos2nus |
---|
...
Если ничего такого нет, то придется конечно делать самому. Я вижу это так: есть основная схема данных (read only). Все измененные данные будут сохраняться в схеме конкретного пользователя. А потом администратор, проверив, будет по очереди применять эти "транзакции" с основной схеме. |
ИМХО проверять надо данные, а не то что в транзакции сделано ( вот удалил я каждую 2-ю строчку а потом вернул 99% из них из своего локального файлика, как найти тот 1% что реально изменились ( удалились ) ;) )...
Просто данные должны иметь пометку, что они не финальные, а финальную отметку должен ставить тот кто за неё будет отвечать. Как это реализовать другой вопрос.
hattifattener
Дата: 12.01.2015 04:14:05
kos2nus |
---|
А потом администратор, проверив, будет по очереди применять эти "транзакции" с основной схеме. |
Очереди тоже можно делать по разному - последовательно по операторам или по объектам например. Утверждать каждое изменение в порядке внесения или кумулятивно по объекту за период.
Так что оптимальная схема будет зависеть от режима работы операторов и проверяющего.
Возможно вообще нет смысла использовать длинные транзакции, а стоит завести очередь заявок, куда коммитят операторы и которую проверяющий разбирает уже по своей логике на отдельные транзакции.