我正在寻找一种有效组织科学数据的方法。可能这将在HDF5中完成,因为这看起来非常方便,但我可以选择其他替代方案。唯一的限制是MATLAB和Python的可访问性。
我的数据是原始层次结构,看起来如下(所有数据都是无符号整数):
ID1|
|ModuleNumber1|
| |Table with 300 rows and 10 columns
|ModuleNumber2|
| |Table with 300 rows and 10 columns
|
....
|ModuleNumberX|
| |Table with 300 rows and 10 columns
ID2
|ModuleNumber1|
| |Table with 300 rows and 10 columns
|ModuleNumber2|
| |Table with 300 rows and 10 columns
|
....
|ModuleNumberX|
| |Table with 300 rows and 10 columns
....
IDX
|ModuleNumber1|
| |Table with 300 rows and 10 columns
|ModuleNumber2|
| |Table with 300 rows and 10 columns
|
....
|ModuleNumberX|
| |Table with 300 rows and 10 columns
乍一看,这似乎很清楚。只需使用HDF5来模拟这种层次结构,如
/ ID / ModuleNumber /
并在里面放一张桌子。 但是,当我以典型的用例方式检索数据时,这似乎很慢,如下所示:
由于此用例非常具体,因此组织我的数据可能比明显的分层数据更好。
例如,ID并不重要,仅用于选择后的目的。可以使ID成为ModuleNumber的属性以减少层数,但是需要对ModuleNumbers进行全局计数,这与数据库布局并不真正兼容。
我还可以想象一个没有层次结构的完全平面布局,其中有ID和ModuleNumber的附加列。
但直到现在我对自己的想法并不满意,也许任何人都可以帮助我找到更好的想法。
PS:我们谈论的规模是数千张表,文件大小在100MB-1G之间。目标是在阅读时尽可能快。这些文件是只读的,初始创建后不会被修改。
最佳,
尼科