Oracle Database 23c

Oracle Database 23c предоставляет самую полную и удобную конвергентную базу данных для разработчиков, которые хотят создавать новые микросервисы, графы, документы и приложения на основе реляционных баз данных.

Раз в неделю мы знакомим вас с новой функцией Oracle Database 23c и приводим примеры, чтобы вам было проще начать пользоваться этой версией. Сохраните эту страницу и заходите каждую неделю, чтобы узнать о каких новых функциях мы рассказали.

Обзор функции

С праздниками!

Мы завершаем 2023 год, и вот обзор новых возможностей Oracle Database 23c, которые мы освещали в течение года. Если у вас еще не было возможности попробовать нашу последнюю версию Oracle Database, особенно если вы разработчик, ознакомьтесь с различными вариантами здесь или на oracle.com/database/free.

Возможности, представленные ранее:

Блокчейн-таблицы

Блокчейны и неизменяемые таблицы, доступные с момента выпуска Oracle Database 19c, используют методы криптобезопасности, чтобы защитить данные от несанкционированного вмешательства или удаления внешними хакерами и мошенниками или недобросовестными внутренними пользователями. Сюда, например, относятся ограничения, не позволяющие проводить других операций кроме вставки: они предотвращают обновление и удаление данных (даже администраторами БД). Другой пример — криптографические хеш-цепочки, позволяющие выполнять проверку, подписанные табличные дайджесты для обнаружения крупномасштабных откатов, а также подписание конечным пользователем вставленных строк с использованием закрытых ключей. В Oracle Database 23c внесено множество усовершенствований, включая поддержку логической репликации с помощью Oracle GoldenGate и последовательных обновлений с использованием Active Data Guard, поддержку распределенных транзакций, включающих блокчейн-таблицы, эффективное пакетное удаление на основе разделов для просроченных строк и оптимизацию производительности для вставки и фиксаций.

В этой версии также появилась возможность добавлять и удалять столбцы, не затрагивая криптографическую цепочку хешей, пользовательские цепочки и дайджесты таблиц для отфильтрованных строк, возможность делегирования подписи и применение второй подписи для баз данных. Кроме того, теперь можно применять криптобезопасные инструменты управления данными к обычным таблицам, включив аудит предыдущих изменений в таблице, не являющейся блокчейн-таблицей, с помощью архива Flashback, для которого настроено использование таблицы истории блокчейна.

Эти возможности отлично подходят для сценариев отслеживания операций и ведения журналов, они могут использоваться для финансовых книг, истории платежей, отслеживания соблюдения нормативных требований, юридических ведомостей и любых данных, представляющих активы, в которых манипулирование или удаление может привести к значительным юридическим, репутационным или финансовым последствиям.



Логический тип данных

Oracle Database теперь поддерживает данные логического типа, соответствующие стандарту ISO SQL. Это означает, что можно хранить значения True и False в таблицах и использовать логические выражения в SQL-запросах. Логический тип данных стандартизирует хранение значений «Да» и «Нет» и упрощает миграцию в Oracle Database.



Асинхронное программирование и конвейерная обработка драйверов баз данных

С Oracle Database 23c функция конвейерной обработки (Pipelining) позволяет приложениям .NET, Java и C/C++ отправлять в базу данных несколько запросов, не дожидаясь ответа от сервера. СУБД Oracle Database ставит эти запросы в очередь и обрабатывает их один за другим, позволяя клиентским приложениям продолжать работу до уведомления о завершении запросов. Эти усовершенствования обеспечивают лучшую работу с конечными пользователями, повышение скорости отклика приложений, основанных на данных, сквозное масштабирование, устранение узких мест в производительности и эффективное использование ресурсов на стороне сервера и клиента.

Чтобы клиентский запрос возвращался немедленно, Oracle Database Pipelining требует асинхронного или реактивного API в драйверах .NET, Java и C/C++. Эти механизмы можно использовать для СУБД Oracle Database, как с конвейерной обработкой Database Pipelining, так и без нее.

Для Java в Oracle Database 23c предусмотрены реактивные расширения в Java Database Connectivity (JDBC), Universal Connection Pool (UCP) и Oracle R2DBC Driver. Также поддерживаются виртуальные потоки Java в драйвере (Project Loom), а также библиотеки Reactive Streams, такие как Reactor, RxJava, Akka Streams, Vert.x и другие.



