СУБД использует по крайней мере один коммуникационный формат данных, т.к. она же не может передавать вообще без всякого формата (это банально). И если мы заставим использовать широко-распространненный формат вместо персонального формата данной СУБД, то мы удалим прокладки, которые конвертируют персональный формат в широко распространненный. Это очень актуально в связи с тем, что прикладные специалисты, автоматизирующие свою деятельность без программистов, не могут настроить библиотеки таких прокладок как 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.
Для формирования ответа пользователю база данных может использовать не только свои данные, но и запросить данные у других баз данных из триггера (XML делает совместимыми базы данных различных производителей; если поля username и password таблицы sys равны null, то база данных отправляет как 'anonymous').
|
|