自动编码器输出的数据库设计
Database design for autoencoder output
我有一个图像数据集,我是 运行 一个自动编码器,用于将它们编码为长度为 32 的浮点向量。要存储这些浮点值,我应该创建 32 个命名列还是直接将其放入在文本的 BLOB 中并在需要时解析此文本?使用前者与后者的性能优势是什么?
数据示例:
key:72
value:[1.8609547680625838e-8,2.9573993032272483e-8,0.9999995231628418,0.03153182193636894,
0.000003173188815708272,0.9999996423721313,0.8707512617111206,0.00005991563375573605,
0.9999498128890991,0.9999982118606567,0.947956383228302,0.9749470353126526,
0.9999994039535522,5.490094281412894e-7,0.9999681711196899,0.9958689212799072]
我总是会检索给定图像 ID 的所有值。
表没有性能。 查询 有性能。您必须考虑使数据库存储提供最佳性能的任何考虑,必须在您将 运行 对数据进行何种类型的查询的上下文中进行。
如果您始终将完整的值数组作为单个实体进行查询,则使用 blob。
如果你总是查询数组中第 N 个位置的特定值,那么也许一系列列是好的。
如果您想使用 SQL 对数据进行 MIN()、MAX()、AVG() 等聚合查询,则使用 table 进行第二个 table每行浮点值。
在您知道需要查询的内容之前,您无法做出此决定运行。
通常您会使用 mapping table
来映射哪些值属于哪个向量。
但是由于您提供的 array
是一个值、一个向量的全部,并且因为使用 mapping table
可能需要为每个向量向 table 添加 32 行最好将其保存为 TEXT/BLOB
.
我有一个图像数据集,我是 运行 一个自动编码器,用于将它们编码为长度为 32 的浮点向量。要存储这些浮点值,我应该创建 32 个命名列还是直接将其放入在文本的 BLOB 中并在需要时解析此文本?使用前者与后者的性能优势是什么?
数据示例:
key:72
value:[1.8609547680625838e-8,2.9573993032272483e-8,0.9999995231628418,0.03153182193636894,
0.000003173188815708272,0.9999996423721313,0.8707512617111206,0.00005991563375573605,
0.9999498128890991,0.9999982118606567,0.947956383228302,0.9749470353126526,
0.9999994039535522,5.490094281412894e-7,0.9999681711196899,0.9958689212799072]
我总是会检索给定图像 ID 的所有值。
表没有性能。 查询 有性能。您必须考虑使数据库存储提供最佳性能的任何考虑,必须在您将 运行 对数据进行何种类型的查询的上下文中进行。
如果您始终将完整的值数组作为单个实体进行查询,则使用 blob。
如果你总是查询数组中第 N 个位置的特定值,那么也许一系列列是好的。
如果您想使用 SQL 对数据进行 MIN()、MAX()、AVG() 等聚合查询,则使用 table 进行第二个 table每行浮点值。
在您知道需要查询的内容之前,您无法做出此决定运行。
通常您会使用 mapping table
来映射哪些值属于哪个向量。
但是由于您提供的 array
是一个值、一个向量的全部,并且因为使用 mapping table
可能需要为每个向量向 table 添加 32 行最好将其保存为 TEXT/BLOB
.