我正在开发一个符合GEDCOM标准的家谱社交网站。我们需要决定用户资料应该使用水平数据库结构还是垂直数据库结构。因此,我想知道何时使用水平数据库结构,何时使用垂直数据库结构。
我在购物网站上找到了一些答案,那里的字段未被确定:应该使用垂直数据库结构。但是,我对于家谱网站应该使用哪种结构感到困惑。我应该使用垂直还是水平的结构?
我在购物网站上找到了一些答案,那里的字段未被确定:应该使用垂直数据库结构。但是,我对于家谱网站应该使用哪种结构感到困惑。我应该使用垂直还是水平的结构?
垂直数据库非常适用于数据仓库和只读报告。通常情况下,您需要在夜间重新生成它们。然而,它们的写性能通常非常差,但是SELECT速度则快了10-100倍。
典型的使用垂直数据库的场景是olap报告,当您创建数据的(每日)快照,然后针对其运行查询。大部分好处来自于仅请求相对较少的字段的查询,例如,当您仅从宽且大的表格中选择一小部分字段时。这种查询针对数百万条记录进行(例如计算SUM/COUNT/AVG),只需要一两秒钟即可完成。
您的情况似乎不适合使用垂直数据库。
我同意tuinstoel的观点,垂直表/EAV系统不仅速度慢,而且有时非常复杂。有时需要编写一些自己的API方法来处理这些表格,开发人员只需处理这些方法以避免复杂性。
因此,如果您不需要添加更多字段,则应保持水平表。但是,如果您还需要支持多语言功能,则可能需要不同的表格。但我建议仍然坚持使用水平表。
我也正在开发一个涉及用户配置文件的网站,我正在使用水平表,如果将来需要不同的语言支持,则只会修改语言相关的字段。