Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> За что можно полюбить XML? Где он к месту, а без него - никак? 
V
    Опции темы
SelenIT
Дата 4.4.2007, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 5
Всего: 401



Не знаю... То ли я слишком многого в этой жизни не понимаю (что, в общем-то, факт), то ли пока не видел красивого и грамотного применения XML к месту и ко времени, но почему-то у меня упорно складывается ощущение, что этот язык - какой-то массовый развод на модное слово и мощное железо smile. Очень надеюсь, что кто-нибудь вправит мне мозги по этой части, развеет мои дремучие заблуждения и поможет наконец полюбить этот мощный и универсальный язык разметки всей душой. Это для меня очень важно, т.к. последние полгода мне никак не удается уйти от XMLя в моей основной работе, а работа с нелюбимой вещью не приносит удовольствия...

Недоверие к XMLю зрело во мне давно, года с 2004-го, когда я впервые прочитал статью Джоэля Спольски насчет "назад к основам". И первый опыт получения контента от поставщика в виде 5-мегабайтного (всего лишь) XMLника (с последующим распарсиванием в PHP и заносом в обычную базу) подтвердили мои опасения - уж слишком часто не успевал этот XMLник загрузиться и распарситься полностью за отведенные полминуты... а еще бывало, что поставщик вообще забывал выдать файл в нужное время или выдавал его пустым, что ломало мне всю логику обновления контента... впрочем, тогда у меня было слишком мало опыта и я валил все исключительно на свои кривые ручки (скорее всего, небезосновательно).

...Ну хоть убей не могу понять, в чем великая сермяжная правда того, что в одном проекте при обмене данными, там, где по смыслу достаточно передать просто идентификатор, я вынужден отсылать многоэтажную байду на пару килобайт - лишь потому, что уже, мол, есть схема для этого типа данных, "спец. внутренний протокол" и т.п. Ну нечего больше делать этому "протоколу", кроме как гонять на сервер (!) кучу балластной разметки, чтобы там сервер поднапрягся, подумал и выцепил из этого запроса смысловую часть - один-единственный id. Зачем??? Зачем серверу человекочитаемая разметка? Да и ответу сервера так ли она нужна? Особенно с учетом того, что она занимает в несколько раз больше места, чем смысловая часть данных. Даже если пожать XML gzip-ом - все равно останется больше, чем если передавать те же данные в компактном формате, хотя бы чем-то а-ля JSON или php-шный serialize. А ведь ради этой мнимой "человекопонятности" (мнимость ее особенно заметна, когда львиная доля данных - сериализованные бинарники и все такое прочее;) намного усложняется парсинг и обработка пришедших данных на клиенте... Получается, что основная часть трафика - пересылка функционально избыточной разметки, не нужной по сути ни серверу, ни клиенту, ни пользователю...

В случае вебсервисов, наверное, аргумент про единообразие и стандартизацию более весом. Но был у меня относительно недавно случай, когда логика выборки с двух вебсервисов так и подмывала сделать один запрос наподобие SQL-ного джойна... в итоге пришлось в клиентской части городить препротивное сопоставление массивов в цикле - все оттого, что поставщики данных не предусмотрели прямой связи между (в SQL-аналогии) основной таблицей и справочником типов записей в ней, а из рамок установленных схем уже не выбраться... Не удобнее было бы, если бы механизм вебсервисов был и впрямь навроде SQL - чтобы фильтровать и компоновать данные мог сервер, выдавая уже более-менее компактный окончательный набор данных, который только стилизовать для вывода и останется? А так слишком уж, имхо, напоминает с точки зрения SQL-ных привычек ламерские поделки, где сходу выгребается в скрипт вся база, а дальше всё циклом...

Конечно, заманчиво выглядит XML для рекурсивных и древовидных структур, т.к. он сам как бы дерево. И чисто XML-ные БД для них. Вроде удобно. Только производительность зачастую такая, что использовать в активном проекте стыдно (а ведь Джоэль предупреждал...) и запросы к ней идут... как к тому же веб-сервису, с соотвтествующей избыточностью, накладными расходами на парсинг и всеми вытекающими...

Сумбурно получилось, но наболело. Завожу тему в "Рел. войнах" и нарочно делаю ее провокационно утрированной, т.к. хочу услышать в основном побольше аргументов горячих сторонников XMLя - я ведь заинтересован в том, чтоб они меня "перевербовали" и помогли/заставили этот XML полюбить... smile.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
nerezus
Дата 4.4.2007, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