DB_DEVELOPER_ROLE

В Oracle Database 23c добавлена новая роль DB_DEVELOPER_ROLE, которая дает разработчику приложений все полномочия, необходимые для разработки, внедрения, отладки и развертывания приложений на основе Oracle Databases. При использовании этой роли администраторам больше не нужно пытаться угадать, какие полномочия могут потребоваться для разработки приложения.





Прямые подключения для выражений с операторами UPDATE и DELETE

Oracle Database теперь позволяет подключать таблицу, к которой применяются операторы UPDATE и DELETE, к другим таблицам с помощью выражения FROM. Дополнительные таблицы могут ограничивать диапазон строк, к которым применяются изменения, или выступать в качестве источника новых значений. Прямое соединение упрощает составление SQL-запросов для изменения или удаления данных.



Улучшения, связанные с быстрым вводом данных

Мы добавили усовершенствования в Memoptimized Rowstore Fast Ingest с поддержкой разбиения на разделы, сжатых таблиц, быстрой записи (fast flush) с помощью прямой записи и поддержки прямого заполнения хранилища столбцов в памяти. Благодаря этим усовершенствованиям функция быстрого ввода данных становится более удобной для использования в ситуациях, когда требуется быстрый ввод данных. Теперь СУБД Oracle Database обеспечивает лучшую поддержку приложений, требующих быстрого ввода данных. Данные могут быть импортированы, а затем обработаны в той же базе данных. Это снижает потребность в специальных загрузочных средах и тем самым уменьшает сложность и избыточность данных.



Возможность наблюдения за Grafana

Oracle продолжает расширять свою поддержку cloud native и Kubernetes с помощью нового Observability Exporter для Oracle Database, который позволяет клиентам легко экспортировать показатели баз данных и приложений в стандартный формат Prometheus, а также легко создавать панели Grafana для мониторинга производительности баз данных и приложений Oracle.



GROUP BY псевдоним столбца

Теперь можно использовать псевдоним столбца или позицию элемента SELECT в разделах GROUP BY, GROUP BY CUBE, GROUP BY ROLLUP и GROUP BY GROUPING SETS. Кроме того, фраза HAVING поддерживает псевдонимы столбцов. Эти новые усовершенствования Database 23c упрощают запись фраз GROUP BY и HAVING, что делает SQL-запросы гораздо более читаемыми и удобными в обслуживании, а также обеспечивая лучшую переносимость SQL-кода.



IF [NOT] EXISTS

При создании, изменении и удалении DDL-объектов в Oracle Database теперь можно использовать модификаторы IF EXISTS и IF NOT EXISTS. Это позволяет контролировать процесс генерирования ошибок при наличии или отсутствии того или иного объекта, а значит, упрощает обработку ошибок сценариями и приложениями.



INTERVAL Агрегирование типов данных

Oracle Database 23c облегчает разработчикам вычисление итогов и средних значений по значениям INTERVAL. Благодаря этому усовершенствованию вы теперь можете использовать типы данных INTERVAL в агрегатных и аналитических функциях SUM и AVG.



Хранимые процедуры на JavaScript

Многоязычный механизм исполнения кода (модуль MLE) позволяет разработчикам вызывать функции JavaScript, хранимые в модулях, внутри запросов SQL и PL/SQL. Спецификации вызова, записанные в стандарте PL/SQL, связывают JavaScript с элементами кода на PL/SQL. Благодаря этому разработчики могут использовать функции JavaScript там же, где вызываются функции PL/SQL.



Тип двоичных данных JSON

Тип данных JSON представляет собой оптимизированный для Oracle двоичный формат JSON, называемый OSON. Он разработан для ускорения выполнения запросов и DML в базе данных и в клиентах базы данных, начиная с версии 21c и далее.



Представления реляционной двойственности JSON

