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

Интерфейс прикладного программирования

Уровень абстракции базы данных ( DBAL [1] или DAL ) — это интерфейс прикладного программирования , который унифицирует взаимодействие между компьютерным приложением и базами данных, такими как SQL Server , IBM Db2 , MySQL , PostgreSQL , Oracle или SQLite . Традиционно все поставщики баз данных предоставляют собственный интерфейс, адаптированный к их продуктам. Программисту приложений приходится реализовывать код для интерфейсов базы данных, которые будут поддерживаться приложением. Уровни абстракции базы данных сокращают объем работы, предоставляя разработчику согласованный API и максимально скрывая специфику базы данных за этим интерфейсом. Существует множество уровней абстракции с различными интерфейсами на многочисленных языках программирования. Если в приложении встроен такой уровень, оно называется не зависящим от базы данных . [2]

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

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

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

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

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

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

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

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

Внешний или уровень просмотра

Внешний уровень доступен пользователям и разработчикам и обеспечивает последовательную схему выполнения операций с базой данных. [3] Операции с базой данных на этом уровне представлены лишь приблизительно как SQL или даже доступ к базе данных.

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

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

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

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

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

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

В качестве альтернативы существуют тонкие оболочки, часто описываемые как легкие слои абстракции, такие как OpenDBX [4] и libzdb. [5] Наконец, крупные проекты могут разрабатывать собственные библиотеки, такие как, например, libgda [6] для GNOME .

Аргументы

В пользу

  • Период разработки: разработчикам программного обеспечения нужно знать только API уровня абстракции базы данных, а не все API баз данных, которые должно поддерживать их приложение. Чем больше баз данных должно поддерживаться, тем больше экономия времени.
  • Более широкая потенциальная база установок: использование уровня абстракции базы данных означает, что для новых установок не требуется использовать определенную базу данных, т. е. новые пользователи, которые не хотят или не могут переключаться между базами данных, могут выполнять развертывание в своей существующей инфраструктуре.
  • Задел на будущее: с появлением новых технологий баз данных разработчикам программного обеспечения не придется адаптироваться к новым интерфейсам.
  • Тестирование разработчиками: производственная база данных может быть заменена реализацией данных на уровне настольного компьютера для модульных тестов на уровне разработчика.
  • Добавленные функции базы данных: в зависимости от базы данных и DAL, DAL может добавлять функции в базу данных. DAL может использовать средства программирования базы данных или другие методы для создания стандартных, но неподдерживаемых функций или совершенно новых функций. Например, DBvolution DAL реализует функцию стандартного отклонения для нескольких баз данных, которые ее не поддерживают.

Против этого

  • Скорость: любой уровень абстракции будет снижать общую скорость в большей или меньшей степени в зависимости от объема дополнительного кода, который должен быть выполнен. Чем больше уровень базы данных абстрагируется от собственного интерфейса базы данных и пытается эмулировать функции, отсутствующие во всех бэкендах базы данных, тем ниже общая производительность. Это особенно верно для уровней абстракции базы данных, которые пытаются унифицировать язык запросов, а также ODBC.
  • Зависимость: уровень абстракции базы данных обеспечивает еще одну функциональную зависимость для программной системы, т. е. данный уровень абстракции базы данных, как и все остальное, может со временем устареть, выйти из моды или перестать поддерживаться.
  • Маскированные операции: уровни абстракции базы данных могут ограничивать количество доступных операций базы данных подмножеством поддерживаемых поддерживаемыми бэкендами базы данных. В частности, уровни абстракции базы данных могут не полностью поддерживать оптимизации или отладочные функции, специфичные для бэкенда базы данных. Эти проблемы значительно увеличиваются с размером, масштабом и сложностью базы данных.

Смотрите также

Ссылки

  1. ^ Эмблер, Тим; Клауд, Николас (2015). JavaScript Frameworks for Modern Web Dev. Apress. стр. 346. ISBN 978-1-4842-0662-1.
  2. ^ «Что такое независимость от баз данных? — Определение с сайта WhatIs.com».
  3. ^ «Уровни абстракции».
  4. ^ "OpenDBX". linuxnetworks.de . 24 июня 2012 г. . Получено 26 июля 2018 г. .
  5. ^ "Libzdb". tildeslash.com . 2018 . Получено 26 июля 2018 .
  6. ^ "GNOME-DB". 12 июня 2015 г. Получено 26 июля 2018 г. Библиотека Libgda [...] в основном представляет собой уровень абстракции базы данных и данных и включает расширение пользовательского интерфейса на основе GTK+ и некоторые графические инструменты.
Получено с "https://en.wikipedia.org/w/index.php?title=Database_abstraction_layer&oldid=1220503377"