Мир InterBase

         

Глоссарий


Active tables (активные таблицы). Концепция, применяемая в InterBase для реализации системных таблиц (см. статью System tables). Они активны в том смысле, что изменения в них запускают связанные с этими изменениями логические и физические действия. Например, добавление индекса и его сегментов в соответствующие системные таблицы вызывает распределение страниц, которые будут содержать индексные структуры.

Alternate key (альтернативный ключ). Это уникальный ключ (смотрите unique key), который не является первичным ключом (смотрите Primary key). Такой ключ может использоваться вместо первичного ключа и поэтому называется альтернативным.

BDE. Это аббревиатура от Borland Database Engine. Первоначально созданное как ядро для взаимодействия с базами данных DBASE и Paradox, BDE было расширено набором библиотек, известных как Borland SQL Links, и служит теперь промежуточным программным обеспечением для удаленного подключения к реляционным СУБД через библиотеки SQL Links. Таким образом, BDE поддерживает и навигационный noixoi и синтаксис SQL Имя "BDE" испотьзуется для loio, чюбы обозначить пакет, который содержит технологическое ядро (которое включает в себя инфраструктуру IDAPI (см. соответствующую статью) и общее ядро для осуществления запросов) плюс три IDAPI драйвера/ядра (для Paradox, dBase и текстовых форматов) плюс механизм ODBC Socket, который превращаем любой ODBC-драйвер в IDAPI-драйвер, доступный для использования в IDAPI-приложениях. Важно заметить, что так как BDE связывается с несколькими видами SQL-серверов с помощью SQL, то он не может распознать или воспользоваться преимуществами каждой функции в каждом конкретном реляционном сервере СУБД, поэтому поддержка некоторых функций InterBase в BDE ограничена или вовсе отсутствует.

BLOB. Сокращение для Binary Large Object. InterBase изобрел BLOB-поля несколько лет назад и компания "Боинг" воспользовалась их преимуществами для хранения звукозаписей в базе данных. Насколько я знаю, InterBase предложил первую реализацию BLOB на рынке реляционных СУБД. В InterBase BLOB могут хранить различные подтипы. Однако следует отметить, что изначально слово "BLOB" ничего не означало и, по-видимому, было заимствовано из какого-то кинофильма.


BLR: эта аббревиатура означает Binary Language Representation (двоичное представление языка). Внутри ядра сервера нет ни SQL, ни GDML, ни QUEL - нет реляционных языков, которые спроектированы, чтобы на них писали и читали люди Вместо этого запросы даны в двоичном представлении, которое является надмножеством известных нам реляционных языков Утилиты GPRE и QLI преобразуют SQL и GDML в BLR. Когда вы успешно компилируете хранимую процедуру или триггер, их скомпилированное представление сохраняется в формате BLR в BLOB-полях. Помимо этого, интерфейс DSQL преобразует все запросы к серверу в BLR. Вы можете воспользоваться утилитой командной строки isql для того, чтобы просмотреть BLR-представление триггеров, хранимых процедур, ограничений, значений по умолчанию и представлений, для этого необходимо выполнить команду SET BLOB ALL и затем выбрать соответствующие BLR-поля из системных таблиц (см. System tables).

Character set (набор символов). Языки программирования обычно используют не более двух типов наборов символов - ASCII и UNICODE. Первый набор ограничен 256 возможными символами (включая контрольные последовательности), тогда как второй набор содержит 65536 возможных символов. Проблема соиоиг в том что в базе данных необходимо хранить символы без чрезмерных затрат и в то же время необходимо корректно передавать эти символы клиентам, которые ожидают увидеть правильное изображение для каждого сохраненного кода, обозначающего символ. Не все кодовые таблицы используют одинаковые числовые значения для одних и тех символов, и к тому же некоторые алфавиты полностью отличаются друг от друга или содержат специальные символы. Таким образом, важно определить набор символов, соответствующий кодовой странице, которую будет использовать клиентское приложение. InterBase поддерживает как возможность задать набор символов для всей базы данных, так и возможность явно указать набор символов для каждого поля типа char или \aichdi Не существует набора символов, доступною везде внутри сервера. Если не указывать набор символов, то по умолчанию будет установлен набор символов NONE, который означает, что символы хранятся так, как они есть, и не предпринимается попыток преобразовать эти символы при передаче между клиентом и сервером.



