关系模型与 EAV

Relational Model vs EAV

这里是数据库初学者。

我研究列存储模型有一段时间了,我想到了this paper。它主要针对稀疏和庞大的临床数据提出特殊的列存储模型以进行快速搜索。

我大体上理解这篇论文提出的内容,但对关系模型和 EAV 模型的一些想法让我感到困惑。该论文假设关系模型甚至不能用于临床数据,并比较了 EAV 和列存储模型的性能。

EAV can represent high dimensional data, which cannot be modeled by relational model because existing RDBMS only support a limited number of columns.

据我了解 this question 及其第一个答案,临床数据是高维的(如预期的那样)但

为什么不使用经典归一化而使用 EAV?

关系模型为:

Person: Id, Name, Surname, DateOfBirth, ...
Measurement: Id, Name, Desc, ...
PersonMeasurement: Id, PersonId, MeasurementId, Result, Date

...because existing RDBMS only support a limited number of columns.

这取决于术语"limited"的含义:典型的现代关系型数据库的列数超过1000。这里是table一些列的最大列数最常见的 RDBMS:

PostgresQL: 250 - 1600 depending on column types
MySQL: upto 4096, depending on row size
Oracle: 1000
IBM DB2: 1012
Mycrosoft SQL Server: 1024 - 30000
Sybase: 45000

在您的第二个 link 中有以下语句:

Data on health status of patients can be high-dimensional (100+ measured/recorded parameters from blood analysis, immune system status, genetic background, nutrition, alcohol- tobacco- drug-consuption, operations, treatments, diagnosed diseases, ...)

已编辑

因此,如果列数为数百,我认为单一 table 方法足以表示临床数据,而且,正如您从 Whosebug 上的许多问题中看到的那样,比 EAV 模型更高效、更易于查询。