Существует ли какая-либо существующая база данных (предпочтительнее встроенная), поддерживающая большой миниатюрный поиск? - PullRequest
1 голос
/ 31 декабря 2011

Я хотел бы построить приложение C ++ поверх базы данных, которая может поддерживать многомерный поиск (например, KDTree или RTree). SQLite с включенным R-деревом поддерживает только до 5 измерений, что намного меньше, чем мне нужно. Любое предложение?

1 Ответ

0 голосов
/ 13 января 2012

Что ж, запросы действительно имеют смысл смысл таким образом?Евклидово расстояние - это разумное расстояние для 2D и 3D геометрических данных.Но даже для «пространства-времени» это действительно не имеет смысл.Поскольку 1 секунда - это нечто совершенно отличное от 1 метра.

Сначала решите, какой тип расстояния является разумным, а затем подумайте, какой индекс подходит.В зависимости от ваших запросов вам могут понадобиться очень разные индексы.

Здесь нет «одного размера для всех».Индекс, который хорошо работает для одной задачи и одного набора данных, вероятно, будет хуже, чем линейное сканирование - в частности, с высокой размерностью - для другой.

Динамические данные и статические данные опять-таки сильно отличаются друг от друга.Динамически поддерживать сбалансированное дерево на намного сложнее, чем загружать R-дерево с помощью STR и просто запрашивать его с помощью оконных запросов.Это всего лишь пара строк, которые хороший кодировщик сможет сделать за несколько дней.

Возможно, вы захотите прочитать о проблемах многомерных данных, например, , эта довольно сбалансированная статья о«проклятие размерности» (существует множество статей, в которых говорится, что «вы не можете индексировать многомерные данные» в качестве оправдания неспособности сделать это, по крайней мере, в этом разделе приведены некоторые примеры того, когда вы можете и когдаВы не можете).

...