【发布时间】:2010-11-29 11:46:04
【问题描述】:
我有许多具有不同属性的不同对象。到目前为止,我已经将数据保存在 XML 文件中,这些文件很容易允许不断变化的属性数量。但我正在尝试将其移至数据库。
您首选的存储这些数据的方式是什么?
目前我已经确定的一些策略:
- 在对象表中有一个名为“attributes”的字段,并将序列化或 json 化的数据存储在其中。
- 将数据存储在两个表(对象、属性)中,并使用第三个表来保存关系,使其成为真正的 n:m 关系。非常干净的解决方案,但获取整个对象及其所有属性可能非常昂贵
- 识别所有对象共有的属性,并为这些对象的表创建字段。将剩余的属性作为序列化数据存储在另一个字段中。与第一种策略相比,这具有优势,使搜索更容易。
有什么想法吗?
【问题讨论】:
-
转向数据库解决方案的动机是什么?您在下面说,速度是您主要关心的问题。您认为 db 解决方案会比您当前的 XML 方法更快吗?
-
第四种策略出现在 DVK 提出的相同建议中:将公共属性存储在对象表中,并使用 1:n 关系将所有其他属性存储在第二个表中。似乎是速度、灵活性和清洁解决方案的最佳折衷方案 (@Tobiask)
-
@Corey,不,我没有。目前,XML 解决方案的速度令人难以置信,我认为数据库无法跟上这一速度。这对我来说更像是一种练习,试图使系统在存储选项方面更加灵活,同时提高我的 MySQL 技能。