Database Support in Inferno / Поддержка баз данных в Inferno: Chapter 1

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Database Support in Inferno

оригинал расположен по адресу: http://agni.csa.iisc.ernet.in/OperatingSystems/Inferno/dbinterface/dbinterface.html

rapidfx 24.04.09 в 09:06

0

D. Knudsen

rapidfx 24.04.09 в 09:06

0

DMTS Inferno OS Development Team

rapidfx 24.04.09 в 09:06

0

(dknudsen@lucent.com)

rapidfx 24.04.09 в 09:06

0

Lucent Technologies

rapidfx 24.04.09 в 09:06

0

Bell Labs Innovations

rapidfx 24.04.09 в 09:06

0

600 Mountain Ave.

rapidfx 24.04.09 в 09:06

0

Murray Hill, NJ 07974

rapidfx 24.04.09 в 09:07

0

ОБЗОР
Inferno это операционная система которая предоставляет инфраструктуру для рапределенных, сетевых приложений. Inferno дает возможность любому приложению, написанному на языке программирования Limbo, запускаться под вирутальной машиной Dis на всем множестве платформ и сетей. Inferno предоставляет файло-образный интерфейс к ресурсам и сервисам что дает возможность динамически конструировать пльзовательское пространство имен. Приложение Inferno может получить доступ к ресурсам и сервисам в этом пространстве имен даже в том случае если они располжены в сети. Компонент Inferno, Styx, предоставляет прозрачную коммуникационную среду со встроенными средствами безопасности над различными сетями.

rapidfx 24.04.09 в 09:07

0

Мир баз данных разнороден, даже тот что поддерживает доступ через Structured Query Language (SQL). Inferno может обеспечить общий стандартный интерфейс к этому подмножеству баз данных услиливая мощь сетевой поддержкой, динамическим пространством имен, и надежной безопасностью.

rapidfx 03.05.09 в 13:31

0

Вс первом выпуске Inferno включен интерфейс (API) к базам данных и удаленным сервисным программам, что позволяет разработчикам проектировать и реализовывать приложения баз данныхкоторые будут совместимы с последующими выпусками Inferno.

rapidfx 03.05.09 в 13:35

0

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

Введение

rapidfx 03.05.09 в 13:38

0

Разработчики приложений получат выгоду от следующих уникальных особенностей Inferno:

rapidfx 03.05.09 в 13:40

0

При проектировании язык Limbo отражал лежащие в его основе возможности системы Inferno. В следствии этого, Limbo относительно "выразительный" язык, дает возможность быстрее разработать и написать приложение, с меньшими усилиями как на стадии кодирования, так на этапе отладки.

rapidfx 03.05.09 в 17:19

0

Как и в случае с любым языком, который скомпилирован в код виртуальной машины и исполняется в подсистеме виртуальной машины, нет нужды портировать приложение на другую платформу (до тех пор, пока эта платформа поддерживается нативно или в хостед режиме -- и количество этих платформ ростет.)

rapidfx 03.05.09 в 17:22

0

И поскольку Inferno-система намного меньше других операционных систем со сходными возможностями, Inferno-приложения на "тонких" клиентах, таких как приемники кабельного телевидения, сетевые компьютеры и продвинутые телефоны могут предоставить доступ к базам данных промышленного уровня. Для большинства устройств стесненных аппаратными ресурсами, приложение может быть запущено на сервере, используя "клиента" в качестве устройства предоставляющего ввод-вывод.

rapidfx 03.05.09 в 17:28

0

С Inferno, приложения баз данных получают новое и расширенное применение на широком спектре сетевых устройств. Такое использование включает персонифицированные сервисы, электронную коммерцию, информационные подсказки, и т.п.

Модуль DB

rapidfx 03.05.09 в 18:35

0

Кошда разработчику приложений баз данных нужен простой, единообразный интерфейс API, который позволяет стандартизированный доступ к (вероятно удаленным) базам даных на не-Inferno платформах. Inferno дает такую поддержку, в виде двух различных подходов. Первый, часть загружаемого модуля Dis, DB, написанного на Limbo, и предоставляет API делающий возможным доступ к любой базе данных поддерживающей SQL. Второй, часть программного обеспечения Inferno для поддержки баз данных на сервере.

rapidfx 03.05.09 в 18:41

0

Разработчик получает доступ к модулю DB стандартным образом в Limbo (смотри Главу 6, Определения языка Limbo, в Руководстве пользователя Inferno, для получения информации об особенностях синтаксиса и семантики Limbo)