5-мегабайтного (всего лишь) XMLника (с последующим распарсиванием в PHP и заносом в обычную базу) подтвердили мои опасения - уж слишком часто не успевал этот XMLник загрузиться и распарситься полностью за отведенные полминуты...
 хм, а ты уверен, что тормоза связаны с XML, а не с БД? ;)

Пример из жизни: универсальный формат.
Заказчик дает задание: сделать браузер по готовому контенту, при этом он может менять контент сам.
Пишу за пару минут парсер на основе готовой либы. Готово.

Цитата

Только производительность зачастую такая, что использовать в активном проекте стыдно
 Уверен про производительность? Тогда объясни, почему он работает медленно(с доводами и т.д.). На примере SAX или XmlPull парсера.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
SelenIT
Дата 4.4.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 5
Всего: 401



Цитата(nerezus @  4.4.2007,  08:16 Найти цитируемый пост)
хм, а ты уверен, что тормоза связаны с XML, а не с БД? ;)

В основном с получением этих 5МБ из сокета и... а также с моими кривыми ручками. Просто, имхо, будь там не XML, а обычный CSV (избыточность меньше) - было бы не 5, а лишь порядка 2 МБ, и пихнуть их в базу тоже было бы проще...

Цитата(nerezus @  4.4.2007,  08:16 Найти цитируемый пост)
универсальный формат

Оно, конечно, так... но те же CSV и JSON, на мой взгляд, тоже в своих пределах достаточно универсальны. А используя
Цитата(nerezus @  4.4.2007,  08:16 Найти цитируемый пост)
парсер на основе готовой либы

можно, по-моему, любой формат легко щелкнуть, хоть сжатый бинарный...

Цитата(nerezus @  4.4.2007,  08:16 Найти цитируемый пост)
объясни, почему он работает медленно(с доводами и т.д.).

Лично меня вполне убеждают доводы того же Джоэля...
Цитата

...Как хорошо известно каждому разработчику компиляторов, лексический разбор и парсинг представляют собой наиболее медленные стадии компиляции. Достаточно сказать, что при разборе XML и построении дерева в памяти используется масса строковых операций, которые, как мы выяснили, медленные. И это при условии, что у вас есть достаточно памяти, чтобы запихать туда всё целиком. В случае реляционных баз данных время, необходимое для перехода от записи к записи фиксировано и определяется временем выполнения одной команды процессора . Просто по определению. И благодаря файлам, отражённым в память, вам надо будет загружать в память только те страницы, которые используются. В случае XML, если парсить заранее, то затраты времени на перемещение от одной записи к другой фиксированы, зато при этом время запуска большое, а если заранее не парсить, то время перехода от записи к записи зависит от длины записи и в любом случае это сотни процессорных инструкций.



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ToshaCh
Дата 4.4.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 555
Регистрация: 10.11.2005
Где: Москва, РФ

Репутация: 2
Всего: 26



Давайте отделим мух от котлет.
Если вы работаете в маленькой компании где 2-20 человек и столько же заказов, то вопрос стандартизации можно оставить за бортом, но если фирма насчитывает несколько тысяч прогеров, то вопросы стандартизации и унификации програмного обеспечения стоят очень остро. 
То что очевидно одному прогеру, не всегда очевидно другому - от этого возникают тысячи тревобваний, распоряжений, описаний форматов и протоколов. И xml здесь очень ко двору, как единый формат передачи и хранения данных.


--------------------
Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 
--
Oracle это не только способ отмывания денег, но и вполне себе преличная база данных.
PM MAIL Jabber   Вверх
nerezus
Дата 4.4.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

было бы не 5, а лишь порядка 2 МБ, и пихнуть их в базу тоже было бы проще...
 эээ... т.е. чудесным образом данных для пихания в базу стало бы меньше? Интересно, почему я тебе не верю =)
Илди ты пихал в базу прямо XML?

Цитата

лексический разбор и парсинг представляют собой наиболее медленные стадии компиляции.
 Ну начнем с того, что лексический анализ не такой уж и медлленный(а точнее я не понимаю, что в нем медленного вообще). Та же классическая State Machine(читаем 1 символ, заносим в буфер состояния, возможно меняем буфер/состояние при некоторых условиях) достаточно быстрые.

Цитата

