Перечень статей   Терминология   Choose language


Преимущества широко-распространненных конвенций над частными


Формат данных

СУБД использует по крайней мере один коммуникационный формат данных, т.к. она же не может передавать вообще без всякого формата (это банально). И если мы заставим использовать широко-распространненный формат вместо персонального формата данной СУБД, то мы удалим прокладки, которые конвертируют персональный формат в широко распространненный. Это очень актуально в связи с тем, что прикладные специалисты, автоматизирующие свою деятельность без программистов, не могут настроить библиотеки таких прокладок как php, perl, etc.

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

В случае соединения таблиц тег получает название таблицы, первой упомянутой после слова 'from'. Выборка дерева для вывода осуществляется также, как для вставки в xml-поле.

DMLвывод
select @id, @data from tab;
<tab   id=3     data=12.3>
<tab   id=7     data=23.4>
<tab   id=10    data=34.5>
<tab   id=25    data=45.6>
select tab2/@data2, tab1/@data1
from   tab1, tab2
where  tab2/@fld2=tab1/@fld1;
<tab1  data2=3  data1=12.3>
<tab1  data2=7  data1=23.4>
<tab1  data2=10 data1=34.5>
<tab1  data2=25 data1=45.6>
select * from a.b.c;
<a     id=1     data=12.3>
  <b   id=10    data=23.4>
    <c id=100   data=56.7/>
    <c id=101   data=67.8/>
  </b>
  <b   id=20    data=34.5>
    <c id=200   data=78.9/>
    <c id=201   data=89.1/>
  </b>
  <b   id=30    data=45.6>
    <c id=200   data=91.2/>
  </b>
</a>
select '<?xml-stylesheet
  type="text/xsl" href="a.xsl"?>';
<?xml-stylesheet type="text/xsl" href="a.xsl"?>'

Протокол передачи

СУБД использует по крайней мере один коммуникационный протокол, т.к. она не может работать вообще без него (это тоже банально). И если мы заставим использовать широко-распространненный протокол вместо персонального протокола данной СУБД, то мы удалим прокладки, которые конвертируют персональный протокол в широко распространненный. Это опять же очень актуально в связи с тем, что прикладные специалисты, автоматизирующие свою деятельность без программистов, не могут настроить библиотеки таких прокладок как php, perl, etc.

Из всех протоколов (http, ftp, smtp, pop3 и т.д.) наиболее употребительным является HTTP, поэтому именно его и надо использовать. Если агент пользователя (например, браузер) обращается к закрытым данным (открыты только данные пользователя 'anonymous'), то СУБД спросит логин также через HTTP. Значением поля может быть картинка, но при выводе этого поля как значение поля отправляется не картинка, а ее URL для отдельного HTTP-запроса агента пользователя.

Соответственно программа-терминал (для Oracle это 'SqlPlus.exe', для Postgres это 'PgSql.exe', для InterBase это 'iSql.exe' и т.д.) также использует HTTP.

c:/dir>  terminal.exe remote.database.com username password a.xml

c:/dir>  terminal.exe 127.0.0.1           username password a.xml

Для формирования ответа пользователю база данных может использовать не только свои данные, но и запросить данные у других баз данных из триггера (XML делает совместимыми базы данных различных производителей; если поля username и password таблицы sys равны null, то база данных отправляет как 'anonymous').

sql>     update sys set
           @ral="database.remote.com",
           @username="tomson",
           @password="my_pwd";
sql>     select * from a.b.c;
sql>     update sys set
           @ran="101.102.103.104",
           @username="tomson",
           @password="my_pwd";
sql>     select * from a.b.c;

Тюрин Дмитрий



Перечень статей   Терминология   Choose language