Это не официальный сайт wikipedia.org 01.01.2023

Уровень абстракции базы данных — Википедия

Уровень абстракции базы данных

Слой абстракции базы данных (Database abstraction layer — DBAL) — это интерфейс прикладного программирования, который унифицирует связь между компьютерным приложением и системами управления базами данных(СУБД), такими как SQL Server, DB2, MySQL, PostgreSQL, Oracle или SQLite. Традиционно все поставщики СУБД предоставляют свой собственный интерфейс, адаптированный к их продуктам, что позволяет программисту реализовать код для всех интерфейсов баз данных, которые он или она хотел бы поддерживать. Уровни абстракции уменьшают объём работы, предоставляя последовательный API разработчику и максимально скрывая специфику базы данных за этим интерфейсом. Существует множество слоёв абстракции с различными интерфейсами на многих языках программирования.

Уровни абстракции базы данныхПравить

Физический уровень (низший уровень)Править

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

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

Реализация типов данных и операций является самой специфичной для данного уровня.

Концептуальный или логический уровень (средний или высший уровень)Править

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

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

Уровень просмотра (внешний уровень)Править

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

Абстракция базы данных в APIПравить

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

Популярное использование для уровней абстракции базы данных относится к объектно-ориентированным языкам программирования, которые похожи на уровни абстракции уровня API. В объектно-ориентированных языках, таких как C++ или Java, база данных может быть представлена через объект, чьи методы и члены (или эквивалент этого в других языках программирования) представляют различные функциональные возможности базы данных. Они также имеют преимущества и недостатки интерфейсов уровня API.

Абстракция на уровне языкаПравить

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

Аргументы в пользу DALПравить

Период разработкиПравить

Разработчикам программного обеспечения нужно знать API-интерфейс абстракции базы данных, а не все API, которые должно поддерживать его приложение. Чем больше баз данных должно поддерживаться, тем больше экономия времени. Более широкий потенциал установки базы.

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

Возможность использования в будущемПравить

По мере появления новых технологий баз данных разработчикам программного обеспечения не придётся адаптироваться к новым интерфейсам.

Добавление функций в базы данныхПравить

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

Аргументы против DALПравить

СкоростьПравить

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

ЗависимостьПравить

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

Ограничение операцийПравить

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

СсылкиПравить