Опция встроенной пространственной базы данных 3D+

Мы разрабатываем приложение, которое должно запрашивать 3D-формы (а также запрашивать на основе других параметров) в ограничивающей рамке. Количество фигур больше, чем я хочу хранить в памяти, поэтому мне нужна база данных, чтобы справиться с этим.

В частности, наши основные операции — это вставки и запросы. Мы никогда не модифицируем существующие данные.

Поскольку это настольное приложение, я стараюсь избегать отдельных типов серверов PostgreSQL и MySQL, надеясь на что-то более простое для развертывания. Я нашел Spatialite, но он не индексирует 3-е измерение, поэтому он не будет работать.

Я попытался найти базу данных kd-tree, но пока ничего не нашел. Я знаю, что существуют реализации kd-дерева, но получение его в форме базы данных потребовало бы больших усилий, чтобы развернуть нашу собственную, поэтому я пытаюсь посмотреть, есть ли уже что-то.

Приложение написано на Haskell, но если нам нужно интегрироваться с каким-то другим языком, мы можем с этим справиться.


person mentics    schedule 05.05.2011    source источник
comment
Это может быть актуально: sqlite.org/rtree.html   -  person Jay Sullivan    schedule 05.05.2011
comment
@notfed, пожалуйста, опубликуйте это как ответ, поскольку это, безусловно, разумное решение.   -  person mentics    schedule 07.05.2011


Ответы (2)


деревья R*SQLite

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

person Jay Sullivan    schedule 06.05.2011
comment
Скорость вставки тысяч в секунду. Скорость запроса определяется количеством результатов: несколько результатов очень быстро, несколько миллисекунд, но 100 000 результатов занимают сотни миллисекунд. Но я понимаю, что наши требования к запросу нереалистичны. Желание 10 000 за долю секунды не будет наивным. Так что... возможно, нам все-таки придется сделать для этого что-то особенное. - person mentics; 07.05.2011

Я бы с уважением оспорил вашу попытку избежать использования PostgreSQL/MySQL. У меня есть опыт работы с PostgreSQL, и он выполняет нужную вам работу, и его несложно администрировать. Конечно, все остальное, что вы найдете, не будет иметь того же уровня разработки и тестирования, что и PostgreSQL — так зачем беспокоиться?

person Sarge    schedule 05.05.2011
comment
Как простой нетехнический пользователь, если бы вы установили приложение для рисования, хотели бы вы администрировать для него базу данных postgresql? У нас есть очень четкое требование, для которого действительно любая СУБД SQL является излишним, но я вижу, можем ли мы использовать что-то существующее, чтобы избежать написания всего кода управления и кэширования на уровне дисков, когда он уже был написан много раз в существующих базах данных. - person mentics; 07.05.2011