我们正在开发使用C ++编写的分布式软件,该软件必须处理巨大的静态文件,该文件包含数百万个BLOB数据,每个BLOB数据均由欧氏空间中的唯一2D,3D或4D点标识。文件的大小主要取决于点的数量/密度。
该文件存储在所有计算节点上安装的NFS目录中,由于基础架构的限制,必须以这种方式保留该文件。我们也无法安装任何第三方软件(例如DMBS)或更现代的文件系统。
每个计算节点将在此文件的“小”区域上工作,该区域由方框确定。该文件已建立索引,因此空间查询不是问题。
问题在于将BLOB从文件带入内存,因为它们的排序方式不支持局部性或预取,并且我们正在观察主要的性能下降。
在文件中在空间上彼此相邻的BLOB分组已被证明是一项巨大的改进,但是我们的操作方式需要微调几个分组参数,在一般情况下不可行,因此尽管如此算法本身可能存在分组的数据结构。
我们发现了几种用于加速查询的数据结构,但它们都没有直接解决存储问题,至少乍一看不是这样:
在我们开始评估这些树之前,是否应立即丢弃其中的任何树?还有其他类型的树可以解决问题吗?
谢谢。