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

А уровень абстракции базы данных (DBAL[1] или же DAL) является интерфейс прикладного программирования который унифицирует взаимодействие между компьютерным приложением и базы данных Такие как SQL Server, 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] за ГНОМ.

Аргументы

В пользу

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

Против этого

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

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

Рекомендации

  1. ^ Тим Эмблер; Николас Клауд (2015). Фреймворки JavaScript для современных веб-разработчиков. Апресс. п. 346. ISBN  978-1-4842-0662-1.
  2. ^ http://searchdatamanagement.techtarget.com/definition/database-agnostic
  3. ^ http://www.dmst.aueb.gr/dds/etech/db/abstr.htm
  4. ^ = (24 июня 2012 г.). «OpenDBX». linuxnetworks.de. Получено 26 июля 2018.CS1 maint: числовые имена: список авторов (ссылка на сайт)
  5. ^ = (2018). «Либздб». tildeslash.com. Получено 26 июля 2018.CS1 maint: числовые имена: список авторов (ссылка на сайт)
  6. ^ = (12 июня 2015 г.). «ГНОМ-БД». Получено 26 июля 2018. Библиотека Libgda [...] в основном является слоем базы данных и абстракции данных и включает в себя расширение пользовательского интерфейса на основе GTK + и некоторые графические инструменты.CS1 maint: числовые имена: список авторов (ссылка на сайт)