<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии: Модель данных. Поиск</title>
	<atom:link href="http://boolive.ru/createcms/data_model_3/feed" rel="self" type="application/rss+xml" />
	<link>http://boolive.ru/createcms/data_model_3</link>
	<description>Создание гибкой системы управления сайтом</description>
	<lastBuildDate>Wed, 16 May 2012 18:18:44 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Автор: Владимир</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-329</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Sat, 27 Feb 2010 08:18:28 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-329</guid>
		<description>Существующие библиотеки не решают тех вопросов, что стоят передо мной.  Работа направлена на достижение гибкости в управлении данными - создания любых информационных систем на уровне описания модели, а не создания таблиц и программирования классов. Да, с текущими доступными технологиями результат получается сложно применимым на реальных проектах (сайтах) из-за производительности, но сейчас важно, что желаемая гибкость достижима даже с использованием реляционных бд, причем без применения наворотов в SQL, без хранимых процедур и другого!! 

Спустя год, работа над движком Boolive перешла уже в практическое применение, и тут действительно лучше стало оперировать sql запросами, а гибкость организовывать на уровне логики, чтоб двиг был легким и быстрым, потому как на оптимизацию сложной программной логики модуля данных требуется невероятно много времени. Только итерационным путем эффективно двигаться к абсолютной гибкости, потому как даже со всех сторон проработанная модель данных поразит малейшее упущение. Как говорится, всё гениальное - просто :)) Сразу сообщу, что в скором времени сайт boolive.ru преобразится :)</description>
		<content:encoded><![CDATA[<p>Существующие библиотеки не решают тех вопросов, что стоят передо мной.  Работа направлена на достижение гибкости в управлении данными &#8212; создания любых информационных систем на уровне описания модели, а не создания таблиц и программирования классов. Да, с текущими доступными технологиями результат получается сложно применимым на реальных проектах (сайтах) из-за производительности, но сейчас важно, что желаемая гибкость достижима даже с использованием реляционных бд, причем без применения наворотов в SQL, без хранимых процедур и другого!! </p>
<p>Спустя год, работа над движком Boolive перешла уже в практическое применение, и тут действительно лучше стало оперировать sql запросами, а гибкость организовывать на уровне логики, чтоб двиг был легким и быстрым, потому как на оптимизацию сложной программной логики модуля данных требуется невероятно много времени. Только итерационным путем эффективно двигаться к абсолютной гибкости, потому как даже со всех сторон проработанная модель данных поразит малейшее упущение. Как говорится, всё гениальное &#8212; просто <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) Сразу сообщу, что в скором времени сайт boolive.ru преобразится <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Андрей</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-328</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Sat, 27 Feb 2010 07:06:45 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-328</guid>
		<description>Я так понял данный класс работы с БД - это ваша разработка. Может вас заинтересует похожий абстрактный подход, реализованный ребятами из Zend, называемый LINQ for PHP

http://devzone.zend.com/ 

Изобретение велосипеда - не всегда оправданная задача, тем более для ЦМС, которой должны пользоваться другие программисты. А им далеко не всегда хочется учить новый для них синтаксис работы с БД. В связи с этим взять общепринятую библиотеку для ЦМС, на мой взгляд, гораздо перспективнее.

Хотя, за 4 года профессионального программирования на php? я на самом деле, поклонник минимализма в коде. И писать кучу ненужных букв, чтобы создать запрос к БД я бы не стал. 

Например в моей реализации класса по работе с БД выборка имеет такой вид:
$news = Dbs::select(&#039;*&#039;, &#039;news&#039;, &#039;name like &quot;%Пример%&quot;&#039;);
просто, понятно и коротко)))))).</description>
		<content:encoded><![CDATA[<p>Я так понял данный класс работы с БД &#8212; это ваша разработка. Может вас заинтересует похожий абстрактный подход, реализованный ребятами из Zend, называемый LINQ for PHP</p>
<p><a href="http://devzone.zend.com/" rel="nofollow">http://devzone.zend.com/</a> </p>
<p>Изобретение велосипеда &#8212; не всегда оправданная задача, тем более для ЦМС, которой должны пользоваться другие программисты. А им далеко не всегда хочется учить новый для них синтаксис работы с БД. В связи с этим взять общепринятую библиотеку для ЦМС, на мой взгляд, гораздо перспективнее.</p>
<p>Хотя, за 4 года профессионального программирования на php? я на самом деле, поклонник минимализма в коде. И писать кучу ненужных букв, чтобы создать запрос к БД я бы не стал. </p>
<p>Например в моей реализации класса по работе с БД выборка имеет такой вид:<br />
$news = Dbs::select(&#8216;*&#8217;, &#8216;news&#8217;, &#8216;name like &#171;%Пример%&#187;&#8216;);<br />
просто, понятно и коротко)))))).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Владимир</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-162</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Sun, 26 Apr 2009 19:13:20 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-162</guid>
		<description>Любопытно) Постучитесь в аську 209504733 обсудим детально ;)</description>
		<content:encoded><![CDATA[<p>Любопытно) Постучитесь в аську 209504733 обсудим детально <img src='http://boolive.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Hivext Platform</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-161</link>
		<dc:creator>Hivext Platform</dc:creator>
		<pubDate>Sun, 26 Apr 2009 18:29:28 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-161</guid>
		<description>Мы ведем похожую разработку, похожа модель хранения данных на сервере, у нас это называется сервис структур http://www.hivext.ru/index.php/Структуры

Думаю будет интересно ознакомиться с платформой и может даже объединить усилия. Простым языком, цель сделать платформу уровня win api, но для интернет приложений (любых приложений включая CMS).</description>
		<content:encoded><![CDATA[<p>Мы ведем похожую разработку, похожа модель хранения данных на сервере, у нас это называется сервис структур <a href="http://www.hivext.ru/index.php/Структуры" rel="nofollow">http://www.hivext.ru/index.php/Структуры</a></p>
<p>Думаю будет интересно ознакомиться с платформой и может даже объединить усилия. Простым языком, цель сделать платформу уровня win api, но для интернет приложений (любых приложений включая CMS).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Владимир</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-160</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Thu, 23 Apr 2009 17:33:25 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-160</guid>
		<description>Понимаю ;)
Сейчас занимаюсь оптимизацией модуля Data. Рассказывать о проделанных изменениях в одной статье, не думаю, что будет интересно. Хотя для начала лучше узнать ваше мнение :) 
Посчитал лучше сейчас потратить время на сам движок, а потом уже по нему написать новый цикл статей, в который войдут темы разграничения прав, шаблонизация, кэширование и другое.</description>
		<content:encoded><![CDATA[<p>Понимаю <img src='http://boolive.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Сейчас занимаюсь оптимизацией модуля Data. Рассказывать о проделанных изменениях в одной статье, не думаю, что будет интересно. Хотя для начала лучше узнать ваше мнение <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Посчитал лучше сейчас потратить время на сам движок, а потом уже по нему написать новый цикл статей, в который войдут темы разграничения прав, шаблонизация, кэширование и другое.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: egoholic</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-159</link>
		<dc:creator>egoholic</dc:creator>
		<pubDate>Thu, 23 Apr 2009 14:17:42 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-159</guid>
		<description>Что-то долго нет новых постов. Жду их с нетерпением!!!!!!!!!</description>
		<content:encoded><![CDATA[<p>Что-то долго нет новых постов. Жду их с нетерпением!!!!!!!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Владимир</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-156</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Thu, 02 Apr 2009 03:10:37 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-156</guid>
		<description>Поймите ещё то, что потребуется дополнительное процессорное время для выполнения парсинга строкового условия. 

По второму условию, хоть вы и понимаете различия между своим &quot;текстовом&quot; вариантом. В объектном варианте не указывается конкретно, что комментарий у новости должен содержать текст %Первый%. Условие абстрактно, просто указывается, что любое из множественный свойств любой сущности должно содержать значение %Первый%. А уж так выходит, что пока только у новостей есть множественные свойство, называемое комментариями, и именно один из них удовлетворяет условию. 

Я не отказываюсь от возможности записи условий в текстовом виде, но сначала нужно тщательно проработать их синтаксис. Кстати, разработчикам сайта уже в готовой CMS не придется писать такие условия в объектном виде, так как будет реализовано нечто подобное модулю views у друпала :)</description>
		<content:encoded><![CDATA[<p>Поймите ещё то, что потребуется дополнительное процессорное время для выполнения парсинга строкового условия. </p>
<p>По второму условию, хоть вы и понимаете различия между своим &#171;текстовом&#187; вариантом. В объектном варианте не указывается конкретно, что комментарий у новости должен содержать текст %Первый%. Условие абстрактно, просто указывается, что любое из множественный свойств любой сущности должно содержать значение %Первый%. А уж так выходит, что пока только у новостей есть множественные свойство, называемое комментариями, и именно один из них удовлетворяет условию. </p>
<p>Я не отказываюсь от возможности записи условий в текстовом виде, но сначала нужно тщательно проработать их синтаксис. Кстати, разработчикам сайта уже в готовой CMS не придется писать такие условия в объектном виде, так как будет реализовано нечто подобное модулю views у друпала <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: X0c</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-155</link>
		<dc:creator>X0c</dc:creator>
		<pubDate>Thu, 02 Apr 2009 02:48:22 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-155</guid>
		<description>Нет-нет, в каком виде все &quot;должно быть&quot; - решать только вам :)

Просто запросы вроде
&lt;pre&gt;
    $cond = Q::Entity(  
            Q::LogOr(  
                Q::Comp(Q::Attrib(&#039;sys_name&#039;),&#039;=&#039;,&#039;link&#039;),  
                Q::LogAnd(  
                    Q::Comp(Q::Attrib(&#039;sys_name&#039;),&#039;=&#039;,&#039;label&#039;),  
                    Q::Comp(Q::Attrib(&#039;is_define&#039;),&#039;=&#039;,0)  
                )  
            )  
    );  
    $q = new Query($cond, 10, 0);  
&lt;/pre&gt;
на мой взгляд не очень хорошо воспринимаются, по крайней мере без некоторой тренировки. :)

Да, я имел в виду использование языка запросов вроде SQL (или, может, вариации на тему XPath).

Приведенный выше пример, как мне кажется, легче читался бы в таком виде:
&lt;pre&gt;
$q = new Query(&quot;sys_name = &#039;link&#039; OR (sys_name = &#039;label&#039; AND is_define = 0)&quot;, 10, 0);  
&lt;/pre&gt;
В результате парсинга должно формироваться точно то же самое, что создавалось &quot;вручную&quot; в примере, только читать, писать и изменять это проще.

В принципе, написать парсер для разбора подобных строк несложно, но я понимаю, что сейчас есть более важные проблемы, которые нужно решать.

А вообще было бы здорово, если бы можно было формулировать запросы на более высоком уровне абстракции, не концентрируясь на том, как организовано их хранение.

Другой запрос из вашей статьи:
&lt;pre&gt;
$cond = Q::Entity(  
     Q::Property(  
         Q::Comp(Q::Attrib(&#039;size&#039;),&#039;=&#039;,0), //множественное свойство  
         Q::Entity( // условие на сущность, с которой выполнена связь  
             Q::Property(  
                 null, // условия на связь нет  
                 Q::Entity(Q::Comp(Q::Attrib(&#039;value&#039;),&#039;like&#039;,&#039;%Первый%&#039;))  
             )  
         )  
     )  
 );  
&lt;/pre&gt;
Мне кажется, что мало кто сможет эффективно размышлять о предметной области (допустим, о тех же комментариях к новостям) таким образом.

На самом деле на практике было бы удобно использовать что-то вроде:
&lt;pre&gt;
  $q-&gt;where(&quot;comment.text LIKE &#039;%Первый%&#039;&quot;) // у сущности есть связь comment,  у того — text, содержащий строку &#039;Первый&#039;
    -&gt;limit(10)
    -&gt;offset(0);
&lt;/pre&gt;
(Да, я понимаю, что такой запрос значит не то же самое.)</description>
		<content:encoded><![CDATA[<p>Нет-нет, в каком виде все &#171;должно быть&#187; &#8212; решать только вам <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Просто запросы вроде</p>
<pre>
    $cond = Q::Entity(  
            Q::LogOr(  
                Q::Comp(Q::Attrib('sys_name'),'=','link'),  
                Q::LogAnd(  
                    Q::Comp(Q::Attrib('sys_name'),'=','label'),  
                    Q::Comp(Q::Attrib('is_define'),'=',0)  
                )  
            )  
    );  
    $q = new Query($cond, 10, 0);  
</pre>
<p>на мой взгляд не очень хорошо воспринимаются, по крайней мере без некоторой тренировки. <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Да, я имел в виду использование языка запросов вроде SQL (или, может, вариации на тему XPath).</p>
<p>Приведенный выше пример, как мне кажется, легче читался бы в таком виде:</p>
<pre>
$q = new Query("sys_name = 'link' OR (sys_name = 'label' AND is_define = 0)", 10, 0);  
</pre>
<p>В результате парсинга должно формироваться точно то же самое, что создавалось &#171;вручную&#187; в примере, только читать, писать и изменять это проще.</p>
<p>В принципе, написать парсер для разбора подобных строк несложно, но я понимаю, что сейчас есть более важные проблемы, которые нужно решать.</p>
<p>А вообще было бы здорово, если бы можно было формулировать запросы на более высоком уровне абстракции, не концентрируясь на том, как организовано их хранение.</p>
<p>Другой запрос из вашей статьи:</p>
<pre>
$cond = Q::Entity(  
     Q::Property(  
         Q::Comp(Q::Attrib('size'),'=',0), //множественное свойство  
         Q::Entity( // условие на сущность, с которой выполнена связь  
             Q::Property(  
                 null, // условия на связь нет  
                 Q::Entity(Q::Comp(Q::Attrib('value'),'like','%Первый%'))  
             )  
         )  
     )  
 );  
</pre>
<p>Мне кажется, что мало кто сможет эффективно размышлять о предметной области (допустим, о тех же комментариях к новостям) таким образом.</p>
<p>На самом деле на практике было бы удобно использовать что-то вроде:</p>
<pre>
  $q-&gt;where("comment.text LIKE '%Первый%'") // у сущности есть связь comment,  у того — text, содержащий строку 'Первый'
    -&gt;limit(10)
    -&gt;offset(0);
</pre>
<p>(Да, я понимаю, что такой запрос значит не то же самое.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Владимир</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-154</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Tue, 31 Mar 2009 14:45:03 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-154</guid>
		<description>Пожалуйста уточните, что именно для вас оказалось не в том виде как должно было быть? Насчет запросов полезней было бы увидеть пример/вариант удобный для вас, если речь, конечно, не идет о SQL. :) Над генерацией оптимизированного SQL я сейчас тружусь ;)</description>
		<content:encoded><![CDATA[<p>Пожалуйста уточните, что именно для вас оказалось не в том виде как должно было быть? Насчет запросов полезней было бы увидеть пример/вариант удобный для вас, если речь, конечно, не идет о SQL. <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Над генерацией оптимизированного SQL я сейчас тружусь <img src='http://boolive.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Хос</title>
		<link>http://boolive.ru/createcms/data_model_3#comment-153</link>
		<dc:creator>Хос</dc:creator>
		<pubDate>Tue, 31 Mar 2009 11:17:49 +0000</pubDate>
		<guid isPermaLink="false">http://boolive.ru/?p=228#comment-153</guid>
		<description>EAV это очень гибкая штука, иногда достоинства такой модели перевешивают недостатки. Я некоторое время назад тоже был фанатом этой модели.

Меня после прочтения один только вопрос мучает — а почему молоко красное? :)

И еще замечание — запросы как-то более «человеческими» можно, наверное, сделать. Ну, это, наверное, со временем...</description>
		<content:encoded><![CDATA[<p>EAV это очень гибкая штука, иногда достоинства такой модели перевешивают недостатки. Я некоторое время назад тоже был фанатом этой модели.</p>
<p>Меня после прочтения один только вопрос мучает — а почему молоко красное? <img src='http://boolive.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>И еще замечание — запросы как-то более «человеческими» можно, наверное, сделать. Ну, это, наверное, со временем&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