Collation (сопоставление). Это понятие связано с операциями на данном наборе символов. Проще говоря, collation - это сравнение. Collation определяет, как инструкция SORT упорядочивает результаты выборки, как работает функция UPPER и как сравниваются поля в выражениях WHERE и HAVING в предложении SELECT

DDL. Это часть SQL, которая работает с определениями данных, т. е она управляет метаданными и потому именуется Data Definition Language (язык манипуляции данных)

DML. Это часть SQL, которая работает с данными и потому именуется Data Manipulation Language (язык манипуляции данных).

DPB. Это Database Parameter Buffer (буфер параметров базы данных), массив символов, используемый для передачи параметров и соответствующих им значений серверу при вызове функций InteiBase API. DPB включает следующие данные: первый байт, содержащий его версию, а затем идут наборы байтов для каждого параметра, причем каждый набор содержит сначала 1 байт, определяющий тип параметра, затем байт, содержащий длину данного набора после его типа, и потом собственно совокупность байт, которая несет ту или иную информацию в зависимости от типа параметра.

DSQL. Это аббревиатура для Dynamic SQL (динамический SQL). Когда вы читаете в документации: "доступно в DSQL", это означает, что инструкция доступна в программах, которые посылают на сервер SQL-команды (с параметрами или без), созданные во время выполнения. Этот способ работать с сервером является обычным для приложений на Delphi или ВСВ.



DSRI. Аббревиагчра дляDigital Slandaid Relational Inieiface (стандартный Цифровой реляционный интерфейс). Используется в Rdb/VMS, Rdb/ELN, а также в некоторых продуктах компании DEC

DYN. Это еще один язык с байтовым представлением для описания предложений, описывающих данные. Подсистема DSQL в InterBace передает разобранные DDL предложения компоненту, который запускает DYN, а затем Y-Valve (см. соотв. статью), который интерпретирует DYN и прямо изменяет активные системные таблицы (см. Active tables)



ESQL. Embedded SQL (встроенный SQL). Когда вы читаете в документации "доступно в ESQL", это означает, что инструкция доступна в приложениях, в которые встроены статические SQL-команды в формате BLR. См. статью GPRE для получения дополнительной информации.

FIB. Сокращение для Free InterBase Components (свободные компоненты для InterBase). Эти компоненты созданы Грегори Детцом (Greg Deatz), тем самым человеком, который создал библиотеки FreeUDFLib (Delphi/Windows) и FreeUDFLibC (C/Sun). FIB позволяет из программ на Delphi соединяться с InterBace напрямую, минуя BDE. FIB является основой для IBX (см. соотв. статью), и с тех пор, как появился IBX, FIB более не развивался.

FIBPlus. Сергей Бузаджи решил, что FIB достаточно хорош для построения на его основе нового пакета и включил туда множество новых функций, таких, как поддержка InteiBase 6, например. Кроме этого, изменения коснулись оптимизации работы с памятью и значительного увеличения скорости работы компонентов В отличие от FIB. FIBPlus также содержит ряд дополнительных компонентов и экспертов для Delphi и ВСВ, которые упрощают разработку при использовании FIBPlus. Пакет является коммерческим и в настоящий момент поддерживает все версии InterBase, начиная с 4-й, а также клоны InterBase: Firebird и Yaffil.

Foreign key (внешний ключ, FK). Это специальный не уникальный ключ (см. non-unique key), который используется для автоматического обеспечения ссылочной целостности (см. Referential integrity). В InterBase, когда вы создаете FK, соответствующий индекс создается автоматически (и всегда имеет порядок по возрастанию). Поле в мастер-таблице, на которое ссылается внешний ключ, должно иметь первичный ключ (Primary key) или уникальный ключ (Unique key).

Gbak, gdef, gfix, gpre, gsec, gstat, iblockpr and qli. Эти утилиты описаны в главе "Состав модулей InterBase" (ч. 4). Помимо этого, gpre and qli описаны ниже.

GDB. Это расширение, которое по общепринятому соглашению используется для баз данных InterBase. На самом деле InterBase может использовать любое расширение для базы данных. Это расширение служит напоминанием о тех днях, когда компания InterBase Corp называлась Groton Database Systems.



GDDL. Аббревиатура для Groton Data Definition Language. Был инструмент, который анализировал выражения на GDML и генерировал вызовы, которые определяли базы данных. GDML является эквивалентом для DDL в SQL.

GDML. Аббревиатура для Groton Data Manipulation Language. Этот реляционный язык был создан для использования людьми, как и SQL.GDML - первоначальный язык InterBase до сих пор поддерживается в утилите, называемой QLI. GDML является эквивалентом DML в SQL, но в то же время в него входят некоторые возможности DDL.

GPRE. Это препроцессор InterBase. В зависимости от платформы он поддерживает несколько языков и позволяет писать на них приложения, использующие встроенный SQL. GPRE на основе используемых в этих приложениях SQL-команд создает команды в BLR-формате. Чаще всего препроцессором поддерживается язык С, но в зависимости от платформы можно найти поддержку для языков COBOL и ADA. Когда вы читаете в документации: "доступно в GPRE", это означает, что описываемая инструкция может быть использована в программах со статическими SQL-командами. Эти программы предварительно обрабатываются препроцессором GPRE и затем передаются компилятору языка (например, C++) для создания исполняемого файла.

Hierarchical database (иерархическая база данных). Первый (изначальный) вид базы данных. Каждый объект (исключая корень) должен иметь одного и только одного родителя. Компания ШМ использовала этот вид базы данных до 1970 года.

IBX. Сокращение для InterBase Express. Начиная с Delphi 5 компания Borland решила выпускать два "экспресс"-продукта - ADO Express и ШХ. IBX представляет собой пакет компонентов, которые осуществляют прямое соединение с InterBase, используя его API, а не BDE. IBX был создан на основе FIB и был встроен в абстрактную иерархию наборов данных в VCL (Visual Component Library - основная библиотека в Delphi).

IВО. Сокращение для InterBase Objects. IBО - это альтернативный, созданный" "с нуля" коммерческий пакет для доступа к InterBase минуя BDE, через InterBase API. Его разработал Джейсон Вартон (Jason Wharton). ГВО - предназначенный для работы с базами данных пакет, основанный на оригинальных возможностях InterBase по управлению данными и транзакциями. Разработка ГВО основывается на модели клиент-сервер.



IDAPI. Сокращение для Integrated Database API (интегрированный прикладной программный интерфейс для работы с базами данных). IDAPI объединяет навигационный доступ к данных (ISAM) и ориентированный на запросы (SQL или QBE) доступ в модель согласованного курсора (consistent cursor model). IDAPI появилось в середине 1994 года и объединяет в себе работу, проделанную техническим комитетом IDAPI (включающим в себя компании Borland, IBM, Novell и Wordperfect). Первый вариант IDAPI был известен как BDE версии 2 (не существовало BDE версии 1, так как ранее она называлась ODA.Pl). Термин "IDAPI" используется не только для того, чтобы сослаться на часть BDE, реализующую API, но и для того, чтобы указать всю технологию целиком. Термин "IDAPI" вытеснил термин "ODAPI", который использовался в ранних реализациях этой технологии.

Identity key(идентифицирующий ключ). Хотя не существует строгого определения этого ключа, идентифицирующий ключ обычно представляет собой суррогатный ключ на основе поля типа INTEGER, которое автоматически заполняется сервером и может предполагать неявное создание лежащею в его основе индекса. Например, и Paradox и MS SqlServei имет специальный тип поля для этих целей InterBase явно не поддерживает такие типы полей, однако тот же самый результат может быть достигнут с помощью полей типа INTEGER, генератора и триггера (с большими усилиями - но и с большей гибкостью). Триггер типа BEFORE INSERT перед вставкой записи в таблицу вызывает функцию gen_id, которая получает следующее значение генератора. Приращение значения генератора может быть не равным единице, как в Paradox.

