|
|
|
Как хранить историю изменения данных
|
|||
|---|---|---|---|
|
#18+
Задача. 1. Необходимо обеспечить хранение истории изменения данных. Например в какой-то таблице поменяли значение в ячейке, необходимо где-то хранить старое значение и дату его изменения. 2. Как быть с внешними ключами? Если изменилось значение внешнего ключа, как сохранить весь срез данных по старому ключу. Понимаю, что штатных средств в postgesql для решения данной задачи нет (или я ошибаюсь). Поделитесь опытом, кто сталкивался с подобного рода задачами. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2014, 11:26:53 |
|
||
|
Как хранить историю изменения данных
|
|||
|---|---|---|---|
|
#18+
Версию Postgres озвучь. Также, озвучь объёмы данных, среднюю нагрузку, средний прирост, сценарий использования базы (учет, отчетность, хранилище, аналитика). Возможно, подойдёт вот такое . В остальном - возможно варианты. Варианты зависят от того, кто и как пользуется базой. Список известных мне вариантов: 1. Захватывать изменения в триггере - я б так делать не стал. 2. Захватывать явно, на этапе модификации (как в приведенном примере, например) - этот вариант нравится больше всего, но доступен редко, т.к. потребует доработки приложения, использующего базу. 3. CDC - захватывать изменения в журнале транзакций, и записывать их где-то. Этот вариант хороший, но как легко и просто организовать Change Data Capture в PostgreSQL - не знаю. Есть еще вариант 4 - хранить данные в таблице версионно, т.е. при обновлении строки сохранять старую версию и вставлять копию с обновлением как новую версию. Но для этого потребует серьёзная добработка вашего приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2014, 11:52:07 |
|
||
|
Как хранить историю изменения данных
|
|||
|---|---|---|---|
|
#18+
Кроме того, в 9.4 появилась логическая репликация. Она может помочь с захватом изменений. >>Понимаю, что штатных средств в postgesql для решения данной задачи нет (или я ошибаюсь). Не ошибаешься. Штатных средств, в общем-то, нет нигде (Оракловый флешбэк - несовсем то). Что до внешних ключей - зависит от того, какой вариант захвата и сохранения изменений ты выберешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2014, 11:56:10 |
|
||
|
Как хранить историю изменения данных
|
|||
|---|---|---|---|
|
#18+
rovan Версию Postgres озвучь. Также, озвучь объёмы данных, среднюю нагрузку, средний прирост, сценарий использования базы (учет, отчетность, хранилище, аналитика). Версия Postgres - 9.1 Объем приходящих данных - ориентировочно 10Kb Средняя нагрузка - еженедельное автоматическое обновление данных Сценарий использования - отчетность, хранилище ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2014, 12:14:05 |
|
||
|
Как хранить историю изменения данных
|
|||
|---|---|---|---|
|
#18+
big-trot, Добрый день. big-troЗадача. 1. Необходимо обеспечить хранение истории изменения данных. Например в какой-то таблице поменяли значение в ячейке, необходимо где-то хранить старое значение и дату его изменения. 2. Как быть с внешними ключами? Если изменилось значение внешнего ключа, как сохранить весь срез данных по старому ключу. Понимаю, что штатных средств в postgesql для решения данной задачи нет (или я ошибаюсь). Можно погуглить по Slowly changing dimension. Очень широко используется при проектировании DWH. Можете и теорию почитать про проектирование и самих DWH. Может идея и понравится. PS. Если по сценарию планируете использовать отчетность, то тут лучше смотреть в сторону OLAP кубов. С уважением, biwed.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2014, 13:58:43 |
|
||
|
Как хранить историю изменения данных
|
|||
|---|---|---|---|
|
#18+
big-trotrovan Версию Postgres озвучь. Также, озвучь объёмы данных, среднюю нагрузку, средний прирост, сценарий использования базы (учет, отчетность, хранилище, аналитика). Версия Postgres - 9.1 Объем приходящих данных - ориентировочно 10Kb Средняя нагрузка - еженедельное автоматическое обновление данных Сценарий использования - отчетность, хранилище Точно 10Kb, а не MB или GB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 18:38:53 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=1998533]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
211ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 542ms |

| 0 / 0 |
