понедельник, 26 января 2009 г.

XML. За и против

Один из создателей стнадарта XML, Тим Брей, написал заметку XML Is Too Hard For Programmers, а затем еще одну, менее пессиместичную Why XML Doesn't Suck. Обе заслуживают внимания.

Кроме того, существует еще один, весьма интересный документ (требуется регистрация): The Pros and Cons of XML

Вроде все доводы за вполне разумны. Все красиво на бумаге - данные и метаданные хранятся вместе, interoperability, readability как для людей так и для машин, обобщенный стандарт для представления Unicode, хранить можно древовидные и плоские данные и прочая, прочая. А то что чересчур большие файлы - ничего страшного, можно юзать сжатие, например на транспортном уровне. Сложно парсить и выбирать данные? Ничего, есть библиотеки для любого языка программирования. Нет нормальных XML-редакторов? Не беда, появятся.

И все же, всякий раз работая с XML-файлами возникает какое-то интуитивное неприятие. "Блин, опять этот хренов XML!" - проносится мысль, когда появляется задача с исходными данными в этом формате. Кажется что-то очень, в корне не правильно.

Я, вообще-то ничего против XML не имею, но только тогда, когда он используется для того, для чего был создан.

А ведь XML ни в коем разе не является форматом хранения данных, хотя в последнее время частенько наблюдается тенденция к его использованию именно для этого. Изначально назначение XML - передача данных и interoperability. XML - является форматом write-once, то есть он не предназначен для того, чтобы записать на хард, а потом иногда вносить изменения. Его назначение в том, однажды вывести свои данные в формате XML, чтоб кто-то это прочел преобразовал в свой формат и всё! На этом жизнь XML-файла должна заканчиваться.

Почему? Потому что модификация такого формата как XML довольно дорогостоящая - переписывается весь файл, плюс если сделать это прилично, то нужно и запирание на уровне файловой системы.

А сейчас есть тенденция подменять БД статическими XML-файлами, при том, что главное назначение СУБД: не хранение данных, а обеспечение параллельного доступа к ним из разных процессов, с атомарными операциями. Данніе можно сохранять любым способом - хоть на бумаге единички и нолики рисовать или в перфокартах дырки долбить. но параллельный доступ и атомарные операции - это совсем другая вещь, для которой и создаются СУБД.

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

Какой формат проще для чтения и редактирования (для человека)?

127.0.0.1     localhost locahost.mydomain.com
11.12.13.14 myhost myhost.mydomain.com

или

<?xml version="1.0" encoding="ISO-8859-1"?>
<hosts>
<host type="IPv4">
<address>127.0.0.1</address>
<aliases>
<alias>localhost</alias>
<alias>localhost.mydomain.com</alias>
</aliases>
</host>
<host type="IPv4">
<address>11.12.13.14</address>
<aliases>
<alias>myhost</alias>
<alias>myhost.mydomain.com</alias>
</aliases>
</host>
</hosts>


Хотя дело привычки наверное.

Или вот, к примеру Sun заменила inetd систему сервисов на какое-то *** с кучей XML файлов и кучей допутилит. Это вместо 1-го файла и никаких утилит.

3 комментария:

Анонимный комментирует...

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

Alex Petrov комментирует...

О том и речь! Когда XML используется для организации взаимодействия между программами, то я двумя руками за.
А когда в качестве замены базы данных или plain-text конфигов - хочется плеваться.

Unknown комментирует...

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