ISC: Сообщения об ошибках в InterBase начинаются с сочетания букв ISC, и поэтому люди часто спрашивают, что такое ISC. Это не более чем InterBase Software Corporation, наполовину независимая компания, принадлежавшая Borland. В 1998 году она была окончательно поглощена Borland. В конечном счете ISC возродилась в виде Open Source-проекта InterBase - Firebird.



Isolation level(ypoeenb изоляции). Это характеристика транзакции, которая определяет, как одна транзакция должна взаимодействовать с другими транзакциями в той же самой базе данных, в терминах видимости и блокировок. Обычно используются 3 уровня изоляции: Dirty Read (грязное чтение), Read Commited (подтвержденное чтение) и Repeatable Read (повторяющееся чтение). Первый режим является единственным уровнем изоляции в Paradox и поддерживается немногими реляционными СУБД. Второй уровень используется по умолчанию в почти всех реляционных серверах. Третий режим используется по умолчанию в InterBase, и реализован он таким образом, чтобы его использование не ставило сервер "на колени" (что не является фактом для других серверов). Помимо перечисленных уровней изоляции, InterBase предлагает еще более высокий уровень. известный как Repeatable Read with Stability (стабильное повторяющееся Чтение), который может использоваться для специальных и очень коротких транзакций. Благодаря возможности хранить множество версий записей InterBase также позволяет явно контролировать управление блокировками (избежать, ждать или выдать ошибку). Подобный контроль не имеет смысла на других "классических" серверах. (См. главу "Транзакции в InterBase. Параметры транзакций". - прим. авт.).

ISQL. Interactive SQL, утилита для интерактивного выполнения команд SQL. Когда вы читаете в документации: "доступно в ISQL", это означает, что описываемой инструкцией можно воспользоваться в инструменте пользователя для того, чтобы послать SQL-команды на сервер и увидеть результаты этих запросов.

JRD. Внутренняя часть (ядро) сервера InterBase. Это ядро обязано своим именем Джиму Старки (Jim Starkey), создателю JRD, которая является основой InterBase. JRD расшифровывается как Jim's Relational Database, что отличает ее от параллельно (и официально) разрабатывающейся части RDB в компании DEC.

Key. Несмотря на тот факт, что одной из характеристик реляционного множества является отсутствие повторяющихся элементов, теория множеств сама по себе не дает ответа, как избежать повторения В то же время в реляционной теории важно иметь возможность однозначно идентифицировать запись. Кроме того, хотя множество по определению не является упорядоченным, но упорядочение записей является способом избегать их дублирования, улучшать производительность и группировать кортежи. Существуют следующие типы ключей: unique (уникальный), primary (первичный), alternate (альтернативный), surrogate (суррогатный), identity (идентифицирующий), non-unique (неуникальный) и foreign (внешний).



LIBS. Это сокращение для Local InterBase Server (локальный InterBase- сервер). В прошлом, когда InterBase был закрытым, коммерческим продуктом, было два типа лицензий: локальная (позволяющая устанавливать соединения только с того же компьютера, на котором находится InterBase) и удаленная (позволяющая устанавливать соединения с удаленных компьютеров). Версии, которые поставлялись вместе с Delphi и Borland C++ Builder, были локальными и имели лицензии только для разработки. InterBase 6.0.1 не имеет ни лицензий, ни коммерческих ограничений, и потому понятие LIBS исчезло. Реализация LIBS никогда не отличалась с точки зрения кода от обычного InterBase, всегда использовался тот же самый исходный код, на который налагались ограничения, основывающиеся на лицензиях, которые можно было купить и установить.

MGA. Это аббревиатура для Multi Generational Architecture (архитектура множественных поколений). Это другое наименование многоверсионного ядра сервера, которое позволяет InterBase избегать блокирования и в то же время быстро восстанавливаться в случае отказа (поломки сервера, выключения питания и т. д.) без использования протокола транзакции (см. Transaction log).

