【发布时间】:2021-10-27 21:09:46
【问题描述】:
我正在寻找一些关于存储从我的 Postgresql 数据库中的数据生成的报告的建议。我想为用户提供将输出存储为 csv 的选项,但我也希望能够将其保存在其数据库中。前者不是什么大问题,但对于后者,我不确定将 csv 文件作为二进制文件 (bytea) 存储在数据库中还是将内容存储在行中会更好。我愿意接受有关完成这项工作的最佳方式的建议。
【问题讨论】:
标签: postgresql database-design
我正在寻找一些关于存储从我的 Postgresql 数据库中的数据生成的报告的建议。我想为用户提供将输出存储为 csv 的选项,但我也希望能够将其保存在其数据库中。前者不是什么大问题,但对于后者,我不确定将 csv 文件作为二进制文件 (bytea) 存储在数据库中还是将内容存储在行中会更好。我愿意接受有关完成这项工作的最佳方式的建议。
【问题讨论】:
标签: postgresql database-design
我想说这完全取决于您对如何处理数据库中的“报告”以及报告的大小限制的要求。
如果您确定报告永远不会超过 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)
);
【讨论】: