【发布时间】:2011-03-07 14:23:23
【问题描述】:
我有一个设计决定要做,我正在寻找一些最佳实践建议。我有一个需要在 MySQL 数据库中存储大量(每天几百个)浮点数组的 java 程序。数据是一个固定长度Double长度为300的数组。我可以看到三个合理的选项:
- 将数据存储为 BLOB。
- 序列化数据并将其存储为 VARCHAR。
- 将数据作为二进制文件写入磁盘,并改为存储对它的引用。
我还应该提到,这些数据将被频繁读取和更新。
我想使用 BLOB,因为这是我过去所做的,而且它似乎是最有效的方法(例如,保持固定宽度且无需转换为逗号分隔的字符串)。然而,我的同事坚持认为我们应该序列化和使用 varchar,原因似乎大多是教条的。
如果其中一种方法比另一种更好,是 Java 还是 MySQL 特有的原因?
【问题讨论】:
-
要真正回答您关于 VARCHAR 与 BLOB 的具体问题:选择 BLOB! VARCHAR 将占用更多空间并且操作起来会更慢。操作起来也很尴尬(总是来回转换)。至于关于 300 ROWS 与 1 ROW 的讨论,如下面的 Bill Karwin 所示:300 行方法将占用至少 2 倍的空间,而且速度会更慢。我也怀疑操作起来会更尴尬; IE。您将需要在应用程序中编写更多代码来处理这种方法。 BLOB在这里很好。单独留下工作代码也很好。
-
+2 给 Julius 以回答具体问题,+1 给 Bill 以获得建议
标签: java mysql arrays blob varchar