Natural scan (натуральный перебор). В случае, если это возможно и имеет смысл, то сервер для поиска записей использует индекс, когда в SQL-предложении появляются части WHERE или GROUP BY. Когда сервер решает пройтись по таблице с первой по последнюю запись в том порядке, в котором они хранятся, то говорят, что ИСПОЛЬЗУЕТСЯ натуральный перебор. Заметьте, что иногда оптимизатор InterBase прав, когда он решает, что натуральный перебор быстрее, чем использование индекса.

Network database (сетевая база данных). Второй вид баз данных после иерархических. Каждый объект может иметь несколько указателей на другие объекты. Таким образом создается ячейка связей и отсюда происходит имя "сетевая".

Non-unique key (NVK, неуникальный ключ). Это ключ (смотрите статью key), который служит для того, чтобы идентифицировать диапазон записей, так как MIKI/KXYIBO ипиесй мог) i mieib ю /ice самое значение JIGIO ключа. Такой ключ предназначен для упорядочения записей и выполнения УСЛОВИЙ ссылочной целостности. В InterBase невозможно создать NUK как часть определения таблицы, вы должны непосредственно создать лежащий в основе NUK индекс. Исключением является случай, когда вы создаете внешний ключ (см. Foreign key) - в этом случае неуникальный ключ создается автоматически.



Null value (неопределенное значение). В действительности это должно называться Null state - неопределенное состояние. По существу NULL - это не значение. Он лишь указывает, что данному полю не было присвоено конкретного значения, поэтому его содержимое неопределенно. NULL - это не нуль и не пустая строка (нулевой длины), потому что все это определенные значения. Операции над NULL возвращают либо NULL, либо UNKNOWN и являются источником замешательства для начинающих разработчиков реляционных баз данных, тем более что проверка на NULL в запросе производится с использованием оператора IS NULL, а занесение в поле значения NULL - присвоением NULL нужному полю.

Object Oriented database (объектно-ориентированная база данных). Это новый тип баз данных, который все еще находится в разработке. В таких базаах данных действительно хранятся объекты. Эти базы данных не требуют нормализации. Схема базы данных отражает структуры данных в программе, и наоборот. Связи представлены указателями. Идея этих СУБД напоминает сетевые базы данных (см. статью network databases), но имеют более проработанную концепцию, потому что объекты выполняют некоторые задачи по управлению базы данных. Несмотря на множество усилий по расширению рынка для объектно-ориентированных серверов, они остаются в своей нише.

ODAPI. Это означает Open Database API (открытый прикладной интерфейс программирования баз данных). Этот проею начатся в 1990 году по инициативе Borland и впервые появился в СУБД Quattro Pro for Windows 1.0 в сентябре 1992 года. Это было начало проекта BDE.

ODBC. Сокращение для Open Database Connectivity. Это интерфейс уровня вызовов (call-level interface), который позволяет приложениям получать доступ к данным в любой базе данных, для которой существует ODBC-драйвер. Используя ODBC, возможно создавать приложения, которые работают с данными в любом базе данных, для которой конечный пользователь имеет ODBC-драйвер. Интерфейс ODBC предоставляет API, которое позволяет приложению не зависеть от сервера базы данных. В настоящее время InterBase v5 имеет ODBC-драйвер от компании Visigenic и более новый, поставляемый компанией Intersolv. К сожалению, ни один из них не предлагает полноценной функциональности, причем оба имеют ошибки и уже не разрабатываются. Новое поколение драйверов для InterBase 6 появилось в конце 2000 года - в том числе драйверы Gemini InterBase и Intersolve for InterBase 6.



ODS. Это аббревиатура для On-Disk Structure (буквально переводится как "структура на диске"). Это внутренняя структура базы данных InterBase. Для InterBase 4.0 ODS имело версию 8, для InterBase 4.2 - 8.2, для InterBase 5.x - 9 и для InterBase 6-10.

OLAP. Аббревиатура для On-Line Analytical Processing (оперативная аналитическая обработка). Объемы данных выросли настолько, что никто из людей, принимающих решения, не в состоянии просмотреть все необходимые данные. Менеджерам нужно определять направления, рассматривать исторические перспективы, пробовать различные сочетания типа "если что-то произойдет, то..." и т. д. Для того чтобы получать такие совокупные отчеты, серверы баз данных должны обладать достаточным быстродействием, чтобы прочитать многие мегабайты в пакетном режиме и в то же время клиенту вернуть результат за приемлемое время.

