Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.11.2016, 17:30
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
Добрый день! Пишу систему, встал вопрос по логированию данных. Нужно что бы в нужный момент из приложения пользователь мог посмотреть кто изменял те или иные данные в разных таблицах. Например таблица Контрагенты. Кто то поменял телефон, ну или ещё что то. Вариант есть сделать дублирующую таблицу и одна действующая, а вторая именно лог, где теже поля только поле id уже не уникальный ключ, но так же указывет на запись, но мне кажется слишком громозко и для каждой таблицы надо свой дубликат иметь. Можно отдельную таблицу, где будут хряниться изменяемые поля. Есть вариант тоже завести отдельную таблицу, а изменяемые поля будут храниться в виде поля массива. У кого какая практика и кто какие решения использовал? Посоветуйте пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.11.2016, 17:47
|
|||
|---|---|---|---|
Логирование данных в PostgreSQL |
|||
|
#18+
LeximusNetПишу систему, встал..."теже поля" - и будешь сравнением всех полей определять, что поменялось? а с чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.11.2016, 17:49
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
Добавление, редактирование и удаление записей будет осуществляться только через функции, соответственно функции и будут логировать. Но как это лучше хранить? Я пока склоняюсь именно к варианту таблицы, у которой будут поля: 1.Дата изменения 2.Кто изменил 3.Массив изменений( список полей, список значений старых, список значений новых) Но хранить новые или старые данные пока не знаю стоит или нет, но главное суть. И смотреть историю будет как то проще. Но как в таком случае хранить разные типы данных, например некоторые текстовые поля, а некоторые вообще логические. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.11.2016, 17:52
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
p2.LeximusNetПишу систему, встал..."теже поля" - и будешь сравнением всех полей определять, что поменялось? а с чем? Ну в любом случае что то поменялось, иначе изменения просто не будут производиться. Если пользователь ничего не поменял, то даже при нажатии Сохранить у меня ничего не будет меняться. К тому же главное смотреть вообще что что то поменялось и всё иметь что поменялось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.11.2016, 18:06
|
|||
|---|---|---|---|
Логирование данных в PostgreSQL |
|||
|
#18+
LeximusNet, велосипеды на раззные вкучы тут: https://yandex.ru/yandsearch?clid=2186618&text=postgresql audit data triggers&lr=213 или тут https://www.google.ru/search?client=ubuntu&channel=fs&q=postgresql audit data triggers&ie=utf-8&oe=utf-8&gfe_rd=cr& ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2016, 11:00
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
qwwqLeximusNet, велосипеды на раззные вкучы тут: https://yandex.ru/yandsearch?clid=2186618&text=postgresql audit data triggers&lr=213 или тут https://www.google.ru/search?client=ubuntu&channel=fs&q=postgresql audit data triggers&ie=utf-8&oe=utf-8&gfe_rd=cr& Гуглить и Яндексить(так можно говорить?) я умею, и транзакции что это такое, да и писать их я тоже умею, вопрос именно не в том как осуществить сбор информации об изменениях, а вопрос именно в том как хранить. Да и способы хранения я знаю несколько, вопрос кто как делает, какие плюсы, удобства и недостатки? Какова практика. Вопрос именно в том как хранить это логирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2016, 13:34
|
|||
|---|---|---|---|
Логирование данных в PostgreSQL |
|||
|
#18+
LeximusNetГуглить и Яндексить(так можно говорить?) я умею сомневаюсь. -- для этого надо уметь читать. пока же наблюдаем только обратный навык -- вы сюда явно пописать вышли. (ударение на ваш вкус) вот тут (это всё по первой сцылке), например: https://wiki.postgresql.org/wiki/Audit_trigger описана одна из систем органиизации аудита. тут (там же) https://wiki.postgresql.org/wiki/Audit_trigger_91plus немного другая (с моим любимым hstore) тут (там же) https://postgrespro.ru/docs/postgrespro/9.5/plpgsql-trigger -- ваш частный случай копии таблицы данных с гандикапом ит.д. т.ч. вы, барин, "не мешки ворочать" изволите, очевидно а вообще говоря любая система триггерной репликации -- по совместительству -- система аудита. ( со всей своей избыточностью). поизучайте лондайст, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2016, 13:43
|
|||
|---|---|---|---|
Логирование данных в PostgreSQL |
|||
|
#18+
qwwq, PS хотя вот от такого: авторTo later cancel the auditing: DROP TRIGGER audit_trigger_row ON target_table_name; DROP TRIGGER audit_trigger_stm ON target_table_name; надо бы заранее отказаться. Ибо под существенной нагрузкой малоосуществимо. лучше закладывать в текст регулирующие константы, таблицы настроек аудита, или альтерить тело триггерных функций (заранее размножив их копипастой по одной на табличку). (как там с ACID -- боюсь. не очень хорошо , зато без лока самой аудитуемой таблицы) . и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2016, 14:59
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
LeximusNetВариант есть сделать дублирующую таблицу и одна действующая, а вторая именно лог, где теже поля только поле id уже не уникальный ключ, но так же указывет на запись, но мне кажется слишком громозко и для каждой таблицы надо свой дубликат иметь. Это тебе только кажется. Самый простой и удобный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2016, 16:12
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
qwwq, спасибо. Так то я эти методы видел, и тригеры понимаю как они работают. Только я не понял как получить имена полей, что бы когда обычный пользователь сможет посмотреть что и когда менялось, смог понять что и кто поменял. А не так что через запятую перечисление значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2016, 16:14
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
Dimitry SibiryakovLeximusNetВариант есть сделать дублирующую таблицу и одна действующая, а вторая именно лог, где теже поля только поле id уже не уникальный ключ, но так же указывет на запись, но мне кажется слишком громозко и для каждой таблицы надо свой дубликат иметь. Это тебе только кажется. Самый простой и удобный вариант. Да, он самый простой от части. Но получается надо вести отдельно учёт каждой таблицы, для каждой таблицы писать механизмы выгрузки, при добавлении полей таблицы добавлять поля в логирующую таблицу. А чистить лог... а точнее даже переносить в архив, на другие носители помоему вообще ужас.... хотя конечно можно и автоматизировать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2016, 17:56
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
Всем спасибо! Я пока склоняюсь к двум вариантам. Оба варианта предполагают хранение изменённых записей именно одной таблице. Вот только хранить лучше в массиве, например массив полей, массив значений, массив изменений ну или в текстовом виде, в строке? Подскажите пожалуйста. Кто какие методы использует и какие минусы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2016, 08:47
|
|||
|---|---|---|---|
Логирование данных в PostgreSQL |
|||
|
#18+
Пользуемся вот этой: qwwq https://wiki.postgresql.org/wiki/Audit_trigger_91plus немного другая (с моим любимым hstore) Плюсы - легко и просто устанавливать, удалять аудит на любу таблицу. - единообразное хранение данных - можно искать по любому полю, и при необходимости можно сделать индексы по hstore - hstore легко преобразуется в record - кстати bytea тоже логируется Код: plsql 1. 2. 3. 4. 5. соответственно, очень просто восстанавливать данные. Минусы: - таблица аудита быстро пухнет, поиск по аудиту будет ресурсоемким. Поэтому мы сделали несколько таблиц (и соответствующих процедур по установке-удалению) audit.logged_actions. Отдельно для справочников, и отдельно для нескольких других сущностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2016, 09:07
|
|||
|---|---|---|---|
Логирование данных в PostgreSQL |
|||
|
#18+
LeximusNetВот только хранить лучше в массиве, например массив полей, массив значений, массив изменений ну или в текстовом виде, в строке? Не думаю что здесь есть смысл придумывать свой велосипед. hstore отлично себя зарекомендовал. Как я уже писал выше есть процедуры преобразования в в reсord и обратно. Как альтернативу можешь рассмотреть json, - можно немного модифицировать процедуры audit_table и будет все храниться в json. Смотри row_to_json, json_populate_recordset. По моим оценкам, хранение в json (jsona) занимает меньше места от 5% до 10% (Это если считать length( row_to_json(a.*)::text)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2016, 15:05
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
Всем спасибо большое, так и поступлю. Особенно большое qwwq. Я думаю я не буду все поля логировать, не вижу смысла логировать запросы в моей ситуации и ещё некоторые поля. Добавлю отдельное поле ID и буду индексировать по имени (или указанию таблицы) и полю ID, так я быстро буду находить тех кто изменил именно указанную запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2016, 18:29
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
LeximusNetДа, он самый простой от части. Но получается надо вести отдельно учёт каждой таблицы, для каждой таблицы писать механизмы выгрузки, при добавлении полей таблицы добавлять поля в логирующую таблицу. А чистить лог... а точнее даже переносить в архив, на другие носители помоему вообще ужас.... хотя конечно можно и автоматизировать! Все уже автоматизировано до нас. http://clarkdave.net/2015/02/historical-records-with-postgresql-and-temporal-tables-and-sql-2011/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2016, 19:16
|
|||
|---|---|---|---|
|
|||
Логирование данных в PostgreSQL |
|||
|
#18+
Также можете посмотреть в сторону модуля pgaudit. https://github.com/pgaudit/pgaudit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=1996814]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 157ms |

| 0 / 0 |
