如何在磁盘或数据库上存储稀疏可查询矩阵?

mpa*_*raz 7 database-design data-structures

我需要在磁盘上存储稀疏矩阵.它就像一个包含数百万行和数千列的数据库表,其中许多或大多数列为空.它需要是可查询的,就像某些列上带有WHERE的SQL SELECT一样.

我的具体要求是Java.我首先想到使用Berkeley DB for Java来模拟表,但是它不支持基于值的查询.

然后,我考虑使用常规SQL数据库.例如,创建仅包含行ID,列ID和值的模式.虚拟行将是具有相同ID的所有实际行.但是,这看起来像数据库滥用.

有任何想法吗?

Dou*_*rie 3

当阅读问题标题时,我想到的第一件事是每个 (x,y) 一个数据库行,正如您在倒数第二段中所建议的那样。

另一件需要注意的事情是,数据库经常压缩行,特别是对于 NULL,因此直接表示可能不会像您想象的那样浪费那么多空间。