OLEDB. Это стандарт, разработанный компанией Microsoft, которая решила включить термин "OLE" в название некоторых своих технологий. Это низкоуровневая спецификация для доступа к реляционным и нереляционным данным. Предполагается, что эта технология будет более эффективной, чем ODBC, для реляционных баз данных. В 2001 году существовала реализация OLE DB только под Windows. Термин "ADO" обозначает надстройку над OLEDB.

OLTP. Это On-Line Transaction Processing (оперативная обработка транзакций) Это классическое требование к серверу баз данных клиенты должны совершать транзакции в реальном времени. В большинстве случаев вызываются короткие транзакции, в рамках которых выполняются определенные действия вроде обновления записей о покупателях. Задачи формирования отчетов более продолжительные, но они обычно не меняют данные.

Primary key (первичный ключ, или РК). Это уникальный ключ (см. Unique key), который используется для уникальной идентификации каждой записи в таблице и выполняет роль внешнего ключа (см. Foreign key) в зависимых таблицах. РК может содержать одно или больше полей. В InterBase во время создания первичного ключа автоматически создается соответствующий индекс - причем всегда в возрастающем порядке.



PSQL. Когда вы читаете в документации: "доступно в PSQL", это означает, что описываемая инструкция может быть использована в хранимых процедурах и триггерах на сервере. Отличия между процедурами и триггерами минимальны: процедуры не могут использовать специальные переменные OLD и NEW, в то время как триггеры не имеют параметров и не могут использовать предложение EXIT. Вы не можете явно вызывать триггеры из DML-выражений или из другого триггера или процедуры.

QLI. Это аббревиатура для Query Language Interpreter (интерпретатор языка запросов). Это интерактивный инструмент для извлечения данных (и манипуляции ими) из баз данных InterBase. QLI поддерживает значительные подмножества языков GDML, SQL и GDEF.

QUEL. Был такой академический реляционный язык, который предшествовал SQL. СУБД Ingres и Britten-Lee первоначально были QUEL-серверами.

RDB. Легко догадаться, что это аббревиатура для Relational Database (реляционных СУБД). Это была первая попытка компании DEC создать СУБД, используя такой подход. В то же время RDB стала начальным этапом создания InterBase, в котором теперь с префикса RDB$ начинаются все системные таблицы (см. System tables), for documentation purposes.

RDB$DB_KEY. Обычно упоминается как DB_KEY, это одна из недокументированных возможностей InterBase, которая может быть использована в динамическом SQL (см. DSQL) и в хранимых процедурах.

Referential integrity (ссылочная целостность). В теории баз данных это кон- цешция, которая по-простому может быть объяснена следующим образом: если А зависит от Б и производится попытка удалить или изменить Б таким образом, что какой-либо из изменяемых атрибутов нарушит зависимость А от Б, то в этом случае изменяемое действие должно быть либо отклонено, либо А должно быть изменено таким образом, чтобы синхронизироваться с изменениями в Б (т е чтобы зависимость не нарушилась); или если Б удаляется, то А также должно быть удалено или изменено таким образом, чтобы зависеть от чего-то другого. Ссылочная целостность реализована как автоматический механизм в сервере баз данных, который позволяет поддерживать ссылочную целостность (правила ссылочных ограничений) так, как это установлено пользователем с помощью настроек, определенных в стандарте SQL. Эти настройки распознаются и реализуются в каждом конкретном сервере СУБД.



Relational database (реляционная СУБД). Тип СУБД, который реализован с таких продуктах, как like InterBase, Oracle и Sybase. Основываясь на сильной теоретической базе, разработанной Коддом (Е. F. Codd) и К. Дэйтом (Chris Date), реляционная модель баз данных следует совокупности концепций в математике, в которой взаимосвязи представлены атрибутами "связей". Строго говоря, схема базы данных (структура ее объектов) должна проходить "нормализацию", в течение которой база данных приводится к "нормальным формам", именующимся "первой", "второй", "третьей", "Бойса - Кодда" (Boyce-Codd) и "пятой". На практике база данных, приведенная к 3-й нормальной форме, считается нормализованной. Одной из тем, связанных с нормализацией (которая до сих пор вызывает дискуссии), является представление и использование неопределенных значений (см. Null value).