Реляционная двойственность JSON, инновационная концепция, представленная в Oracle Database 23c, объединяющая реляционную модель данных и модель на основе документов, предоставляет их лучшие возможности. Теперь разработчики могут создавать приложения по реляционной модели или по модели JSON, работая в едином пространстве и пользуясь сильными сторонами любой из этих моделей. Данные хранятся в одном экземпляре, но разработчик может обращаться к ним, записывать новые данные или вносить изменения вне зависимости от выбранного подхода. Дополнительное преимущество — возможность использовать транзакции и средства контроля параллелизма, соответствующие стандартам ACID. Это означает, что разработчикам больше не нужно поступаться сложностью реляционных структур объектов ради обеспечения согласованности данных.



Схема JSON

СУБД Oracle Database поддерживает JSON для хранения и обработки данных с гибкими схемами. С Oracle Database 23c Oracle Database теперь поддерживает схему JSON для проверки структуры и значений данных JSON. Оператор SQL IS JSON был усовершенствован для приема JSON Schema, а также были добавлены различные функции PL/SQL для проверки JSON и описания объектов базы данных, таких как таблицы, представления и типы, в виде документов JSON Schema.

По умолчанию данные JSON не содержат схем, что обеспечивает их гибкость. Однако вам может понадобиться убедиться, что данные JSON имеют определенную структуру и тип, что можно сделать с помощью стандартной проверки JSON Schema.

Вклад в JSON Schema
Oracle активно участвует в JSON Schema - проекте с открытым исходным кодом по стандартизации декларативного языка на основе JSON, который позволяет осуществлять аннотирование и проверку документов JSON. В настоящее время он находится в процессе запроса комментариев (RFC).



API Kafka

В Oracle Database 23c расширена и улучшена поддержка приложений Apache Kafka, работающих с Oracle Database. Это помогло реализовать простую миграцию приложений Java Kafka в Transactional Event Queues (TxEventQ). API Java для Kafka теперь могут подключаться к серверу Oracle Database и использовать TxEventQ в качестве платформы для обмена сообщениями.

Разработчики могут легко перенести приложения на базе Kafka в Oracle Database, используя тонкий драйвер JDBC. А благодаря библиотеке на стороне клиента, добавленной в Oracle Database 23c, приложения Kafka теперь могут подключаться к Oracle Database (вместо кластера Kafka) и использовать платформу обмена сообщениями TxEventQ, обеспечивая нужный уровень прозрачности.



Резервирование значений столбцов без блокировки

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



API, совместимый с MongoDB

С помощью Oracle Database API для MongoDB разработчики могут продолжать использовать инструменты и драйверы MongoDB, подключенные к Oracle Database, получая при этом доступ к многомодельным возможностям Oracle и самоуправляемой базе данных. Клиенты могут запускать рабочие нагрузки MongoDB на Oracle Cloud Infrastructure (OCI). Часто в существующих приложениях MongoDB не требуется практически никаких изменений - нужно просто изменить строку подключения.

Oracle Database API для MongoDB является частью стандартного Oracle REST Data Services. Он предварительно настроен и полностью управляется как часть Oracle Autonomous Database.



Графы операционных свойств

В Oracle Database есть встроенная поддержка структур данных в виде графов свойств и запросов к графам. Если вы ищете удобный способ строить графы в сочетании с данными транзакций, JSON, Spatial и другими типами данных, здесь вы найдете все необходимые инструменты. Разработчики теперь могут легко создавать приложения на основе графов на SQL, используя существующие инструменты и среды SQL-разработки.



Поддержка конструктора JSON PL/SQL для агрегатных типов

Конструктор PL/SQL JSON усовершенствован для приема экземпляра соответствующего агрегатного типа PL/SQL, возвращая объект JSON или тип массива, заполненный данными агрегатного типа.

Оператор PL/SQL JSON_VALUE доработан таким образом, что его возвращающее предложение может принимать имя типа, определяющее тип экземпляра, который оператор должен вернуть. Поддержка JSON-конструкторов для агрегатных типов данных упрощает обмен данными между PL/SQL-приложениями и языками, поддерживающими JSON.



Функция RETURNING INTO

Функция RETURNING INTO для операторов INSERT, UPDATE и DELETE была усовершенствована, чтобы отражать старые и новые значения, затронутые соответствующим оператором. Это позволяет разработчикам использовать одну и ту же логику для каждого из этих типов DML для получения значений до и после выполнения запроса. Старые и новые значения допустимы только для инструкций UPDATE. Выражения INSERT не сообщают о старых значениях, а выражения DELETE не сообщают о новых значениях.

