Дизайн таблицы для пространственно-временных данных
-
28-10-2019 - |
Вопрос
Я заинтересован в лучших практиках для разработки реляционных таблиц DB для хранения пространственных данных. В частности, данные, которые будут храниться в таких таблицах, представляют собой пользовательскую геометрию, которые имеют определенное период достоверности, определение геометрии, а также иерархический аспект (определенные геометрии будут дети других геометрий).
Мне любопытно, если кто -то может указать мне на хороший материал на эту тему или может предложить конкретную реализацию.
Спасибо.
Решение
Я бы использовал постгис (http://postgis.refractions.net/) для типа геометрии и сделайте таблицу подобным:
CREATE TABLE data (
geometry geometry,
valid_from timestamp,
valid_till timestamp,
check(valid_till >= valid_from)
);
Postgis может задавать пространственные запросы, поэтому вы можете запросить базу данных для всех геометрий в определенной геометрии (например, запрос для всех геометрий в геометрии, представляющей штат или округ).
Чтобы получить период достоверности, вы должны добавить к этому запросу дополнительное условие для получения только строк, где (valid_from >= now() and valid_till <= now())
.
Вам также понадобятся индексы во всех трех столбцах, конечно. На колонке геометрии должен быть пространственный индекс.
Вся информация о пространственных запросах и геометрии и индексах геометрии, которые вы можете найти на сайте Postgis.