Special system tables (специальные системные таблицы). Это две системные таблицы (см. System tables), которые находятся вне контекста транзакций. В отличие от остальных пользовательских и системных таблиц изменения в этих таблицах видны любой пользовательской транзакции без необходимости сделать подтверждение (commit) или откат (rollback). Это таблицы rdb$formats и rdb$pages. Вы можете прочитать в InterBase 6 Language Reference, что содержат данные таблицы. Компиляторы и серверы баз данных - это наиболее типичные случаи кода, которые зависят от своих собственных метаданных, используемых при описании данных и других метаданных, однако этот замкнутый круг должен быть где-то разорван, чтобы не попасть в ловушку "что было раньше: курица или яйцо".

SQL. Стандартный язык для управления реляционными СУБД. SQL - это сокращение для Structured Query Language. SQL является декларативным языком, потому что, будучи преобразованным в процедурные языки типа С или Pascal, SQL определяет вещи, которые должны быть выполнены сервером базы данных в терминах ожидаемых результатов, но не то, КАК они должны быть выполнены. Однако в SQL были добавлены функции для контроля над некоторыми особенностями сервера с помощью явного использования планов. Можно проследить причины добавления этих функций в работах компании ГВМ в 60-х годах.



[ Available in] ESQL, DSQL, PSQL and isql ([доступно в] ESQL, DSQL, PSQL and isq ). Если вы читаете руководства по InterBase, то можете увидеть фразы "доступно в SQL, DSQL и isql", когда объясняются какие-либо команды. В данном случае SQL означает Embedded SQL (ESQL), т. е. команды InterBase, которые можно писать внутри базового языка (С в данном случае), затем пропускать эти программы через препроцессор (GPRE), чтобы сгенерировать исходный код на С, который будет использоваться в вашем приложении. Это статические SQL- команды. DSQL означает динамический SQL (DSQL), т. е. команды SQL, которые можно создавать и отправлять InterBase во время выполнения программы. Такие команды не надо предварительно компилировать перед тем, как запустить приложение. И наконец, isql означает Interactive SQL и служит для обозначения инструментов, с помощью которых можно работать с InterBase, набирая команды и просматривая результаты их выполнения. Есть только один "родной" isql инструмент - инструмент командной строки isql.

SQL Links (связи с SQL). BDE может быть расширена дополнительными IDAPI SQL-драйверами, которые обеспечивают прозрачную возможность соединения с широко используемыми SQL-серверами без применения ODBC. Например, существуют SQL-драйвера для серверов InterBase, Oracle, Sybase, MS SQL и Informix. Эти драйверы называются SQL Links, потому что они связывают BDE с удаленными серверами базы данных.

Surrogate key (суррогатный ключ). Когда ни одно поле или комбинация полей в таблице не могут быть уникальными для каждой записи, то в качестве первичного ключа нужно использовать "искусственный" ключ (см. Key}. Обычно это или случайное сгенерированное значение (наподобие GUID), или постоянно возрастающее значение. Суррогатные ключи используются теми разработчиками, которые полагают, что первичные ключи (см. Primary key) должны основываться на генерируемых полях и не должны быть частью естественных атрибутов данных в моделируемой предметной области.



Sweeping. В InterBase это процесс, который собирает и освобождает старые и ненужные версии записей в базе данных. Этот процесс запускается при достижении порогового значения (известного как Sweeping Interval) и является следствием \nioi оиериюнной ар\шек1\ры InieiBase-сервера В других коммерческих СУБД uiKoio процесса не!. Процесс Sweeping может быть явно вызван с помощью у шли! администрирования InterBase. Sweeping - это сборка "мусора", выполняемая для каждой таблицы в базе данных.

