水平数据库和垂直数据库

6
我正在开发一个符合GEDCOM标准的家谱社交网站。我们需要决定用户资料应该使用水平数据库结构还是垂直数据库结构。因此,我想知道何时使用水平数据库结构,何时使用垂直数据库结构。
我在购物网站上找到了一些答案,那里的字段未被确定:应该使用垂直数据库结构。但是,我对于家谱网站应该使用哪种结构感到困惑。我应该使用垂直还是水平的结构?
3个回答

8
我假设您使用像Mysql、Ms sql、Sqlite、Postgresql或Oracle这样的关系数据库进行存储?
Gedcom是一种信息交换标准,所以您知道会有多少列。也许未来会通过新属性扩展该标准,但可能不会有很多新属性。您可以轻松地通过添加一些新列来扩展表。
我会使用'水平'表而不是实体-属性值系统(垂直表)。垂直表系统往往较慢。它们无法被正确索引并且会混淆查询优化器。
当用户可以在其个人资料中定义新属性(如眼睛颜色或最喜欢的颜色)时,情况就变得不同了。您希望这些配置文件有多灵活?

我正在使用 SQL Server 2008。用户将不被允许添加新属性。 - Radhi

3

垂直数据库非常适用于数据仓库和只读报告。通常情况下,您需要在夜间重新生成它们。然而,它们的写性能通常非常差,但是SELECT速度则快了10-100倍。

典型的使用垂直数据库的场景是olap报告,当您创建数据的(每日)快照,然后针对其运行查询。大部分好处来自于仅请求相对较少的字段的查询,例如,当您仅从宽且大的表格中选择一小部分字段时。这种查询针对数百万条记录进行(例如计算SUM/COUNT/AVG),只需要一两秒钟即可完成。

您的情况似乎不适合使用垂直数据库。


0

我同意tuinstoel的观点,垂直表/EAV系统不仅速度慢,而且有时非常复杂。有时需要编写一些自己的API方法来处理这些表格,开发人员只需处理这些方法以避免复杂性。

因此,如果您不需要添加更多字段,则应保持水平表。但是,如果您还需要支持多语言功能,则可能需要不同的表格。但我建议仍然坚持使用水平表。

我也正在开发一个涉及用户配置文件的网站,我正在使用水平表,如果将来需要不同的语言支持,则只会修改语言相关的字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接