Уровень абстракции базы данных
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2014 г. ) |
Уровень абстракции базы данных ( 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] и либздб. [5] Наконец, крупные проекты могут разрабатывать собственные библиотеки, такие как, например, libgda. [6] для ГНОМА .
Аргументы [ править ]
За [ править ]
- Период разработки: разработчикам программного обеспечения необходимо знать только API уровня абстракции базы данных, а не все API баз данных, которые должно поддерживать их приложение. Чем больше баз данных должно поддерживаться, тем больше будет экономия времени.
- Более широкая потенциальная база установок: использование уровня абстракции базы данных означает, что новым установкам не требуется использовать конкретную базу данных, т. е. новые пользователи, которые не хотят или не могут переключать базы данных, могут развертывать их в существующей инфраструктуре.
- Перспективность: по мере появления новых технологий баз данных разработчикам программного обеспечения не придется адаптироваться к новым интерфейсам.
- Тестирование для разработчиков: рабочая база данных может быть заменена реализацией данных на уровне рабочего стола для модульных тестов на уровне разработчика.
- Добавленные функции базы данных: в зависимости от базы данных и DAL DAL может добавлять функции в базу данных. DAL может использовать средства программирования баз данных или другие методы для создания стандартных, но неподдерживаемых функций или совершенно новых функций. Например, DBvolution DAL реализует функцию стандартного отклонения для нескольких баз данных, которые ее не поддерживают.
Против этого [ править ]
- Скорость: любой уровень абстракции более или менее снижает общую скорость в зависимости от объема дополнительного кода, который необходимо выполнить. Чем больше уровень базы данных абстрагируется от собственного интерфейса базы данных и пытается эмулировать функции, отсутствующие во всех серверных модулях базы данных, тем медленнее общая производительность. Это особенно актуально для уровней абстракции базы данных, которые пытаются унифицировать язык запросов, например, ODBC.
- Зависимость: уровень абстракции базы данных обеспечивает еще одну функциональную зависимость для программной системы, т.е. данный уровень абстракции базы данных, как и все остальное, может со временем устареть, выйти из моды или стать неподдерживаемым.
- Маскированные операции: уровни абстракции базы данных могут ограничивать количество доступных операций с базой данных до подмножества тех, которые поддерживаются поддерживаемыми серверными модулями базы данных. В частности, уровни абстракции базы данных могут не полностью поддерживать оптимизацию или функции отладки, специфичные для серверной части базы данных. Эти проблемы значительно усугубляются с увеличением размера, масштаба и сложности базы данных.
См. также [ править ]
Ссылки [ править ]
- ^ Эмблер, Тим; Облако, Николас (2015). Фреймворки JavaScript для современной веб-разработки . Апресс. п. 346. ИСБН 978-1-4842-0662-1 .
- ^ «Что такое независимость от базы данных? — Определение с сайта WhatIs.com» .
- ^ «Уровни абстракции» .
- ^ «ОпенДБКС» . linuxnetworks.de . 24 июня 2012 года . Проверено 26 июля 2018 г.
- ^ «Либздб» . tildeslash.com . 2018 . Проверено 26 июля 2018 г.
- ^ «ГНОМ-БД» . 12 июня 2015 года . Проверено 26 июля 2018 г.
Библиотека Libgda [...] представляет собой в основном уровень базы данных и абстракции данных и включает в себя расширение пользовательского интерфейса на основе GTK+ и некоторые графические инструменты.