System tables (системные таблицы). Реляционные СУБД самодостаточны. Это означает, что данные о структуре пользовательских таблиц также хранятся в таблицах. Эти таблицы, которые хранят данные о данных (метаданные или схему данных), создаются автоматически и называются системными таблицами. Они содержат информацию в том числе и о самих себе, что похоже на попытку выяснить, что был раньше - курица или яйцо. По соглашению названия системных.таблиц и их полей начинаются с префикса RDBS. Однако что действительно отличает системные объекты от остальных, так это особый флаг, распознаваемый InterBase'oM. который хранится в специальном поле в системных таблицах, - в этих таблицах хранится информация о различных объектах базы данных (таблицах, процедурах, генераторах и т. д.).

Transaction (транзакция). Логический набор действий, включающий в себя посылку одной или нескольких команд на сервер баз данных. Транзакция является атомарным действием: либо все действия в рамках транзакции выполняются полностью, либо полностью отменяются.

Transaction log (лог транзакций). Обычная реляционная СУБД (и некоторые объектно-ориентированные СУБД) использует отдельный файл, в котором хранится история транзакций. Когда происходит какая-либо поломка, сервер при запуске читает этот файл и определяет, какие изменения в базе данных нужно подтвердить, а какие отменить. InterBase не пользуется такими приспособлениями, потому что в случае возникновения поломки многоверсионная архитектура сервера (см. MGA) позволит начать работу сервера немедленно, а от ненужных версий записей, оставшихся от неподтвержденных транзакций, избавляться при следующей операции чтения-изменения этих данных.



Transaction zero. Все пользовательские транзакции могут только видеть подтвержденные данные или сообщить об ошибке, если новейшая версия записи была создана в рамках другой транзакции, но еще не подтверждена. Но существует транзакция №0, которая запускается сервером. Эта транзакция запущена в особом состоянии предварительной завершенности, поэтому она может видеть все изменения, произведенные в рамках всех транзакций, и завершенных, и подтвержденных, и все версии записей. Это необходимо, например, для осуществления условий ссылочной целостности (смотрите referential integrity) и для обслуживания индексов Оак как индексы отлеживают все версии во всех нолях, на которые они распространяются).

UDF. Сокращение для User Defined Function (определенные пользователем функции). В InterBase имеется небольшое количество встроенных функций, которые определяются стандартом SQL. Для расширения функциональности разработчик может писать функции, вызываемые InterBase-сервером таким образом, что они могут использоваться как встроенные. Библиотека FreeUDFLib служит демонстрацией возможностей UDF, также предоставляя набор очень полезных и часто требующихся функций.

Unique key (уникальный ключ). Значение, которое идентифицирует каждую мнись u\upic/M в ыблице и оыичас! ее oi осыльныч записей Сдедившедьио, юлько одно значение уникальною ключа используется для каждой записи. Простейшим типом уникального ключа является поле, значения которого не могут повторяться, как идентификатор (табельный номер) работника внутри компании. Часто одно поле не удовлетворяет условиям уникальности, поэтому нужно использовать комбинацию полей. Если не существует подходящей для уникального ключа комбинации, то используют суррогатный ключ (см. Surrogate key). Когда объявляется уникальный ключ в InterBase, то автоматически создается соответствующий индекс, причем всегда в порядке возрастания.

Y-Valve. Внутри InterBase имеет несколько "серверов", и когда происходит подсоединение, то InterBase должен решить, какой из серверов использовать для конкретной базы данных. Алгоритм для определения нужного сервера называется Y-valve (по определению Стива Тентона (Steve Tendon)). Помимо прочего Y- Valve должен определить, использовать ли прямой доступ к базе данных (локальная база данных) или подсоединиться к удаленному InterBase-серверу (в InterBase Classic-архитектуры) и какую версию использовать для чтения данной ODS (в случае, когда один и тот же InterBase-сервер может читать разные версии ODS).

GUID (Global Unique Identifier) - глобальный уникальный идентификатор. Под GUID обычно понимается 128-битовое уникапьное значение, которое получается с помощью механизма генерации GUID на основе текущей даты и времени, а также системных номеров процессора и материнской платы. Механизм GUID позволяет получить огромное количество уникальных идентификаторов. Поломч GUID можем быть использован для уникальной идентификации различных объектов (например, СОМ-серверов).


Содержание раздела