Полуструктурированные данные [1] — это форма структурированных данных , которая не подчиняется табличной структуре моделей данных, связанных с реляционными базами данных или другими формами таблиц данных , но тем не менее содержит теги или другие маркеры для разделения семантических элементов и обеспечения иерархий записей и полей в данных. Поэтому ее также называют самоописывающейся структурой.
В полуструктурированных данных сущности, принадлежащие к одному классу, могут иметь разные атрибуты, даже если они сгруппированы вместе, а порядок атрибутов не важен.
Полуструктурированные данные все чаще встречаются с появлением Интернета , где полнотекстовые документы и базы данных больше не являются единственными формами данных, и различным приложениям требуется среда для обмена информацией . В объектно-ориентированных базах данных часто встречаются полуструктурированные данные.
XML [2], другие языки разметки, электронная почта и EDI — все это формы полуструктурированных данных. OEM (Object Exchange Model) [3] был создан до XML как средство самоописания структуры данных. XML был популяризирован веб-сервисами, которые разрабатываются с использованием принципов SOAP .
Некоторые типы данных, описанные здесь как «полуструктурированные», особенно XML, страдают от впечатления, что они не способны к структурной строгости на том же функциональном уровне, что и реляционные таблицы и строки. Действительно, представление XML как изначально полуструктурированного (ранее его называли «неструктурированным») затруднило его использование для расширяющегося спектра приложений, ориентированных на данные. Даже документы, обычно считающиеся воплощением полуструктуры, могут быть разработаны практически с той же строгостью, что и схема базы данных , подкрепленные схемой XML и обработанные как коммерческими, так и пользовательскими программами, без снижения их удобства для чтения людьми.
В связи с этим XML можно назвать языком, имеющим «гибкую структуру», способным к ориентированному на человека потоку и иерархии, а также к весьма строгой структуре элементов и типизации данных.
Однако концепция XML как «удобочитаемого человеком» может быть принята лишь до определенной степени. Некоторые реализации/диалекты XML, такие как XML-представление содержимого документа Microsoft Word, реализованное в Office 2007 и более поздних версиях, используют десятки или даже сотни различных видов тегов, которые отражают определенную проблемную область — в случае Word, форматирование на уровне символов, абзацев и документа, определения стилей, включение ссылок и т. д. — которые вложены друг в друга сложным образом. Понимание даже части такого XML-документа путем его чтения, не говоря уже об обнаружении ошибок в его структуре, невозможно без очень глубокого предварительного понимания конкретной реализации XML, а также с помощью программного обеспечения, которое понимает использованную XML-схему. Такой текст не является «удобочитаемым человеком» больше, чем книга, написанная на суахили (использующем латинский алфавит), была бы для американца или западного европейца, не знающего ни слова на этом языке: теги — это символы, которые бессмысленны для человека, незнакомого с этой областью.
JSON или JavaScript Object Notation — это открытый стандартный формат, который использует понятный человеку текст для передачи объектов данных. JSON был популяризирован веб-сервисами, разработанными с использованием принципов REST .
Такие базы данных, как MongoDB и Couchbase, изначально хранят данные в формате JSON, используя преимущества архитектуры полуструктурированных данных.
Полуструктурированная модель — это модель базы данных , в которой нет разделения между данными и схемой , а объем используемой структуры зависит от цели.
Преимущества данной модели следующие:
Основной компромисс, который достигается при использовании полуструктурированной модели базы данных , заключается в том, что запросы не могут быть сделаны так же эффективно, как в более ограниченной структуре, такой как в реляционной модели . Обычно записи в полуструктурированной базе данных хранятся с уникальными идентификаторами, на которые ссылаются указатели на их местоположение на диске. Это делает навигационные или основанные на путях запросы довольно эффективными, но для выполнения поиска по многим записям (что типично для SQL ) это не так эффективно, поскольку необходимо искать по диску, следуя указателям.
Модель обмена объектами (OEM) — это один из стандартов для выражения полуструктурированных данных, другой способ — XML .