rapidfx 03.05.09 в 18:43

0

include "db.m"; : db := load DB DB->PATH;

rapidfx 03.05.09 в 18:45

0

Модуль DB содержит одну функцию, open, и один абстрактный тип данных (adt), DB_Handle. Вфзов функции осуществляется следующим образом:

rapidfx 03.05.09 в 18:46

0

dh : ref DB->DB_Handle;
(dh, errs) = open(addr, user, password, dbname);

rapidfx 03.05.09 в 18:46

0

где первая строка объявляет переменную хранящуюю запись adt, а вторая строка вызывает функцию и заполняет запись. (Если вызов функции терпит неудачу, errs содержит описание сбоя.)
Функция open иллюстрирует способность Limbo-функций возвращать множество значений в форме тьюплов. Это типичное использование, где первый элемент тьюпла не nil, а второй nil в случае успешного вызова, и наооборот true если вызов был неудачен. addr is это строка в виде netaddr!service, где netaddr это сетевой адрес сервера баз данных, например, db.server.lucent.com, и service общепринятое название infdb, сервиса баз данных Inferno. Строки user и password требуются многими СУБД для контроля доступа к данным в базе называнной dbname (это также строка). Возвращаемое значение dh ссылается на запись абстрактного типа данных, DB_Handle, которая включает функции нужные для манипулирования открытой базой данных:

rapidfx 03.05.09 в 18:59

0

(status, errmsg) = dh.SQL(sql_command);

rapidfx 03.05.09 в 18:47

0

numcols = dh.columns();

rapidfx 03.05.09 в 18:47

0

row = dh.nextRow();

rapidfx 03.05.09 в 18:47

0

(status, field) = dh.read(col_number);

rapidfx 03.05.09 в 18:47

0

count = dh.write(param_position, field);

rapidfx 03.05.09 в 18:47

0

col_name = dh.columnTitle(col_number);

rapidfx 03.05.09 в 18:47

0

Первая из них запрос в форме Structured Query Language (SQL), к серверу. Если запрос выдал набор результатов (обычно вывод запроса select), тогда columns содержит число колонок в результирующем наборе, nextRow переходит к следующей строке результата, за один раз, и columnTitle и read возвращает заголовки колонок и значение текущей строки соответственно. Имена колонок возвращаются как строки, в то время как значения полей возвращаются в виде массива байт, в следствии возможности появления двоичных данных (все другие типы данных, включая числовые и дату, возвращаются как стоки).

rapidfx 03.05.09 в 19:04

0

Функция write используется только тогда, когда приложение должно вставить или обновить двоичные данные в поле; потребность в этом существует из-за того, что соответствующий запрос SQL не может содержать двоичных данных, только местодержатели (placeholders) представляют действительные данные. Аргумент param_position это целое число (1, 2, и т.д.) ссылается на первый, второй и т.д. местодержатели в SQL подзапросе. Параметр field это массив байт, для возможности передачи двоичных данных.

rapidfx 03.05.09 в 19:22

0

Разработчики приложений баз данных могут разрабатывать более сложные и специализированные функции вместо этих общих и низко-уровневых функций.

Подробнее о модуле

rapidfx 03.05.09 в 19:29

0

Модуль DB позволяетнапрямую использовать концепцию пространства имен Inferno для реализации простого дизайна. В общем, функция open открывает сетевое соединение к указанному сервису, путем указания сетевого адреса. При помощи монтирования директории в локальное пространство имен, в этой директории удаленный конец является набором файлов для "обслуживания". Затем за open, обслуживаемые файлв получают поддержку API, или если программист предпочтет, то может читать или писать напрямую через файловые дескрипторы в adt DB_Handle.

rapidfx 03.05.09 в 19:29

0

Плотно связанный с API, обслуживаемые файлы это: ctl, SQL, cols, row, entry, and title. Файл ctl используется только для отправки имени пользователя, пароля и имени базы данных удаленном у концу. Файл SQL используется для записи запросов SQL для удаленной стороны, а оставшиеся файлы используются для реализации соответствующих API. Например, для реалтзации функции чтения, указанный номер колонки записывается в файл cols, и после этого считывается файл entry, до конца файла (eof), для получения значенийполей в колонке текущей строки.

rapidfx 03.05.09 в 19:39

0

Преимущества такой реализации в том, что данные отсылаются взад и вперед от клиента к серверу, инкапсулированными в пакеты Styx, таким образом могут использоваться все достоинства безопасности протокола Styx.

