可以在Postgresql的表格中存储HTML页面,图像,PDF等文件,还是慢?我读了一些文章,说这是不推荐的,但我不知道是否是真的。
什么是更好的使用,存储为BLOB(它存储在一个文件,对吗?)或一个字节类型的列?
你基本上有两个选择。您可以将数据直接存储在行中,也可以使用大型对象工具。由于Postgresql现在使用了一些名为
TOAST的东西来将大字段移出表格,所以不应该直接在行中存储大量数据而导致性能下降。一个字段的大小仍然保持1 GB的限制。如果这太有限,或者您想要一个流式API,您可以使用大型对象工具,这样可以让您更多地了解数据库中的文件描述符。您可以将LO ID存储在列中,并可以从该ID读取和写入。
我个人建议你避免大对象设施,除非你绝对需要它。使用TOAST,大多数使用案例只需使用数据库即可。对于大对象,您可以给自己额外的维护负担,因为您必须跟踪您使用的LO ID,并确保在不再使用它们(但不是之前)时取消链接,否则他们将坐在您的数据目录永远占用空间。还有很多设施在他们周围有异常的行为,其细节让我失望,因为我从不使用它们。
对于大多数人来说,与数据库中存储大量数据相关的大量性能损失是,您的ORM软件将在每次查询时都会提取大量数据,除非您明确指出不会。您应该注意告诉Hibernate或您正在使用的任何内容将这些列视为很大,只有在特别要求时才能提取它们。