База данных (БД)



бет1/2
Дата01.11.2022
өлшемі31,85 Kb.
#46748
  1   2

Основополагающие термины достаточно подробно рассмотрены в любой из серьезных монографий. Тем не менее, чтобы однозначно понимать суть в ходе чтения, нам нужно выработать общий словарь. С этой целью я буду по мере необходимости приводить минимальный набор определений, составляющий основу дальнейшего изложения.
База данных (БД) — структурированное поименованное хранилище информации.
Из самого первого определения должно быть понятно, что содержащий начисленные квартальные премии сотрудников файл формата CSV — текстовый формат, предназначенный для представления табличных данных (CSV от англ. Comma-Separated Values — значения, разделённые запятыми). Каждая строка файла — это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом (запятой).) является хоть и очень простой, но базой данных, а текстовый файл с научным описанием мышей-полёвок ей не является.
Система управления базами данных (СУБД) — специализированное программное обеспечение, обеспечивающее доступ к базе данных как к совокупности её структурных единиц.
Из второго определения также должно быть понятно, что открыв упомянутый CSV-файл в текстовом редакторе, мы хоть и видим базу данных, но не работаем с ней посредством СУБД. Если же мы откроем файл в приложении LibreOffice Calc, то данная программа превращается хоть и в очень простую, но СУБД, позволяющую нам работать со структурированным текстом, как с таблицей на уровне колонок, строк и значений, а также посчитать итоги, средние и крайние величины. Положив файл в разделяемый по локальной сети каталог, получаем примитивную многопользовательскую СУБД на основе все того же приложения.
Исторически, в устройстве СУБД выделяли три уровня, предложенных ещё в 1975 году в отчёте ANSI/X3/SPARC :

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

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

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

Внутренний уровень не всегда связан с файловой системой. Наиболее развитые современные СУБД представляют собой по сути специализированную операционную систему (см. например информацию по SQLOS в составе Microsoft SQL Server), способную управлять физическими устройствами хранения, кешем данных, процессами и потоками, оперативной памятью, асинхронным запуском и внутренним планировщиком задач минуя собственно операционную систему компьютера.
Вернёмся к примеру с CSV-файлом и приложением LibreOffice Calc, наглядно показывающему, что даже в примитивной СУБД все три упомянутых уровня можно чётко выделить:

  • внутренний уровень представлен собственно файлом формата CVS со спецификацией его полного имени в файловой системе, кодовой страницы и символа разделителя;

  • логический уровень представлен объектом «Электронная таблица» (spreadsheet), позволяющим описать данные в терминах листов, колонок и строк независимо от того, работаем ли мы с CSV-файлом или с файлом в другом формате, возможно даже двоичном;

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

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

  • Обработка идёт в режиме реального или приближенного к реальному времени. Время отклика системы при запросе оператора не превышает единиц секунд.

  • Запросы представляют собой интенсивный поток коротких операций по вставке, изменению и удалению небольшого числа записей в БД. Эти операции могут быть как одиночными транзакциями, так и объединяться в более крупные транзакции.

В реляционной СУБД любой оператор SQL является одиночной транзакцией по умолчанию. Некоторые реализации, например, Firebird, по умолчанию открывают новую транзакцию при выполнении каждого оператора SQL, оставляя её «висеть» до выдачи команды завершения. Это так называемый режим неявных транзакций (implicit transaction). Для управления соответствующим поведением, СУБД обычно имеет опцию включения и отключения неявных транзакций, например, set implicit_transaction on|off в SQL Server.
Основными аббревиатурами, касающимися транзакций, с которыми вам придётся сталкиваться будут OLTP (On-Line Transaction Processing) — собственно интерактивная транзакционная обработка, и ACID (Atomicity- Consistency-Isolation-Durability) — принципы неделимости, целостности, изолированности и надёжности. О них мы поговорим в дальнейшем, рассмотрев на примерах принципы изоляции.
В противоположность транзакционной, аналитическая обработка данных имеет другие отличительные признаки.

  • Данные находятся в режиме чтения, за исключением моментов их обновления.

  • Выборки представляют собой одиночные тяжёлые запросы: поиски и расчёты по множеству произвольных критериев могут охватывать значительную часть данных в базе.

  • Время отклика системы не регламентировано, нередко пользователь имеет возможность прервать слишком долго выполняющийся запрос, чтобы упростить его или разделить расчёты на более короткие этапы.

  • Размеры базы данных, как правило, на порядок и больше превышают таковые для транзакционной.

Аналогичной аббревиатурой для интерактивной аналитической обработки является OLAP (On-Line Analytical Processing). Соответственно, интерактивное приложение, работающее с СУБД в режиме OLAP, относится к аналитическим.
Важное здесь слово «интерактивная». Действительно, в отличие от транзакционной, аналитическая обработка может вестись и в пакетном режиме: пользователь формулирует задачу в понятных приложению терминах, ставит обработку в очередь и, например, утром следующего дня получает результаты. Таковой, например, является заблаговременная ночная генерация регулярных отчётов, рассылаемых по утрам или с другой заданной периодичностью группам пользователей (см., например, Microsoft SQL Server Reporting Services).
Необходимо понимать, почему возникло разделение на транзакционную и аналитическую обработку, ведь со стороны внешнего уровня архитектуры СУБД они не слишком отличаются. В обоих случаях запросы, да, немного разные, ну и что?
Основная проблема заключается в том, что СУБД, ориентированные на транзакционную обработку, менее эффективны при работе с аналитическими запросами и наоборот. Универсальных архитектур и их реализаций, одинаково легко справляющихся как с большим потоком мелких запросов и транзакций, так и с гораздо меньшим числом массивных тяжёлых выборок по большому диапазону, не существует. Пока, по крайней мере. Ещё сложнее реализовать оба типа обработки одновременно в одной и той же БД. Поэтому возникла и уже долгое время[1] существует упомянутая выше специализация как среди СУБД, так и среди программистов, администраторов и консультантов.
Клиент-серверные и встроенные СУБД
Технология клиент-сервер является основой большинства реализаций современных программных систем. Речь идёт не только о паре «Приложение конечного пользователя — СУБД». Каждое звено многозвенной системы с длинными цепочками прохождения сообщений от пользовательского интерфейса через службы и серверы приложений к СУБД также работает в режиме «клиент-сервер». Отличительные признаки технологии следующие:

  • два или более автономных процесса[2], исполняющихся на одном или нескольких вычислительных устройствах (компьютерах);

  • процессы взаимодействуют посредством передачи сообщений согласно протоколу;

  • протокол минимально состоит из запроса и ответа, запрашивающий процесс называется клиентом, отвечающий на запрос — сервером.

Роли клиента и сервера у процессов могут меняться. Например, сервер может время от времени опрашивать своих клиентов о состоянии. В производственной практике серверным приложением или просто сервером обычно называют тот процесс, основная задача которого состоит в обработке поступающих от клиентов запросов. В такой терминологии есть некоторый риск спутать приложение-сервер с компьютером-сервером, исполняющим роль физического устройства для эксплуатации тех самых серверных приложений. Поэтому однозначно понять смысл термина «сервер» можно только в контексте его употребления.
Из сказанного следует, что СУБД, работающая как самостоятельный процесс, также является сервером, СУБД-сервером. Однако, некоторые СУБД позволяют напрямую пристыковать себя к процессу-приложению, например, посредством динамических библиотек. В этом случае СУБД исполняется в том же процессе) (in-process, что и приложение и называется встроенной или встраиваемой.



Достарыңызбен бөлісу:
  1   2




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет