Написано: 22.12.2022

Архитектура БД Oracle

Architecture

Сервер БД – это ключ к управлению информацией.

Как правило, сервер надёжно управляет большим объемом данных в многопользовательской среде, чтобы пользователи могли одновременно получать доступ к одним и тем же данным. Сервер БД также предотвращает несанкционированный доступ и предоставляет эффективные решения для восстановления после сбоя.

БД и экземпляр

Сервер БД Oracle состоит из базы данных и, по крайней мере, одного экземпляра БД, обычно называемого просто экземпляром.

Поскольку экземпляр и БД настолько тесно связаны, термин БД Oracle иногда относится как к экземпляру, так и к БД. В самом строгом смысле эти термины имеют следующие значения:

  • БД

База данных – это набор файлов, расположенных на диске, в которых хранятся пользовательские данные. Эти файлы данных могут существовать независимо от экземпляра базы данных. Начиная с Oracle Database 21c, “база данных” относится конкретно к файлам данных многопользовательской контейнерной базы данных (CDB), подключаемой базы данных (PDB) или контейнера приложений.

  • Экземпляр БД

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

Мультиконтейнерная архитектура (Multitenant Architecture)

Мультиконтейнерная архитектура позволяет базе данных Oracle быть контейнерной базой данных (CDB).

Каждая база данных Oracle должна содержать или быть способной содержаться в другой базе данных. Например, CDB содержит PDB-файлы, а контейнер приложения содержит PDB-файлы приложений. PDB содержится в CDB или контейнере приложения, а контейнер приложения содержится в CDB.

Начиная с Oracle Database 21c, единственной поддерживаемой архитектурой является мультиконтейнерная база данных. В предыдущих выпусках Oracle поддерживала неконтейнерные базы данных (non-CDBS).

CDBs

CDB содержит один или несколько созданных пользователем PDB и контейнеров приложений.

На физическом уровне cdb представляет собой набор файлов: файл управления, файлы журнала онлайн-повтора и файлы данных. Экземпляр базы данных управляет файлами, составляющими CDB.

На следующем рисунке показан CDB и связанный с ним экземпляр базы данных.

OraCon_Fig1-1

PDBs

PDB – это переносимая коллекция схем, объектов схемы и несхемных объектов, которая отображается в приложении как отдельная база данных.

На физическом уровне каждая PDB имеет свой собственный набор файлов данных, в которых хранятся данные для PDB. CDB включает в себя все файлы данных для PDF-файлов, содержащихся в нем, и набор системных файлов данных, которые хранят метаданные для самого CDB.

Чтобы переместить или заархивировать PDB, вы можете отключить её. Отключенная PDB состоит из файлов данных PDB и файла метаданных. Отключенный PDB нельзя использовать до тех пор, пока он не будет подключен к CDB.

На следующем рисунке показан CDB с именем MYCDB.

OraCon_Fig1-2

Физически, MYCDB – это база данных Oracle, в смысле набора файлов данных, связанных с экземпляром. MYCDP имеет один экземпляр базы данных, хотя в кластерах реальных приложений Oracle возможно несколько экземпляров, и один набор файлов базы данных.

MYCDB содержит два PDB: hrpdb и salespdb. Как показано на рис. 1-2, эти PDB отображаются в соответствующих приложениях как отдельные, независимые базы данных. Приложение не знает, подключается ли оно к CDB или PDB.

Чтобы администрировать CDB или любую PDB внутри нее, можно подключиться к корневому каталогу CDB. Корень – это набор схем, объектов схемы и несхемных объектов, к которым принадлежат все PDB и контейнеры приложений.

Контейнеры для приложений

Контейнер приложения – это необязательный пользовательский контейнер в CDB, в котором хранятся данные и метаданные для одного или нескольких приложений.

В этом контексте, приложение (также называемое основным определением приложения) представляет собой именованный версионный набор общих данных и метаданных, хранящихся в корневом каталоге приложения. Например, приложение может включать определения таблиц, представлений, учетных записей пользователей и пакетов PL/SQL, которые являются общими для набора PDB.

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

Например, при развертывании SaaS может использоваться несколько PDB приложений, каждый для отдельного клиента, которые совместно используют метаданные и данные приложения. Например, на следующем рисунке sales_app – это модель приложения в корневом каталоге приложения. База данных приложения с именем cust1_pdb содержит данные о продажах только для клиента 1, тогда как база данных приложения с именем cust2_pdb содержит данные о продажах только для клиента 2. Подключение, отсоединение, клонирование и другие операции на уровне PDB доступны для отдельных клиентских PDB.

OraCon_Fig1-3

Архитектура из кусочков (Sharding Architecture)

Oracle Sharding – это метод масштабирования базы данных, основанный на горизонтальном разделении данных на несколько PDB. Приложения воспринимают пул PDB как единую логическую БД.

Ключевые преимущества сегментирования для приложений OLTP включают линейную масштабируемость, локализацию сбоев и географическое распределение данных. Лоскуточность хорошо подходит для развертывания в облаке Oracle. В отличие от хранилищ данных NoSQL, которые реализуют сегментирование, Oracle Sharding предоставляет преимущества сегментирования без ущерба для возможностей корпоративной РСУБД.

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

Горизонтальное разделение предполагает разделение таблицы базы данных на шарды таким образом, чтобы каждый шард содержал таблицу с одинаковыми столбцами, но разным подмножеством строк. Таблица, разделенная таким образом, также известна как шардированная таблица. На следующем рисунке показана шардированная таблица, разделенная по горизонтали на три шарда, каждый из которых представляет собой PDB в отдельном CDB.

OraCon_Fig1-4

Примером использования является распределение данных учетной записи клиента по нескольким CDB. Например, клиент с идентификатором 28459361 может просмотреть свои записи. На следующем рисунке показана возможная архитектура. Запрос клиента направляется через пул подключений, где руководители шардов (сетевые прослушиватели) направляют запрос в соответствующий шард PDB, который содержит все строки клиента.

OraCon_Fig1-5

Структуры хранения БД

Базу данных можно рассматривать как с физической, так и с логической точки зрения.

Физические данные – это данные, доступные для просмотра на уровне операционной системы. Например, утилиты операционной системы, такие как Linux ls и ps, могут отображать файлы и процессы базы данных. Логические данные, такие как таблица, имеют смысл только для базы данных. Инструкция SQL может перечислять таблицы в базе данных Oracle, но утилита операционной системы не может.

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

Физические структуры хранения

Физические структуры базы данных – это файлы, в которых хранятся данные.

Когда вы выполняете команду CREATE DATABASE, вы создаете CDB. Создаются следующие файлы:

  • Файлы данных

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

  • Управляющие файлы

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

  • Файлы онлайн-журналов redo

Каждый CDB имеет онлайн-журнал redo, который представляет собой набор из двух или более онлайн-файлов журнала redo. Онлайн-журнал redo состоит из записей redo (также называемых записями журнала redo), в которые записываются все изменения, внесенные в данные.

Когда вы выполняете команду CREATE PLUGGABLE DATABASE в CDB, вы создаете PDB. PDB содержит выделенный набор файлов данных внутри CDB. PDB не имеет отдельного, выделенного файла управления и онлайн-журнала redo: эти файлы являются общими для PDB.

Многие другие файлы важны для функционирования CDB. К ним относятся файлы параметров и сетевые файлы. Файлы резервных копий и архивированные файлы журнала повтора – это автономные файлы, важные для резервного копирования и восстановления.

Логические структуры хранения

Логические структуры хранения данных позволяют БД Oracle осуществлять детальный контроль за использованием дискового пространства.

В этом разделе обсуждаются логические структуры хранения:

  • Блоки данных

На самом высоком уровне детализации данные БД Oracle хранятся в блоках данных. Один блок данных соответствует определенному количеству байт на диске.

  • Экстенты

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

  • Сегменты

Сегмент – это набор экстентов, выделенных для пользовательского объекта (например, таблицы или индекса), данных отмены или временных данных.

  • Табличные пространства

БД разделена на логические единицы хранения, называемые табличными пространствами. Табличное пространство – это логический контейнер для сегментов. Каждое табличное пространство состоит по крайней мере из одного файла данных.

Структуры экземпляров БД

БД Oracle использует структуры памяти и процессы для управления CDB и доступа к нему. Все структуры памяти существуют в основной памяти компьютеров, составляющих СУБД.

Когда приложения подключаются к CDB или PDB, они подключаются к экземпляру БД. Экземпляр обслуживает приложения, выделяя другие области памяти в дополнение к SGA и запуская другие процессы в дополнение к фоновым процессам.

Процессы БД Oracle

Процесс – это механизм в операционной системе, который может выполнять ряд шагов. Некоторые операционные системы используют термины job, задача или поток.

В этом разделе поток эквивалентен процессу. У экземпляра БД Oracle есть следующие типы процессов:

  • Клиентские процессы

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

  • Фоновые процессы

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

  • Серверные процессы

Эти процессы взаимодействуют с клиентскими процессами и взаимодействуют с базой данных Oracle для выполнения запросов.

Процессы Oracle включают серверные процессы и фоновые процессы. В большинстве сред процессы Oracle и клиентские процессы выполняются на отдельных компьютерах.

Структуры памяти экземпляров

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

Следующие структуры памяти связаны с экземпляром базы данных:

  • Системная Глобальная Область (SGA)

SGA – это группа структур общей памяти, которые содержат данные и управляющую информацию для одного экземпляра БД. Примеры компонентов SGA включают буферный кэш базы данных и общие области SQL. SGA может содержать необязательное хранилище столбцов в памяти (IM column store), которое позволяет заполнять данные в памяти в столбчатом формате.

  • Програмная Глобальная Область (PGA)

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

Архитектура приложений и сетей

Чтобы в полной мере использовать преимущества данной компьютерной системы или сети, БД Oracle позволяет распределять обработку между сервером базы данных и клиентскими программами. Компьютер, на котором запущена РСУБД, выполняет функции сервера баз данных, в то время как компьютеры, на которых запущены приложения, обрабатывают интерпретацию и отображение данных.

Архитектура Приложений

Архитектура приложения – это вычислительная среда, в которой приложение базы данных подключается к базе данных Oracle. Две наиболее распространенные архитектуры баз данных – клиент/сервер и многоуровневая.

Клиент/серверная архитектура.

В архитектуре клиент/сервер, клиентское приложение инициирует запрос на выполнение операции на сервере базы данных. Сервер запускает программное обеспечение Oracle Database и выполняет функции, необходимые для одновременного общего доступа к данным. Сервер получает и обрабатывает запросы, исходящие от клиентов.

Многоуровневая архитектура.

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

Сервис-ориентированная архитектура (SOA) – это многоуровневая архитектура, в которой функциональность приложения инкапсулирована в сервисы. SOA-сервисы обычно реализуются как веб-сервисы. Веб-службы доступны через HTTP и основаны на стандартах на основе XML, таких как язык описания веб-служб (WSDL) и SOAP. БД Oracle может выступать в качестве поставщика веб-услуг в традиционной многоуровневой среде или среде SOA.

Простой доступ к документам Oracle (SODA) – это внедрение SOA, которое позволяет вам получать доступ к данным, хранящимся в базе данных. SODA предназначена для разработки приложений без схем без знания функций реляционных баз данных или таких языков, как SQL и PL /SQL. Вы можете создавать и хранить коллекции документов в базе данных Oracle, извлекать их и запрашивать без необходимости знать, как хранятся документы. SODA for REST использует архитектурный стиль representational state transfer (REST) для реализации SODA.

Архитектура Сетевых Служб Oracle

Сетевые Службы Oracle – это интерфейс между базой данных и сетевыми протоколами связи, которые облегчают распределенную обработку и распределенные базы данных.

Протоколы связи определяют способ передачи и приема данных по сети. Сетевые Службы Oracle поддерживает обмен данными по всем основным сетевым протоколам, включая TCP/IP, HTTP, FTP и WebDAV.

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

Важным компонентом сетевых служб является Oracle Net Listener (называемый слушателем), который представляет собой процесс, выполняемый в базе данных или в другом месте сети. Клиентские приложения отправляют запросы на подключение к прослушивателю, который управляет трафиком этих запросов к базе данных. Когда соединение установлено, клиент и база данных взаимодействуют напрямую.

Наиболее распространенными способами настройки базы данных Oracle для обслуживания клиентских запросов являются:

  • Архитектура выделенного сервера (Dedicated server architecture)

Каждый клиентский процесс подключается к выделенному серверному процессу. Серверный процесс не используется никаким другим клиентом в течение всего сеанса клиента. Каждому новому сеансу назначается выделенный серверный процесс.

  • Архитектура общего сервера (Shared server architecture)

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