나는 지금 문제에 직면하고 있으며 올바른 해결책이 무엇인지 잘 모르겠습니다. 나는 그것을 설명하려고 노력할 것이고 누군가 나를 위해 좋은 해결책을 가지기를 바란다 :가장 적합한 검색 알고리즘은 무엇입니까?
나는 두 개의 큰 데이터 배열을 가지고있다. 50^3 ~ 150^3 데이터 샘플 (대개 50과 100 사이의 희귀 최악의 경우 시나리오 150)을 사용하여 탐색하는 대상입니다. 모든 샘플에 대해 같은 크기의 다른 구조체에 대한 쿼리를 만들고 싶습니다 (전체 조합 수가 너무 많아서 모두 탐색 할 수는 없습니다).
쿼리가 정확히 예측할 수는 없지만 대개 다음과 같습니다. 구조체 필드가 있습니다. (편집 : 총 10 ~ 20 개의 int 필드와 비슷합니다). 쿼리는 다음과 같습니다. < 20 및 B> 100, D> 200 예, SQL과 매우 비슷합니다.
데이터베이스에 넣으려고했지만 실제로는 독립형 데이터베이스가 될 것이므로 RAM을 사용하여 작업 속도를 더욱 빠르게 할 수 있습니다 (속도는 필수 기준 임).
GPGPU를 사용하여 무언가를 시도해 보았지만 검색이 병렬 일 수는 있지만 끔찍한 생각 인 것 같습니다. 예측할 수없는 결과를 검색하는 것이 좋은 아이디어는 아닙니다. (if if 누군가 내 이해가 옳다면 내가이 해결책을 용서해야한다는 것을 확인하는 데 도움이 될 것이라고 말할 수있다.) 편집 : 결과의 nubmer는 쿼리 특성으로 인해 예측할 수 없지만 적합성이 낮은 조합을 찾기 위해 목적이 적절하기 때문에 상당히 낮습니다.
그런 다음 DB를 사용할 수 있으므로 RAM B- 트리? 그것은 해결책에 가까운 것처럼 보이지만 그것은 무엇입니까? 그렇다면 색인을 어떻게 작성해야합니까? 다차원 검색이 항상 존재하기 때문에 실제로 다차원 인덱스를 수행 할 수 있습니까? 아마도 UB-Tree 나 R-tree가 그 일을 할 수있을 것입니다.하지만 두 번째 데이터 샘플에서는 중복이있을 수 있으므로 R-TREE를 적용 할 수 없습니까?). 문제는, 지금 당장은 모든 사람들을 제대로 이해하고 있는지 확신 할 수 없기 때문에, 나무 중 하나 (그리고 gpgpu, 심지어 생각하지도 않았던 솔루션)를 알고 있다면, 어느 솔루션을 사용해야하는지 알 수 있습니다. 탐구하고 배우고 실행한다.
답변 해 주셔서 감사합니다. 나는 정확하게 추측 할 수있는 정밀도를 가지고있다 : 샘플은 꽤 낮다 : 샘플 당 8 ints와 같아서 16으로 증가 할 수있다. 내가 지금하고있는 방식은 이미 최상의 시나리오에서 만족스럽고 RAM에 적합하다. D : 예측할 수없는 결과가 실제로 정확하지 않았습니다. 결과의 수는 예측할 수 없습니다 (내 쿼리가 작동하는 방식 때문에).하지만 목적은 다음과 같습니다. 소프트웨어는 좋은 조합의 수가 적기 때문에 RAM에 이미 맞춰져 있습니다. – leprov
그리고 메모리 데이터베이스에 관해서는, 내가 뭘보고 있는지, 다소 있습니다. 그러나 일단 기억 데이터베이스를 보았을 때, 나의 질문은 나의 특정한 필요에 따라, 나의 필요에 잘 맞는 특정한 나무 구조가없고, 내가 사용할 수있는 것이 아닌가하는 것이다. 즉, 낮은 수준으로 이동하면 내 쿼리를 훨씬 빠르게 수행 할 수있는보다 적합한 도구를 제공 할 수 있습니까? – leprov
솔직히 말해서 MemSQL에 대해 잘 모릅니다. 그러나 대부분의 데이터베이스는 상황이 만족스러운 방식으로 처리되는 과정을 조정할 수 있도록합니다. 필요한 각각의 문서에서 거의 모든 것을 찾을 수 있습니다. 이는 모든 데이터베이스에 많이 사용되고 좋은 일입니다. 그렇지 않은 경우 언제든지 각 데이터베이스 팀/회사에 직접 문의 할 수 있습니다. 그들에게는 이런 종류의 일을위한 포럼이 있습니다. 행운을 빌어 요. –