factograf
RU

SQL:2011

SQL:2011 или ISO/IEC 9075:2011 (под общим названием «Информационные технологии — Языки баз данных — SQL») — седьмая редакция стандарта ISO (1987) и ANSI (1986) для языка запросов к базам данных SQL. Он был официально принят в декабре 2011 года. Следующая версия — SQL:2016.

Новые возможности

Одной из главных новых функций является улучшенная поддержка хронологических баз данных. Улучшения языка для определения и обработки хронологических данных включают:

  • Определения временных периодов используют два стандартных столбца таблицы в качестве начала и конца именованного временного периода с семантикой замкнутого множества/открытого множества. Это обеспечивает совместимость с существующими моделями данных, кодом приложения и инструментами
  • Определение таблиц периодов времени приложения (иначе называемых таблицами текущего времени) с использованием аннотации PERIOD FOR
  • Обновление и удаление строк времени приложения с автоматическим разделением периода времени
  • Временные первичные ключи, включающие периоды времени приложения с необязательными неперекрывающимися ограничениями через выражение WITHOUT OVERLAPS
  • Временные ограничения ссылочной целостности для исторических таблиц приложения
  • Данные из исторических таблиц приложения извлекаютсяя с использованием обычного синтаксиса запросов или с использованием новых временных предикатов для периодов времени, включая CONTAINS, OVERLAPS, EQUALS, PRECEDES, SUCCEEDS, IMMEDIATELY PRECEDES и IMMEDIATELY SUCCEEDS (которые являются модифицированными версиями интервальных отношений Аллена)
  • Определение системно-версионных таблиц (иначе называемых таблицами времени транзакций) с использованием аннотации PERIOD FOR SYSTEM_TIME и модификатора WITH SYSTEM VERSIONING. Системные периоды времени поддерживаются автоматически. Ограничения для системных таблиц с версиями не обязательно должны быть временными и применяются только к текущим строкам.
  • Синтаксис для запросов с временными срезами и последовательностями для системных исторических таблиц с помощью предложений AS OF SYSTEM TIME и VERSIONS BETWEEN SYSTEM TIME ... AND ....
  • Время приложения и системное управление версиями могут использоваться совместно для работы с битемпоральными таблицами.

Реализация в СУБД

SAP HANA 2.0 SP03 поддерживает системные версии таблиц с использованием стандартного синтаксиса выбора FOR SYSTEM_TIME AS OF '<timestamp1>' SAP HANA 2.0 SP04 добавляет (частичную) поддержку версионирования во время выполнения приложения.

IBM DB2 версии 10 заявлена как первая база данных, которая имеет соответствующую реализацию этой функции, названной как «Time Travel Queries»(Запросы, путешествующие во времени), хотя они используют альтернативный синтаксис FOR SYSTEM_TIME AS OF.

Oracle 12c поддерживает временную функциональность в соответствии с SQL:2011. Версии 9i, 10g и 11g реализуют запросы с временными сдвигами с помощью так называемых Flashback Queries, используя альтернативный синтаксис AS OF TIMESTAMP. Примечательно, что обе реализации Oracle зависят от сегменте отката базы данных и поэтому допускают только временные запросы к недавним изменениям, которые ещё сохраняются в сегменте отката.

Microsoft SQL Server (версия 2016) реализует хронологические таблицы с помощью конструкции SYSTEM_VERSIONING.

MariaDB 10.3 реализует таблицы с системными версиями. MariaDB 10.4.3 добавила поддержку для таблиц с версионированием приложений.

PostgreSQL требует установки расширения temporal_tables. Расширение Temporal Tables поддерживает только хронологические таблицы с системным периодом, и не соответствует дизайну SQL:2011.

Ebean ORM поддерживает запросы History AS OF и VERSIONS BETWEEN в PostgreSQL и MySQL с использованием триггеров, таблиц истории и представлений.

CockroachDB поддерживает запросы AS OF SYSTEM TIME начиная с версии 1.0.7.

Читать дальше

На 7 языках

Текст из Википедии, CC BY-SA 4.0 · Статья-источник