Пишу ORM для работы с XML файлами на том же уровне что и ORM которые работают c SQL-БД. Как вы думаете, стоит ли включать это в состав php framework-a как альтернативу существующим БД ? скажем для небольших проектов.
Ну, вообще-то XML может имееть нелинейную структуру, что там маппить то? Какие проблемы прослойка должна решить?
флоппик На реальных примерах. Пишу игру. Как в любой игре есть игровая площадка, пространство который может включать в себя самые разные объекты ( галактики, планеты, астероиды ). Естественно я всё описывал в XML - файлах. Так вот, развивая игру, на стадии оптимизации кода столкнулся с тем, что мир из XML файлов собирается за 0.0008 mc ( локально ), а всё остальное пожирает работа с БД ( исключая инклуды и причём имея один только запрос небольшой ) это ~ 0.00200. И я задался вопросом - "Если программирование на PHP всё больше и больше идёт в сторону framework-ов, а работа с БД всё больше выполняется через какую либо ORM, то есть ли принципиальная разница где хранить данные, если результат и комфорт не отличаются, а все действия вуалируются ORM". PS: Единственное что необходимо и оно пишется, это вытаскивать нужные кусочки из дерева больших размеров.
Ты по моему, не понимаешь, какие проблемы решает ОРМ. ОРМ - это прослойка решающая проблему того, что данные в таблице в бд - линейные, плоские, в то время как обьекты отображают как сами данные, так и их отношения с другими данными. ХМЛ - нелинейная структура, а значит этой проблемы не имеет В ПРИНЦИПЕ. Обьясни, в терминах, по-человечески, какую задачу решает твоя идея?
флоппик Я знаю что такое ORM. И знаю что она решает. Я говорил о другом. Моя идея в том, что бы создать СУБД которая бы представляла не линейную структуру XML в линейную структуру на выходе ( скажем при предоставлении данных в удобном виде ). Мне кажется это куда лучше будет для сервера - работать с не линейной структурой и разбивать её на более простые составляющие. Да и обмен данными между двумя серверами можно осуществлять сразу в удобном виде XML. А не пользоваться возможностями языков программирования реализовывая каждый раз транспортные задачи по обмену данными.
флоппик То есть решаем проблему только с отображением информации а не хранением. Это же куда лучше и быстрее, разве я не прав ?
r00les Проблемы нет. объекты отлично сериализуются/десериализуются в XML. Единственным камнем будут циклические ссылки. Но они легко решаются. Отображать XML в линейную структуру - это нечто не понятное. Кто мешает взять XML и сделать сразу XSLT получив на выходе нужную страницу?
Когда кажется - крестится надо. БД основанные на ХМЛ существуют уже лет 8 только на моей памяти, скорее всего - дольше. Удобном кому? Сервер - железка, у него нет предпочтений. А быстрее всего обмениватся структурами с указанием размера, и что? В общем, понятно, идей/стремлений море, матчасть хромает. Ничего, со временем это пройдет.
Simpliest А кто мешает вообще не использовать такие средства как MySQL. Я говорил о случаях когда просто взять и сделать руками бывает затруднительно.
флоппик - я не верующий. - вы обидели мою Мери (((. Приведите пример СУБД и драйвер для PHP который работают с XML-БД.
А причем тут MySQL? А если руками сделать затруднительно - то уже ничего не поможет. Простейший пример объекта с xml сериализацией. PHP: <?php abstract class XMLSerializable { public function __serialize() { $xml = '<root>'; foreach($this as $propName => $propValue) { if($propValue instanceof XMLSerializable) { $xml .= '<' . $propName . '>' . serialize($propValue) . '</' . $propName . '>'; } else { $xml .= '<' . $propName . '>' . (string) $propValue . '</' . $propName . '>'; } } return $xml . '</root>'; } } Oracle, MSSQL работают с XML
Oracle XML DB, Oracle Berkeley XML DB, Sedna XML DB, CouchDB - это только которые вспомнил с первого захода. Еще пара в голове вертится, названия не вспомню. Почти у всех есть драйвера для ПХП.
Simpliest Хорошо, а как вы будите контролировать 10 - 20 таблиц который имеют подтаблицы и всё это ввиде XML ? на каждую свой класс будите писать ? Вы же не работаете с файлами БД напрямую, а используете такие средства как MySQL и тд.
еще pureXML вспомнил, и собсно в MSSQL 2005 уже появилась поддержка ХМЛ БД. В общем, тысячи их, и они плохо живут в пхп, потому что XML - медленный, а скрипт - торопится.
XML - представление с нефиксированной размерностью, и не имеет никакой метаинформации. Оно В ЛЮБОМ СЛУЧАЕ будет медленней представления с фиксированной размерностью. Думаю, свою часть в этой дискуссии я завершу, поциент невменяем и не обладает достаточными базовыми знаниями для ведения цивилизованной дискуссии, а в маты скатыватся неохото. Всем приятного воскресения.
А в чем проблема? models + mappers 66 классов уже. Если порыскать по форуму (последние 2-3 недели), то даже найдется образец кодогенератора для них, который я выкладывал. Если у меня 30 с гаком сущностей то при всем желании у меня не будет меньше классов (в противном случае я неправильно спроектировал систему). Базы не занимаются отображением.
Давайте без утвердительных высказываний пожалуйста и без пены у рта. Я как раз и говорю о том что бы создать такие средства, которые обрабатывали бы XML с той же скоростью. Если вам тема не интересна и вы считаете себя выше нашего общества, то зачем вы вообще обсуждаете что либо ? Письку показывают в другом месте. Простите.
Simpliest А кто генерирует классы в зависимости от данных в XML ? Или для каждой ветки отдельно пишется ?