Смешивание типов геометрии в одной таблице PostGIS

24

Я столкнулся со следующей проблемой. Я должен перейти с базы данных Oracle на PostgreSQL + PostGIS. В настоящее время все геометрии всех типов хранятся в одной таблице, и каждая запись содержит поле «крышка», которое указывает особенности одного и того же слоя.

Каковы плюсы и минусы использования такого метода? Стоит ли разбивать данные на несколько таблиц, если мне не нужно использовать базу данных со сторонним программным обеспечением? Как насчет производительности пространственных запросов, помогут ли мне индексы?

drnextgis
источник
О каких «типах» вы говорите? Это многоугольник, линия и точки? Или это такие типы, как «дороги», «реки» и т. Д.?
Пабло
Я имею в виду типы геометрии, такие как полигоны, линии и точки.
drnextgis

Ответы:

24

Если вам не нужна сторонняя поддержка и вы не видите необходимости в запросе по типу, сохраняя их в одной и той же таблице, все будет в порядке. В качестве альтернативы вы можете использовать модель наследования, как описано в главе 3 PostGIS in Action.

http://www.postgis.us/chapter_03_edition_1

С точки зрения архитектуры PostGIS на самом деле не волнует, используется ли в запросе несколько разных типов. Если в Oracle все работает нормально, то в PostGIS это будет не лучше.

Есть две причины, чтобы разделить его (и любой из них можно сделать позже по мере необходимости): 1) Запретить людям вставлять разные типы, которые вам не нужны, например, коллекции геометрии, круглые строки, а что нет (что вы можете просто определить ограничение вручную. )

2) Если у вас есть миллиард точек и 1000 полигонов, и вы много тестируете в тестах полигонов, скорость будет намного выше, если вы запрашиваете и выполняете объединение - против таблицы записей от миллиарда до 1000, а не таблица рекордов от миллиарда до миллиарда. Я думаю, это относится к любой пространственной базе данных (не относится только к PostGIS). Это верно для всех реляционных запросов, я бы тоже догадался (не только для пространственных запросов).

LR1234567
источник
1
Для удобства людей, возвращающихся к этому сейчас: в PostGIS в действиях 2-го издания это было перенесено в
раздел
11

Этот действительно беспокоит меня. Я думаю, это потому, что я видел слишком много файлов САПР с данными на одном слое, различающихся только по цвету.

На самом деле все сводится к выбору организации данных по структуре или по атрибутам .

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

Для начала, при обработке данных у вас есть на один обруч меньше, например, для выбора a, b, c из таблицы, где id = X, в отличие от выбора a, b, c из таблицы, где id = X AND lid = Y )

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

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

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

Марк Ирландия
источник
1
Я согласен с вами в том, что сценарий ОП, возможно, грязный (мы не знаем предысторию), но вы рассматриваете его немного драматично. Это не почти катастрофический переворот, который вы описываете. Мне все равно, если это для повседневного использования или для ETL в новую систему / архитектуру, все это можно легко упростить с помощью нескольких представлений и нескольких правильных индексов, и они могут быть записаны в считанные минуты. даже если есть несколько уникальных lidзначений.
elrobis