我正在开展一个图像处理项目。我使用php作为GUI,matlab作为算法,Mysql作为我的数据库。我现在有30,000个图像存储在数据库中。我的matlab程序将为包含300个元素的每个图像生成3个数组。所以,我的问题是
任何建议和帮助都会非常值得注意。谢谢。
答案 0 :(得分:1)
在这种情况下,最好的解决方案是创建一个单独的元表,用于存储与图像相关的数据(数组)。
这是一个简单的例子EER:
image_id
(引用外键),array
和index
的组合构成了元表的主键。
我假设您可以安全地将数组的键表示为0索引,并且数组的所有值也都是数字(这就是为什么所有字段都是INT
类型的原因,但如果没有,相应地调整数据类型。)
image_id
代表关联的image_id。array
代表特定数组(您说最多3个数组,因此此列中的值可以是1-3
)。index
是数组中的数字索引。value
是与索引配对的数组中的值。元表中的示例数据可能如下所示:
image_id | array | index | value
------------------------------------------------------
256 | 1 | 0 | 5
256 | 1 | 1 | 9
256 | 1 | 2 | 4
256 | 1 | 3 | 23
256 | 1 | 4 | 1
256 | 2 | 0 | 9
256 | 2 | 1 | 15
256 | 2 | 2 | 8
256 | 2 | 3 | 19
256 | 2 | 4 | 11
在上面的示例数据中,我们在1
列中有两个数组(每个数组由2
和array
表示),每个数组包含5个元素(在{{1}中表示的键}列和index
列中显示的值。
您可以存储所需的多个阵列,但需要多个索引。
您还可以使用value
在MySQL中执行所需的数组比较计算。以下是如何为image_id 256 找到所有数组中每个键的最小值(假设有3个数组):
GROUP BY
由于在(SELECT index, MIN(value) AS minvalue
FROM image_meta
WHERE image_id = 256
GROUP BY index
,image_id
,array
)上设置了复合索引,因此这应该非常快。
此设计还允许每个图像具有可变数量的索引和数组。
答案 1 :(得分:-1)
阅读您的问题,无论我的评论如何,关系数据库对您来说会更好,如果性能不是一个大问题,那么SQL将是最好地解决您的问题的语言,而不是PHP级别。<登记/> 是的,PHP也有解决这些问题的简单方法,尽管不像在SQL中那么容易。