WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » Уровень абстрактного представления базы данных

Уровень абстрактного представления базы данных


Дата публикации: 28-03-2008

Уровень абстракции, или абстрактного представления, базы данных - это интерфейс, который предоставляет ряд функций для работы с различными базами данных независимо от способа их реализации. Изменив внутренний интерфейс уровня абстракции базы данных, можно легко перейти, например, с формата MySQL на формат Oracle. В языке Perl таким уровнем является DBI (DataBase Interface), а в библиотеке PHPLib - уровень абстрактного представления базы данных, организованный в классе DB_Sql.

Переносимость

Для профессионального программиста, создающего Web-приложения, возможность абстрактного представления базы данных может быть очень полезной и важной. Основой каждого приложения является некая модель данных - множество структур данных, ориентированных на решение наиболее общих задач. Модель данных во многих случаях реализуется непосредственно в базе данных. Пакет PHP поддерживает множество различных баз данных; каждая из них располагает своим интерфейсом прикладных программ. На основе такого программного интерфейса невозможно обеспечить разработку программ, независимых от конкретной базы данных и операционной системы. Если вы не будете использовать некий уровень абстракции, примером которого может служить библиотека PHPLib, то при переводе приложения с MySQL на Oracle вам придется проделать тяжелую работу. В табл. 6.1 представлены различия между программными интерфейсами баз данных в различных системах.

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

Таблица 6.1. Интерфейсы прикладных программ, реализованные в СУБД MySQL и Oracle

Описание MySQL Oracle 7
Соединить (connect) mysql_connect() ora_logon()
Запрос (Query) mysql_query() или mysql_db_query() ora_parse(), затем ora_exec()
Получить следующую строку в результирующем наборе записей mysql_fetch_array() Работает со смещениями: ora_columnname(), ora_getcolumn()
Получить количество строк в результирующем наборе записей mysql_num_rows() Невозможно, потому что Oracle возвращать строки до того, как узнает общее количество строк в результирующем файле
Получить ключевой идентификатор последней вставленной строки mysql_insert_id() Соответствующая функция в пакете PHP отсутствует

Если вашей целью является создание переносимого кода, вы должны за километр обходить все специфические черты конкретных баз данных. Библиотека PHPLib может несколько упростить вашу задачу: в ней, к примеру, предусмотрены механизмы встроенной последовательной обработки записей и блокировки таблиц, которые не зависят от базы данных. Недавно разработчики библиотеки PHPLib добавили к ней класс Query, который предназначен для абстрагирования простых запросов (вставки, обновления, инструкций WHERE и некоторых других; такие запросы обычно составляют примерно 80 % общего числа запросов, адресованных базе данных), что позволяет сделать их независимыми от базы. В настоящее время данный класс работает только с СУБД MySQL и Oracle, начиная с версии 7.

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

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)
Октябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Alan J. Perlis:

    "Низкоуровневый язык — это когда требуется внимание к вещам, которые никак не связаны с программами на этом языке."

    Опрос

    Какой аудио плеер Вы используете?

    Winamp
    Light Alloy
    foobar2000
    Apollo
    AIMP
    1by1
    iTunes
    jetAudio
    Другой...