我们正在捕获大小可变(从100k到800k)的原始二进制字符串,并且我们想存储这些单独的字符串。它们不需要索引(duh),并且不会对该字段的内容进行任何查询。
这些插件的数量将非常大(用于存档),例如每天10,000。像这样的大型二进制字符串的最佳字段类型是什么?应该是text还是blob其他?
text
blob
就 PostgreSQL 而言,类型text是不可能的。与目标相比,它更慢,占用更多空间并且更容易出错bytea。 基本上有3种方法:
bytea
使用类型 bytea (基本上与SQL blob类型的pg等效)
使用“ 大物件 ”
将blob作为文件存储在文件 系统中, 而仅将文件名存储在数据库中。
每个都有自己的优点和缺点。
非常易于处理,但是需要最多的磁盘空间。需要一些解码和编码,这也使它变慢。备份的大小迅速增加!
在处理方面有些尴尬,但是您有自己的基础结构来处理blob-如果需要的话。而且,您可以更轻松地进行单独的备份。
是迄今为止最快的方法,占用的磁盘空间最少。但是它不提供在数据库内部存储时获得的参照完整性。
我有许多类似于图像文件的实现:将一个 小缩略图 存储在bytea字段中,以实现参考完整性和快速参考。将原始图像作为文件存储在文件系统中。当然,您需要考虑何时以及如何删除过时的文件,如何备份外部文件等。