我有一个由64位整数元组(x,y)组成的数据集合。我可能有数万亿这样的元组,将数据集存储在地球上任何一台计算机内存中都是不可行的,但将它们存储在磁盘上就非常合理。
我有一个磁盘存储器(B + -tree),可以快速且并发地查询单维度数据,但我的一些查询依赖于两个维度。
例如查询:
找到x大于或等于某个给定值的元组
找到x尽可能小,使得该元组的y大于或等于某个给定值
找到x尽可能小,使得该元组的y小于或等于某个给定值
执行维护操作(插入某些元组,删除某些元组)
我发现最好的解决方案是使用Z-order曲线,但我似乎无法想出如何针对我的二维数据集进行查询。
不可接受的解决方案包括数据的顺序扫描,因为这可能会非常慢。
我有一个磁盘存储器(B + -tree),可以快速且并发地查询单维度数据,但我的一些查询依赖于两个维度。
例如查询:
找到x大于或等于某个给定值的元组
找到x尽可能小,使得该元组的y大于或等于某个给定值
找到x尽可能小,使得该元组的y小于或等于某个给定值
执行维护操作(插入某些元组,删除某些元组)
我发现最好的解决方案是使用Z-order曲线,但我似乎无法想出如何针对我的二维数据集进行查询。
不可接受的解决方案包括数据的顺序扫描,因为这可能会非常慢。