php - 在数据库中存储巨大的数组

标签 php mysql arrays multidimensional-array

我正在从事图像处理项目。我使用 php 作为 GUI,使用 matlab 作为算法,使用 Mysql 作为我的数据库。我现在在数据库中存储了 30,000 张图像。我的 matlab 程序将为每个包含 300 个元素的图像生成 3 个数组。所以,我的问题是

  1. 是将 matlab 为所有图像生成的数组保存在单个 txt 文件中,还是为每个图像创建一个 txt 文件。哪种方法更容易检索数据并将其存储到数据库中?
  2. 从 txt 文件复制数组并将其保存到数据库有多难?是否有任何标准流程?
  3. 必须检索数组的元素以进行进一步计算。我们可以为此目的使用序列化和反序列化吗?
  4. 我必须一次比较 2 个数组元素,并从两个数组中获取具有最小值的第三个数组。例如 A=[1 2 3 4] 和 B=[6 1 4 2] 我必须比较这个 2 数组的每个元素并生成第三个数组 c=[1 1 3 2] 比较数组的每个元素其对应的另一个数组的元素,并将最小元素存储在第三个数组中。与 1 个固定阵列相比,对数千个阵列重复此过程。是否有任何 php 函数可以执行此操作?

我们将不胜感激任何建议和帮助。谢谢。

最佳答案

在这种情况下,最好的解决方案是创建一个单独的元表来存储与您的图像相关的数据(数组)。

这是一个简单的 EER 示例:

Image DB EER

image_id(引用外键)、arrayindex 的组合构成元表的主键。

我假设您可以安全地将数组的键表示为仅从 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

在上面的示例数据中,我们有两个数组(每个数组由 array 列中的 12 表示),每个数组有 5 个元素(键在 index 列中表示,值在 value 列中表示。

您可以存储任意数量的数组,以及任意数量的索引。

您还可以使用 GROUP BY 在 MySQL 中执行所需的数组比较计算。以下是如何找到 image_id 256 的所有数组中每个键的最小值(假设有 3 个数组):

SELECT   index, MIN(value) AS minvalue
FROM     image_meta
WHERE    image_id = 256
GROUP BY index

由于在 (image_id, array, index) 上设置了复合索引,因此这应该非常快。

这种设计还允许您为每张图像设置可变数量的索引和数组。

关于php - 在数据库中存储巨大的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755045/

相关文章:

java - 无法连接到数据库

php - 更改 ImageMagick 的 tmp

php - MySql 学说 : find if given variable is IN array property

php - 检查 SQL 数据库的值

php - 如何使用 php 在各个卡片中显示 MySql 表中的数据?

php - 尝试将 for i+ 放入 mysql 查询、php wordpress 中

java - 检查数组中是否存在范围内的所有值的最佳方法是什么? ( java )

c - 扫描 C 中每个测试用例的字符串输入

php - 在 PHP 中删除选定的记录

php - 如何在wordpress中通过jQuery/Ajax上传图片