如何保存数据的最新变化? PostgreSQL的

时间:2015-01-26 11:28:31

标签: postgresql logging git-commit revert

我必须编写与Postgres一起使用的Java应用程序,我将存储文本文件。我需要有功能来执行gitlike commit / revert,所以我创建了第一个目标:

  • 程序提交将写入文档,其中包含有关最新更改所有者,日期的信息,并在数据库中创建日志或日志文件等内容 - 这是我的问题:)
  • revert将具有参数(提交ID)并使用log / diff文件将还原所有更改

所以,我的问题是

  1. 我怎样才能创建这样有意义但不那么差的性能系统?我正在考虑在我的表中创建PL / pgSQL函数作为UPDATE / DELETE的触发器。日志将在函数中创建并存储在辅助表中。这是一个很好的解决方案还是简单而且性能差?
  2. 你能建议我创建差异日志的任何好方法吗?我的意思是人类容易看到的东西(比如GIT),并且通过恢复功能很容易使用。
  3. 我对最后几分钟的想法:

    CREATE TABLE logs(
        operationID int NOT NULL UNIQUE,
        operationType text NOT NULL,
        applyData timestamp NOT NULL,
        comment text,
        userID int NOT NULL,
        logText NOT NULL,
        --etc.
    );
    
    CREATE TRIGGER logChanges
        AFTER UPDATE OR DELETE ON myAwesomeTable
        (for affectedRow) ROW EXECUTE EXECUTE PROCEDURE loggingProcedure();
    

0 个答案:

没有答案