使用动态表重构EAV建模数据

时间:2012-02-14 19:10:35

标签: php mysql database refactoring

我的任务是重构一个目前使用EAV model进行数据存储的项目。

在某些实现中,主表包含数百万行。你可以想象,我认为这是令人厌恶的。

重构是由需要进行空间搜索驱动的,当你的lat和long在VARCHAR字段中以逗号分隔的文本存储时,这种搜索并不真正有用......但我离题了。


项目的性质意味着提前生成一组静态规范化表是不可能的。可以把它想象成一种动态表单构建器,其中新表单中的字段数量未知,下拉列表的选项数量未知等等。

我想要创造一个" DynamicTable" class,它将维护字段字典,并管理动态创建的表集。缓存已经很好地实现了(使用memcached),因此只需要在更改模式(初始提交后很少见)和重新启动时(甚至更罕见)查询字典。


我最初尝试充实甚至基本的东西让我意识到我想做的事情的全部规模,而我对类似项目的搜索却毫无结果。

任何人都可以:

  • 赞扬我当前的做法,祝我好运。
  • 推荐一种更好的替代方法,即使它不一定更容易。
  • 推荐我能看到的任何实现类似目标的项目(我的搜索没有产生任何结果!)

干杯!

1 个答案:

答案 0 :(得分:1)

然后回答我自己的问题。

接受Charles的建议我调查了几个NoSQL Document DB选项,最终决定使用MongoDB。

它非常适合我想要存储的数据类型,因此非常容易使用。