В случае реляционных баз данных
 Ааа, так сравниваем оказывается не с другими форматами, а с СУБД? Естественно СУБД быстрее работает, но ты ушел от темы(т.е. эта цитата совсем не в тему). 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
SelenIT
Дата 4.4.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 5
Всего: 401



Цитата(nerezus @  4.4.2007,  12:35 Найти цитируемый пост)
т.е. чудесным образом данных для пихания в базу стало бы меньше? 

Нет, конечно. Меньше стало бы данных для скачки с удаленного хоста smile. Пихать в базу-то мне было все равно из чего. А вот каналу, который это через себя кое-как проталкивал - похоже, нет...

Цитата(nerezus @  4.4.2007,  12:35 Найти цитируемый пост)
что лексический анализ не такой уж и медлленный.... Та же классическая State Machine(читаем 1 символ, заносим в буфер состояния, возможно меняем буфер/состояние при некоторых условиях)

От количества условий разве быстродействие этой машины не зависит? А у XMLя с его свободным форматированием, атрибутами и т.п., по-моему, условий существенно больше, чем у простейшего CSV, к примеру...

Цитата(nerezus @  4.4.2007,  12:35 Найти цитируемый пост)
Ааа, так сравниваем оказывается не с другими форматами, а с СУБД?

Сравниваем с альтернативами при каждом конкретном применении. Как средство обмена данными - с др. форматами, как хранилище - с СУБД... Имхо, сравнение вполне корректно.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
sergejzr
Дата 4.4.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 7
Всего: 360



1) XML-это как определние интерфейса. Отдаёшь интерфейс разработчикам разных модулей, в конце всё работает вместе без запинки.
2) На самом деле проблемой в сетевом программинге также является передача обьектов о сети. Здесь поможет ХМЛ, как кроссплатформеная и практически неубиваемая сетевыми протоколами штука.
3) В веб-программинге преобразование XSLT рано или поздно будет основой дле отображцения страниц. Минимум трафа (только ХМЛ), красивые сложные страницы с различными отлуками (ХСЛТ+ХМЛ).

Ну а вообще мой покойный проф стоял у истоков создания ХМЛя. Он говорил, что просто нелегко было договориться на общий формат между кучей людей, институций и компаний по всему миру. В один прекрасный момент разработали ХМЛ, который более-менее устроил всех smile 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
SelenIT
Дата 4.4.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 5
Всего: 401



Цитата(sergejzr @  4.4.2007,  14:12 Найти цитируемый пост)
практически неубиваемая сетевыми протоколами штука

Вот это уже интереснее! В чем неубиваемость? Пока, по-моему как раз наоборот - одна скобочка побъется и гудбай, валидность... но я действительно пока многого не понимаю...

Цитата(sergejzr @  4.4.2007,  14:12 Найти цитируемый пост)
Минимум трафа (только ХМЛ)

Вот здесь - или я извращенец, или плохие примеры видел... Ну не могу я согласиться, что передача 2к разметки ради одного id-шника (реальный пример из моего теперешнего проекта) есть минимум трафа... Все равно ведь получается, что основная масса трафа - не данные и даже не оформление, а служебная инфа...

Цитата(sergejzr @  4.4.2007,  14:12 Найти цитируемый пост)
ХМЛ, который более-менее устроил всех

Т.е. компромисс по принципу меньшего из зол?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
sergejzr
Дата 4.4.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 7
Всего: 360



Цитата(SelenIT @  4.4.2007,  13:24 Найти цитируемый пост)
Вот это уже интереснее! В чем неубиваемость? Пока, по-моему как раз наоборот - одна скобочка побъется и гудбай, валидность... но я действительно пока многого не понимаю...

Неубиваемая, потому что в ХМЛ символы ASSCI. Попробуй через ФТП в нормальной моде перекачать файл с юниксовского сервера на виндосовский. Или передать бинарный обьект кроссплатформенно, или из приложения, написанного на Ява в приложение на Си.
В любом случае ХМЛ подойдёт на ура, а с бинарниками будут траблы, начиная с Big/Little Endian и заканчивая особенностями компилятора обьектов.

Цитата(SelenIT @  4.4.2007,  13:24 Найти цитируемый пост)
Т.е. компромисс по принципу меньшего из зол? 

Ну механизма, оптимального для всего - не бывает.