Модуль Server

rapidfx 03.05.09 в 19:42

0

Вторая часть программного обеспечения предоставляемого Inferno для поддержки баз данных это сервер. Разработчик не должен напрямую взаимодействовать с сервером, который скрывает все сложности получения данных из настоящих баз.
Это сложно потому что:

rapidfx 03.05.09 в 19:47

0

существующие СУБД работают на платформах отличных от Inferno, и

rapidfx 03.05.09 в 19:49

0

разновидности существующих СУБД затрудняют написание общей программы для доступа к базам данных.

rapidfx 03.05.09 в 19:51

0

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

rapidfx 03.05.09 в 20:00

0

К несчастью, SQL это эволюционизирующий стандарт. Начальный чтандарт был принят в 1986, затем был SQL 89, текущий SQL 92, и новый находится в работе. Пока изменения, обратно-совместимы, различные выпуски разных производителей СУБД поддерживают разные стандарты.

rapidfx 03.05.09 в 20:03

0

В лобавок, существует несколько рограммных интерфейсов к SQL, включая статические и динамические встроенные SQL и интерфейсы уровня вызова (CLI). Основатель (образующее основание/основа) техник встроенных выражений SQL в других языках, вызывает для использования препроцессор. Различия между статической и динамической версиями в том, что основатель, SQL выражения неизменны во время компиляции, в то же время они могут создаваться во время выполнения. CLI это набор API поддерживаемый библиотекой функций.

rapidfx 03.05.09 в 20:12

0

И наконец, производители не стеснялись предоставлять закрытые проприетарные расширения к SQL и их CLI.

rapidfx 04.05.09 в 08:55

0

Общим примером CLI является интерфейс Open Database Connectivity (ODBC), работающий на различных платформах Microsoft Windows. ODBC не ограничен конкретными СУБД, но зависит от производителей СУБД которые должны написать драйвер, в форме динамически загружаемой библиотеки поддерживающей предопределенный набор API. На текущий момент такие драйвера есть для большинства СУБД, ODBC предоставляет "практически универсальный" доступ к базам данных, пока есть соглашение на самом низком уровне между ODBC и SQL.

rapidfx 04.05.09 в 09:01

0

Производители также поздно начали поддерживать серверы позволяющие обращаться клиентским приложениям к их СУБД по сети. И снова, к несчастью, протоколы используемые этими серверами закрытые.

rapidfx 04.05.09 в 09:03

0

Суть вышесказанного, в том, что приложения баз данных соединены с базами данных через некий прозрачный клей, который предоставлен производителем СУБД, и обычно написан на языке C, и верояно потребуется запуск препроцессора перед компиляцией.

rapidfx 04.05.09 в 09:09

0

Общая архитектура для поддержки баз данных в Inferno, такова:

rapidfx 04.05.09 в 09:10

0

В случае установки Inferno поверх основной ОС на платформе базы данных для обслуживания специальных файлов представляющих базу данных в модуле DB. Кавычки вокруг квадрата "Стандарт" в приложении базы данных, оно должно отличаться для различных СУБД, и должны быть портированы на каждую платформу поддерживающую каждую СУБД/базу данных. (СУБД/база данных в действительности единой на разных платформах, детали соединения скрыты о приложения, производителем кода встроенного в приложение.)

rapidfx 04.05.09 в 09:51

0

Стандартный метод для доступа к базам данных из Inferno задействует разные программные процессы и методы межпроцессных коммуникаций. Существуют способы увеличивающие эффективность доступа к базам данных содержащих большой объем данных передающихся в каждой транзакции, и команда разработчиков Inferno преследует эту цель. Но все изменения должны быть на удаленном конце и не затрагивать API, приложения написанные сегодня в сравнении DB API не нужно будет перекомпилировать, когда будут внесены улучшения.

Inferno 1.0

rapidfx 04.05.09 в 13:40

0

Выпуск Inferno 1.0 включает модуль DB с API полностью описанным выше, за исключением того, что там нет возможности обновления полей двоичного типа.

rapidfx 04.05.09 в 13:42

0

Приложение баз данных "стандарт" включено в выпуск 1.0 это приложение ODBC которое запускается на Windows 95 и Windows NT и общается с модулем DB (нет необходимости в Inferno поверх основной ОС). Эта программа, называемая infdb, поддерживает синхронные соединения от нескольких Inferno-процессов к одной или разным базам данных.

rapidfx 04.05.09 в 13:47

0
Минутку...

Следующая страница →