【发布时间】:2018-01-07 13:32:59
【问题描述】:
我有以下数据库结构,存储在关系数据库中:
- 两个事实表,每个表大约有 8000 万行
- 具有 300,000 - 500,000 行的三个维度表
- 两个事实表都有 3 个外键用于连接维度表
- 一个安全表还有 3 个外键用于连接维度表
一位开发人员正在使用我的数据创建一个使用列式数据库的应用程序。他们一直遇到性能问题,当我建议向他们的表中添加索引/键时,他们说索引列式数据库不会提高性能。结果,他们要求我将事实表与维度表结合起来。
这似乎与我对数据库管理基本原则的了解相矛盾。列式数据库真的不能使用索引来提高性能吗?应采取哪些步骤来优化柱状性能?
我在求高阶资料,不过为了完整起见,关系型数据库是Teradata,列型数据库是SAP HANA。
【问题讨论】:
-
请阅读this article
-
我不熟悉 SAP HANA,但我可以告诉您另一个列式数据库 (MariaDB Columnstore),它根本不允许您显式定义索引。存储的构建方式消除了对索引的需求。理论上,列式数据库擅长阅读(适用于大表)但不擅长写作。至少 MariaDB Columnstore 非常适合这个描述。
-
“关系”是关于用户对数据的看法——作为表格——&并不暗示任何关于实施的事情。
标签: sql database-design relational-database query-optimization columnstore