Цитата(SelenIT @  4.4.2007,  13:24 Найти цитируемый пост)
Вот здесь - или я извращенец, или плохие примеры видел... Ну не могу я согласиться, что передача 2к разметки ради одного id-шника (реальный пример из моего теперешнего проекта) есть минимум трафа... Все равно ведь получается, что основная масса трафа - не данные и даже не оформление, а служебная инфа...

Ну мы начали разработку Vingrad CMS http://sergejzr.jino-net.ru/vcms/index.php зайди туда ради интереса и кликни правой кнопкой "просмотр исходного кода". Почувствуешь разницу smile ПС: не смотри, если медленно грузит - хост медленный, зато после первой загрузки даже на нём летает(ХСЛТ лежат себе в кэше).



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 4.4.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Лично мне XML наоборот нравится. В частности он очень часто используется для конфигурационных файлов. Они получаются весьма наглядными и легко читаются.

По поводу БД на XML, он для этого не предназначен. Отсюда и низкая производительность.

Что касается гоняния одного id в формате XML, это вполне нормально. Сегодня вам надо один id перегнать, а завтра id и код возврата, послезавтра id, код возврата и сообщение об ошибке, и т.д. XML - это все передаст.
А вот с самопальным бинарным форматом, надо будет постоянно модифицировать парсер и генератор. И как только будет достигнута достаточная сложность (вложенные структуры, необязательные элементы и т.д.) пойдет огромное количество проблем, которые в XML парсерах уже давно решены. Плюс XML формат позволяет легко парсить на разных языках.

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

JSON конечно подойдет для простейших случаев, но в целом он слишком примитивен.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
SelenIT
Дата 4.4.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 5
Всего: 401



Цитата(sergejzr @  4.4.2007,  14:41 Найти цитируемый пост)
Неубиваемая, потому что в ХМЛ символы ASSCI.

sergejzr, спасибо, весомый аргумент. Насколько я понял, речь именно о тегах - данные ведь, по идее, могут быть и в UTF?

Цитата(LSD @  4.4.2007,  14:43 Найти цитируемый пост)
часто используется для конфигурационных файлов. Они получаются весьма наглядными и легко читаются.

Это да, будет поудобнее ini-шек. Но конфиги, AFAIK, как раз по сети обычно не передаются...

Цитата(LSD @  4.4.2007,  14:43 Найти цитируемый пост)
По поводу БД на XML, он для этого не предназначен.

Но бывает, что требуется...

Цитата(LSD @  4.4.2007,  14:43 Найти цитируемый пост)
...пойдет огромное количество проблем, которые в XML парсерах уже давно решены. Плюс XML формат позволяет легко парсить на разных языках.

Тоже трудно не согласиться;)

Цитата(LSD @  4.4.2007,  14:43 Найти цитируемый пост)
Или ты сомневаешься, что можно написать веб сервис который будет выполнять произвольный запрос к БД и возвращать результат?

Сомневаюсь, что описание этого запроса посредством XML будет оптимальным способом его передачи... впрочем, с открывающимися мне в этом топике новыми знаниями мои сомнения уже не так глубоки smile. А пример был исключительно к истории моего непростого эмоционального отношения к XMLю...

Спасибо! Похоже, картина для меня начинает понемногу проясняться... smile


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
LSD
Дата 4.4.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(SelenIT @  4.4.2007,  15:02 Найти цитируемый пост)
Насколько я понял, речь именно о тегах - данные ведь, по идее, могут быть и в UTF?

Есть esc-последовательности, так что весь XML может быть в ASCII.

Цитата(SelenIT @  4.4.2007,  15:02 Найти цитируемый пост)
Сомневаюсь, что описание этого запроса посредством XML будет оптимальным способом его передачи...

Смотря как на это посмотреть. Да объем данных можно уменьшить, если передавать их в бинарном формате, но если использовать GZIP, то тут уже выигрышь будет не так велик. А время парсинга все равно не критично, учитывая скорость сети.
Зато мы получаем данные в универсальном формате, который воспринимается многими программами, и может быть достаточно легко трансформирован с помощью XSLT.

У XML есть своя ниша применения, и в ее пределах он достаточно хорош. А когда сделают XML Binary, то еще от части недостатков удастся избавиться.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergejzr
Дата 4.4.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 7
Всего: 360



Цитата(LSD @  4.4.2007,  15:26 Найти цитируемый пост)
XML Binary

Можно ссылку? 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 4.4.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



XML Binary, но это пока только проект. Готовых спецификаций, насколько я знаю, там нет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1025 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.