나는 내 데이터 집합을 구성하는 64 비트 정수의 튜플 집합 (x,y)
을 가지고있다. 나는 말하자면, 수조 개의 튜플을 가지고있다. 그것은 지구상의 모든 기계에있는 메모리에 데이터 세트를 유지하는 것이 가능하지 않습니다. 그러나 디스크에 저장하는 것이 좋습니다.다차원 데이터를 보유한 B + 트리를 효율적으로 질의
나는 하나의 차원에서 데이터를 빠르고 동시에 질의 할 수있는 디스크상의 저장소 (B + -tree)를 가지고있다. 그러나 일부 쿼리는 두 차원 모두에 의존합니다.
쿼리 예제 :
x
일부가 주어진 값x
튜플을 찾아보다 이상인 튜플 찾기 s.t. 가능한 한 작은 그것은y
이 주어진 값보다 크거나 같음x
이 가능한 작은 s.t. 인 튜플을 찾습니다.y
는
내가 찾은 최선의 방법은 Z 순서 곡선하지만 내가 알아낼 수 없습니다 (일부 튜플을 일부 튜플을 삽입, 제거)
허용되지 않는 솔루션에는 데이터의 순차적 스캔이 포함되며 이는 너무 느릴 수 있습니다.
나는 이것이 단지 쿼리 예제 일 뿐이라고 생각한다. 즉, 두 변수에 대해 최대 4 개의 다른 지수 (즉, x, y, x + y 및 x-y)가 있다고 가정합니다. :) –
이것은 작동하지 않습니다. 예제 2를 취하십시오. 가능한 최소의'x '로 적어도 20의 y를 찾고 있습니다. 'y'와'x'를 연결하고'y + x'보다 크거나 같음을 만드는 쿼리는'20 + 0'처럼 보일 것입니다. 이것은'20 + 50'을 찾을 수 있지만'21 + 10'을 건너 뛰는 것입니다. – user1290696
내 잘못 - 나는 정말로 2d 인 쿼리의 요구 사항을 이해하지 못했습니다. 나는 다른 대답을 시도 할 것이다. – antlersoft