Тип данных 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 она намного лучше, текущие документы находятся в текст ссылки