最佳数据存储-三重存储/关系数据库/其他


Optimal data storage - triple store / relational db / other?

我正在用PHP在Apache服务器上构建一个web应用程序。

该应用程序包含大量关于人员的可选数据。根据人的类别(一个人可以属于5个类别),他们可以选择指定数据或不指定数据:家庭地址(== 5个字段,分别是街道、城市、国家等)、工作地址(同样是5个字段)、年龄、电话号码、....当然,应用程序也会存储一些额外的数据(创建,最后更新,用户名,密码,用户级别,…)。

当前/过时版本的应用程序在"用户"表中有86个字段,并且(取决于人的类别)扩展了一个包含另外23个字段的额外表(1-1关系)。

所有这些都存储在Postgresql数据库中。

我想知道这是否是处理这类数据的最好方法。大多数记录都有(很多)空字段,这使得数据库更大,查询更慢。是否值得寻找其他解决方案,如Triple Store,或者我是否过于担心它,我是否应该保持当前的设置?为站点的每一个新用途向表中添加字段似乎很奇怪,而且感觉很尴尬。另一方面,我觉得三家店还不常见。任何指针,或建议如何处理这个问题?

我读过Toby Segaran和其他人写的《编程语义网》,但是从那本书中我得到的印象是三重存储和RDF的主要优势是通过网络交换信息(这不是我的应用程序的目标)

大多数记录有(很多)空字段

这意味着你的数据远没有标准化。

当前/过时版本的应用程序在"用户"表中有86个字段,并且(取决于人的类别)扩展了一个包含另外23个字段的额外表(1-1关系)。

的确,是的,距离标准化还有很长的路要走。

如果你有一个很好的理由离开你现在的位置,那么第一步就是更好地组织你的数据。即使您选择迁移到不同类型的DBMS,例如noSQL或object db.

这不仅节省了DBMS中的空间,还使检索数据更快,减少了您需要编写的代码量(例如,如果您有一个用于'address'的单表,并且带有标记地址类型的字段,则可以重用用于维护家庭地址和维护工作地址的相同代码)。

网络上有很多资源(除了上面的维基百科链接)描述了如何应用规范化规则(它在1,2,3之后开始有点涉及-但如果你能掌握这些,那么你就可以很好地承担大多数任务)。