Тип данных Postgres XML
В чем преимущества использования типа данных "xml" в сравнении с хранением содержимого xml внутри "текстового" типа данных?
Можно ли запросить какой-либо конкретный атрибут или элемент xml?
Как насчет индексирования и производительности запросов?
Помимо руководства postgresql, какие другие источники в Интернете вы можете указать мне?
Ответы
Ответ 1
Вообще говоря, преимущества те же, что и для любого другого типа данных, и почему у вас есть другие типы данных, кроме текста:
- Целостность данных
Вы можете хранить только достоверные (ну, хорошо сформированные) значения XML в столбцах типа xml.
- Безопасность типов
Вы можете выполнять операции только с XML-значениями, которые имеют смысл для XML.
Одним из примеров является функция xpath()
(путь XML Язык), который работает только с значениями типа xml, а не с текстом.
Показатели производительности индексирования и запросов не лучше или хуже, чем, например, тип текста на данный момент.
Ответ 2
В настоящее время самая большая вещь, которую вы получаете из полей XML над сырым текстом, - XPath. Итак, если у вас что-то похожее на
CREATE TABLE pages (id int, html xml);
вы можете получить название страницы 4
SELECT xpath('/html/head/title/text()', html) FROM pages WHERE id = 4;
В настоящее время поддержка XML довольно ограничена, но в 8.3 она намного лучше, текущие документы находятся в текст ссылки