慢速IO设备上的空间数据的数据结构/分类

时间:2019-04-06 12:44:16

标签: c++ networking data-structures storage spatial

我们正在开发使用C ++编写的分布式软件,该软件必须处理巨大的静态文件,该文件包含数百万个BLOB数据,每个BLOB数据均由欧氏空间中的唯一2D,3D或4D点标识。文件的大小主要取决于点的数量/密度。

该文件存储在所有计算节点上安装的NFS目录中,由于基础架构的限制,必须以这种方式保留该文件。我们也无法安装任何第三方软件(例如DMBS)或更现代的文件系统。

每个计算节点将在此文件的“小”区域上工作,该区域由方框确定。该文件已建立索引,因此空间查询不是问题。

问题在于将BLOB从文件带入内存,因为它们的排序方式不支持局部性或预取,并且我们正在观察主要的性能下降。

在文件中在空间上彼此相邻的BLOB分组已被证明是一项巨大的改进,但是我们的操作方式需要微调几个分组参数,在一般情况下不可行,因此尽管如此算法本身可能存在分组的数据结构。

我们发现了几种用于加速查询的数据结构,但它们都没有直接解决存储问题,至少乍一看不是这样:

  • R树
  • Kd-树
  • BSP树
  • 八叉树
  • hB树
  • VP树

在我们开始评估这些树之前,是否应立即丢弃其中的任何树?还有其他类型的树可以解决问题吗?

谢谢。

0 个答案:

没有答案