Возможность получать старые и новые значения, затронутые операциями INSERT, UPDATE и DELETE, в процессе выполнения SQL-команды предлагает разработчикам единый подход к чтению этих значений и сокращает объем работы, которую должна выполнять база данных.



Полномочия для схем

Oracle Database теперь поддерживает полномочия для схем в дополнение к уже существующим полномочиям для объектов и систем, а также административным полномочиям. Эта функция повышает безопасность, упрощая авторизацию для объектов баз данных. Это позволяет лучше реализовать принцип минимальных полномочий и предотвратить необходимость гадать о том, кому какой доступ потребуется.



Оператор SELECT без использования FROM

Теперь можно выполнять запросы с оператором SELECT, не включая в них выражение FROM. Эта новая возможность упрощает перенос кода SQL из одной среды в другую и его использование для разработчиков.



Макросы SQL

Создавайте макросы SQL, чтобы преобразовывать распространенные выражения SQL в параметрические, удобные для повторного использования структуры, которые можно вставлять в другие SQL-выражения. Макросами SQL могут стать скалярные выражения, которые обычно используются в списках SELECT, а также в фрагментах с операторами WHERE, GROUP BY и HAVING. Макросы SQL также могут использоваться для инкапсуляции расчетов и бизнес-логики или могут быть табличными выражениями, обычно используемыми в части FROM. В сравнении с конструкциями PL/SQL макросы SQL способны повысить производительность. Макросы SQL также повышают продуктивность разработчиков, упрощая совместную работу и повышая качество кода.



Аналитический отчет SQL

На этой неделе мы расскажем об аналитическом отчете SQL, простом в использовании инструменте, который помогает разработчикам писать более качественные SQL-запросы. Аналитический отчет SQL сообщает об общих проблемах с операторами SQL, в частности о тех, которые могут привести к низкой производительности SQL. Он доступен в DBMS_XPLAN и SQL Monitor.



Брандмауэр SQL

Используйте брандмауэр SQL для обнаружения аномалий и предотвращения атак путём внедрения кода SQL. Брандмауэр SQL проверяет все данные SQL, включая информацию о контексте сеанса, такую как IP-адрес и пользователь ОС. Встроенный в ядро базы данных, брандмауэр SQL регистрирует и (если включен) блокирует неразрешенные данные SQL, гарантируя, что его невозможно обойти. Применяя список разрешений SQL и одобренные контексты сеансов, брандмауэр SQL может предотвратить множество атак нулевого дня и снизить риск кражи учетных данных или злоупотребления ими.



Конструктор табличных значений

SQL-движок Oracle Database теперь поддерживает операцию VALUES для многих типов операторов. Это позволяет прямо на лету создавать строки данных, указывая их с помощью нового синтаксиса, не опираясь на существующие таблицы. Oracle Database 23c поддерживает операцию VALUES для инструкций SELECT, INSERT и MERGE. Введение новой операции VALUES позволяет разработчикам писать меньше кода для специальных команд SQL, что повышает читаемость при меньших усилиях.



Аннотации к использованию

Аннотации позволяют хранить и извлекать метаданные объектов баз данных. Они представляют собой простые текстовые поля, которые можно использовать для настройки бизнес-логики или пользовательских интерфейсов. Аннотация может выглядеть как пара имя — значение или просто как имя. Аннотации помогают использовать объекты баз данных одинаково во всех приложениях, упрощая тем самым разработку и повышая качество данных.



Домены использования

Домены использования (иногда называемые доменами SQL или доменами использования приложений) - это высокоуровневые словарные объекты, которые действуют как легкие модификаторы типов и централизованно документируют предполагаемое использование данных в приложениях. Домены использования можно применять для определения использования данных и стандартизации операций, чтобы вложить в них набор ограничений проверки, свойств отображения, правил упорядочивания и других свойств использования, не требуя метаданных на уровне приложения.

Домены использования для одного или нескольких столбцов таблицы не изменяют базовый тип данных и поэтому могут быть добавлены к существующим данным, не нарушая работу приложений и не создавая проблем с переносимостью.