用PostgreSQL将HTML页面、图像、PDF等文件存储在表中可以吗?还是速度较慢?我读到一些文章说这是不推荐的,但我不知道这是不是真的.
我心目中的列类型是BLOB
(据我所知,它存储在一个文件中)或bytea
类型,但其他类型也适用.
用PostgreSQL将HTML页面、图像、PDF等文件存储在表中可以吗?还是速度较慢?我读到一些文章说这是不推荐的,但我不知道这是不是真的.
我心目中的列类型是BLOB
(据我所知,它存储在一个文件中)或bytea
类型,但其他类型也适用.
你基本上有两个 Select .您可以将数据直接存储在行中,也可以使用大型对象工具.由于PostgreSQL现在使用名为TOAST的东西将大字段移出表,因此直接在行中存储 Big Data 不会带来性能损失.字段大小仍有1GB的限制.如果这太有限,或者如果你想要一个流式API,你可以使用大对象工具,它会给你一些更像数据库中的文件描述符的东西.您将LO ID存储在列中,并可以从该ID进行读写.
我个人建议你避免使用大型物体设施,除非你绝对需要它.在TOAST中,大多数用例都是按照您预期的方式使用数据库.对于大型对象,您会给自己带来额外的维护负担,因为您必须跟踪已使用的LO ID,并确保在它们不再使用时(但以前不再使用)将其断开链接,否则它们将永远占用数据目录中的空间.还有很多设施周围都有异常的行为,这些细节让我难以理解,因为我从未使用过它们.
对大多数人来说,在数据库中存储 Big Data 会带来巨大的性能损失,那就是你的ORM软件会在每个查询中提取 Big Data ,除非你明确指示它不要这样做.你应该注意告诉Hibernate或者你用来处理这些列的任何东西,并且只有在特别要求的时候才能获取它们.