2012-09-12 46 views
2

我很快就需要将测量数据(从MATLAB内部)存储到数据库中 - 也许是MySQL。
每个测量将包含一些让我们说的元数据和4096浮点(双)条目的测量向量。 我应该用哪种方式将它们存储到数据库中?然后转换为BLOB或将它们作为ARRAY类型列?我在JAVA jdbc Docs中发现了那些列类型。
任何提示都是值得欢迎的 - 甚至是不同的解决方案。如何在数据库中存储矢量:BLOB还是ARRAY?

+1

请注意,当您选择引擎时,MySQL不包含数组类型。存储方法的选择更多地取决于数据在数据库中时要处理的数据,而不是您想要存储数据的方式。 – lanzz

+0

@lanzz Thankyou为你的笔记。我只需要决定什么会更好(展望未来):使用斑点 - 你总是需要转换你的数据。因此,使用双精度浮点数组(DOUBLE列)可能更容易 - 但实际上最少的dbms支持数组。那么该怎么办?未来会有越来越多的dbms支持数组吗? –

+1

数组在ANSI/ISO SQL标准中定义,所以很可能更多的DBMS将采用对它们的支持,而不是其他方式。即使在使用数组时,也可能需要_some_转换,因为数组结果通常被编码为字符串表示形式,需要进行解析,但这对于简单的一维双精度数组不应该是一个问题。 – lanzz

回答

1

请注意,当您选择引擎时,MySQL不包含数组类型。数组是在ANSI/ISO SQL标准中定义的,因此很可能会有更多的DBMS随着时间的推移采用对它们的支持,而不是相反。

即使使用数组,也可能需要一些转换,因为数组结果通常编码为字符串表示形式,需要进行解析,但这对于简单的1维应该不会有问题双打阵列。存储方法的选择更多地取决于数据在数据库中时要处理的数据,而不是您想要存储数据的方式。

如果您打算对服务器上的矢量内容进行操作,例如使用数组,则可以使用数组。搜索值(:value = ANY (array_column))。如果你是只有要检索矢量,而不直接在查询中检查它的内容,那么决定使用什么存储并不重要。实际上,您可能受益于blob/text存储,以避免在DBMS方面进行任何额外的处理(即将数组值作为结果的字符串表示进行编码)。

+0

谢谢你的帮助! –

相关问题