【问题标题】:Storing User Generated Reports in Postgres DB在 Postgres DB 中存储用户生成的报告
【发布时间】:2021-10-27 21:09:46
【问题描述】:

我正在寻找一些关于存储从我的 Postgresql 数据库中的数据生成的报告的建议。我想为用户提供将输出存储为 csv 的选项,但我也希望能够将其保存在其数据库中。前者不是什么大问题,但对于后者,我不确定将 csv 文件作为二进制文件 (bytea) 存储在数据库中还是将内容存储在行中会更好。我愿意接受有关完成这项工作的最佳方式的建议。

【问题讨论】:

    标签: postgresql database-design


    【解决方案1】:

    我想说这完全取决于您对如何处理数据库中的“报告”以及报告的大小限制的要求。

    如果您确定报告永远不会超过 1GB,那么您可以将完整的报告存储在 text 列中(我不会将 bytea 用于文本数据)。所以你会得到一个简单的表格:

    create table report
    (
      id integer primary key,
      title text not null,
      created_at timestamp not null,
      content text not null
    );
    

    另一种选择是存储报告的每一行,这样您就不会受到整个报告的可能大小限制(仅限单行的限制)的影响

    create table report
    (
      id integer not null, 
      title text not null
      created_at timestamp not null,
    );
    
    create table report_content
    (
      report_id integer not null references report,
      line_no integer not null,
      content text not null, 
      primary key (report_id, line_no)
    );
    

    【讨论】:

    • 谢谢,我会测试这个方法
    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多