Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

DbSimple: передача атрибутов через массив, а не в тексте запроса (Иван Шумков)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Dec 26, 2006 3:01 pm ()
   Post subject:
Reply with quote


М

Выделено из темы «DbSimple v2.x: лаконичная работа с различными СУБД»,
расположенной в форуме Конструктор (28 Декабря 2006, 16:29).
Back to top
View user's profile Send private message Send e-mail
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Tue Dec 26, 2006 3:01 pm (спустя 1 секунду; написано за 35 секунд)
   Post subject:
Reply with quote

Помойму очень не удобно, неправильно и некрасиво передавать параметры о кешировании прямо в тексте SQL.
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Tue Dec 26, 2006 7:47 pm (спустя 4 часа 46 минут; написано за 18 секунд)
   Post subject:
Reply with quote

Иван Шумков
Аргументы кроме "по-моему"?
Альтернативные варианты?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Dec 26, 2006 7:48 pm (спустя 11 секунд; написано за 4 секунды)
   Post subject:
Reply with quote


М

По-моему очень неконструктивно, нелогично и неверно отвергать что-то, не предлагая ничего взамен (тем более - не предлагая взамен нечто лучшее).
Back to top
View user's profile Send private message Send e-mail
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Tue Dec 26, 2006 7:54 pm (спустя 6 минут; написано за 2 минуты 20 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT], Дмитрий Котеров
Полностью с вами согласен господа.
Считаю наиболее красивым вариантом передачу параметров в хеше (например, первым аргументом). Такой вариант более читаймый. С ним удобнее работать (динамически собирать параметры и значения). Ну и как-то нативнее помойму, чем текстовый конфиг.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Tue Dec 26, 2006 9:33 pm (спустя 1 час 38 минут; написано за 26 секунд)
   Post subject:
Reply with quote

Иван Шумков
Не знаю, ИМХО как раз-таки более читаемо и более удобно указывать параметры кеширования прямо в запросе.
Back to top
View user's profile Send private message Send e-mail
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Wed Dec 27, 2006 10:58 am (спустя 13 часов 25 минут; написано за 3 минуты 34 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов
У меня есть доводы против:
1. Параметры кеширования (и другие в будующем) не имеют никакого отношения к тексту SQL запроса.
2. Можно сразу забыть про однострочные запросы (если запрос не большой это очень удобно).
3. Еще раз напоминаю о удобстве работы с конфигом. Резать строку неудобнее и не читабельней чем просто указать array('param' => $param)
4. Конфиги обычно передаются в хэшах. Это нативно и привычно пользователю.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Dec 27, 2006 12:01 pm (спустя 1 час 2 минуты; написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
ИМХО как раз-таки более читаемо и более удобно указывать параметры кеширования прямо в запросе.
А главное, они идут в лог SQL-запросов, и сразу ясно, какой запрос кэшируется, а какой - нет.
Собственно, можно считать эти комментарии указаниями базе (или указанию драйверу базы), а не указаниями библиотеке.
Back to top
View user's profile Send private message Send e-mail
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Wed Dec 27, 2006 12:13 pm (спустя 12 минут; написано за 2 минуты 37 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
А главное, они идут в лог SQL-запросов, и сразу ясно, какой запрос кэшируется, а какой - нет.
Можно с таким же успехом в лог отправлять параметры, причем такой вариант дает возможность удобного форматирования параметров в логе.
Дмитрий Котеров wrote:
Собственно, можно считать эти комментарии указаниями базе (или указанию драйверу базы), а не указаниями библиотеке.
Указания к базе могут быть представленны в более удобном формате (об этом я уже писал forum.dklab.ru/viewtopic.php?p=126414#126414).
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Thu Dec 28, 2006 2:08 am (спустя 13 часов 54 минуты; написано за 2 минуты 47 секунд)
   Post subject:
Reply with quote

Иван Шумков
Да в общем какие проблемы - напишите себе функцию, которая будет передавать параметры кеширования отдельным массивом, и пользуйтесь ей :). Если вдруг действительно Вам это покажется удобней, напишите сюда, Ваш вариант в таком будет рассмотрен более подробно.
Back to top
View user's profile Send private message Send e-mail
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Thu Dec 28, 2006 10:06 am (спустя 7 часов 57 минут; написано за 26 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Я же хочу чтобы и вам было удобно, а не только мне :)
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Thu Dec 28, 2006 12:34 pm (спустя 2 часа 27 минут; написано за 6 минут 53 секунды)
   Post subject:
Reply with quote

Иван Шумков wrote:
Я же хочу чтобы и вам было удобно
Да Вы, батенька, революционер оказывается (-;
Вы бы нас спросили, может нам и так хорошо ))))
Иван Шумков wrote:
Параметры кеширования (и другие в будующем) не имеют никакого отношения к тексту SQL запроса.
Да что Вы такое говорите?! Я хочу, чтобы результат данного запроса кэшировался на 5 минут. Предложите способ при котором:

а) не нужно инициировать какие-либо дополнительные переменные непосредственно в коде программы;
б) не нужно использовать какие-либо дополнительные методы библиотеки;
в) и вообще не нужно делать никаких лишних движений, чтобы сказать: "Я хочу закэшировать результат этого и только этого запроса на 5 минут"

Мы ничего лучше чем указывать параметры кэша прямо в запросе через комментарии не придумали. Вообще использовать комментарии в программе для того чтобы указать директивы какому-то pre-образователю, если он есть и не портить код, если его нет - самое лучшее решение. Объективное ИМХО. Примеры:

JS в <script><!-- alert(404)//--></script>
SSI в <!--#include ... -->
Shebang в #!/usr/bin/perl

и т.д.
Иван Шумков wrote:
в более удобном формате (об этом я уже писал
Вы формат опишите с примерами.

М

Вообще сдается мне, что опять обсуждение в какой-то флэйм/флуд (пожар/наводнение) превращается.
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Thu Dec 28, 2006 2:49 pm (спустя 2 часа 14 минут; написано за 7 минут 29 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT]
Как будет выглядеть sql запрос когда появится еще параметры, кроме кеширования?

Способ передачи параметров очень простой и привычный:
Code (php): скопировать код в буфер обмена
//
$db->Select(array (www.php.net/array)(
        'cache'        => 5,
        'cache_field' => 'test.modified'
), 'SELECT * FROM table WHERE id = ?d', 100);
//
$db->Select(array (www.php.net/array)('cache' => 5), 'SELECT * FROM table WHERE id = ?d', 100);
//
$db->Select(5, 'SELECT * FROM table WHERE id = ?d', 100);
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Thu Dec 28, 2006 3:52 pm (спустя 1 час 3 минуты; написано за 1 минуту 20 секунд)
   Post subject:
Reply with quote

Иван Шумков wrote:
Как будет выглядеть sql запрос когда появится еще параметры, кроме кеширования?
Уже есть такие параметры:
Code (SQL): скопировать код в буфер обмена
-- BLOB_OBJ: true
-- CACHE: 5m
SELECT * FROM hz
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Thu Dec 28, 2006 4:07 pm (спустя 15 минут; написано за 7 минут 28 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT]
Я, честно говоря, считаю, что текстовый конфиг менее удобен, чем красиво форматированный хэш. Туда сложнее вставлять переменные. Его сложней редактировать. Все это я уже говорил.

Придумал еще пару доводов против передачи в комментариях:
1. Передача лишних данных в MySQL
2. Парсится такой конфиг намного медленее и сложнее чем хэш (его вообще не надо парсить).
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Thu Dec 28, 2006 10:42 pm (спустя 6 часов 34 минуты; написано за 4 минуты 49 секунд)
   Post subject:
Reply with quote

Иван Шумков
Во избежание путаницы, когда говорим о PHP, будем использовать термин "ассоциативный массив", а не "хэш", если Вас не затруднит. У меня в этом языке слово хэш ассоциируется с результатом md5() - так уж исторически сложилось за 8 лет программирования на этом языке. Все же не Perl (-;

Согласен, что передача параметров в массиве по ссылке будет работать намного быстрее (хотя и незаметно для глаза). Согласен, что идет передача лишних данных в БД (в любую из поддерживаемых - у Вас как и у Rin имеется тенденция отождествлять СУБД и MySQL, судя по моим наблюдениям).
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Fri Dec 29, 2006 10:23 am (спустя 11 часов 40 минут; написано за 21 секунду)
   Post subject:
Reply with quote

Константин Жинько [tIT]
По поводу форматирования, и использования переменных согласны? :)
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Fri Dec 29, 2006 11:33 am (спустя 1 час 10 минут; написано за 1 минуту 51 секунду)
   Post subject:
Reply with quote

Иван Шумков wrote:
По поводу форматирования, и использования переменных согласны?
Неа ;)
Интерфейс должен быть простым!
Если мне не надо указывать дополнительные параметры, значит неправильно задавать такой массив первым параметром. Задавать его после всех значений для плэйсхолдеров тоже сомнительная авантюра.
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Fri Dec 29, 2006 12:38 pm (спустя 1 час 4 минуты; написано за 1 минуту 10 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT] wrote:
Неа ;)
Интерфейс должен быть простым!
Если мне не надо указывать дополнительные параметры, значит неправильно задавать такой массив первым параметром. Задавать его после всех значений для плэйсхолдеров тоже сомнительная авантюра.
Это очень просто реализуется.
Проверяем первый параметр, если строка то параметров нет, а если первый параметр масив, то параметры есть и второй параметр - текст sql запроса.
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Fri Dec 29, 2006 3:59 pm (спустя 3 часа 20 минут; написано за 39 секунд)
   Post subject:
Reply with quote

Иван Шумков wrote:
а если первый параметр масив
Про selectPage не забывайте еще
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Fri Dec 29, 2006 4:28 pm (спустя 29 минут; написано за 1 минуту 44 секунды)
   Post subject:
Reply with quote

Константин Жинько [tIT]
Тут тоже не сложно. Проверяем первый параметр. Если масив, а второй не строка, то первым аргументом идут параметры, в противном случае их нет.
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Fri Jan 05, 2007 6:59 pm (спустя 7 дней 2 часа 30 минут; написано за 12 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT]
Мы так с вами не очем не договорились?
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Fri Jan 05, 2007 8:44 pm (спустя 1 час 44 минуты; написано за 1 минуту 1 секунду)
   Post subject:
Reply with quote

Иван Шумков
А о чем Вы хотите договориться? %
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Fri Jan 05, 2007 8:53 pm (спустя 9 минут; написано за 59 секунд)
   Post subject:
Reply with quote

О параметрах в запросах в виде ассоциативного масива. Наша палемика вроде не закончилась.
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Sat Jan 06, 2007 1:04 am (спустя 4 часа 11 минут; написано за 4 минуты 14 секунд)
   Post subject:
Reply with quote

Каждый остался при своем мнении, насколько я понял (-;
Вам больше нравится ассоциативный массив, мне - параметры в запросе.
В библиотеке сейчас реализован второй вариант. Первый вариант - довольно серьезное изменение; если ДК согласится, можете предложить свою реализацию с учетом обратной совместимости для включения в релиз.
Back to top
View user's profile Send private message
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Mon Jan 08, 2007 3:32 pm (спустя 2 дня 14 часов 27 минут; написано за 9 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров
Согласитесь?
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Jan 08, 2007 8:55 pm (спустя 5 часов 23 минуты; написано за 38 секунд)
   Post subject:
Reply with quote

Иван Шумков
Вы обратную совместимость версий нарушаете, очень нехорошо это. Вы пока что не предложили лучший вариант, чем есть сейчас.
Back to top
View user's profile Send private message Send e-mail
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Fri Jan 12, 2007 11:47 am (спустя 3 дня 14 часов 51 минуту; написано за 39 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
Вы обратную совместимость версий нарушаете
Интересно как? По моему алгоритму все прекрасно работает как и без параметров, как в предыдущих версиях.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Jan 12, 2007 12:05 pm (спустя 18 минут; написано за 29 секунд)
   Post subject:
Reply with quote

Иван Шумков
Насколько я помню, первым аргументам передавался запрос в базу данных... Или я чего-то упустил?
Back to top
View user's profile Send private message Send e-mail
Иван Шумков
Участник форума



Joined: 30 Dec 2004
Posts: 229
Карма: 6
   поощрить/наказать

Location: Россия, Санкт-Петербург

PostPosted: Fri Jan 12, 2007 12:12 pm (спустя 6 минут; написано за 22 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Упустили, читайте внимательнее forum.dklab.ru/viewtopic.php?p=126541#126541 и ниже.
Back to top
View user's profile Send private message
Dark-Demon
Участник форума
Banned


Joined: 04 Feb 2007
Posts: 45
Карма: -3
   поощрить/наказать

Location: spb

PostPosted: Sun Feb 04, 2007 5:57 am (спустя 22 дня 17 часов 45 минут; написано за 8 секунд)
   Post subject:
Reply with quote

Quote:
Не знаю, ИМХО как раз-таки более читаемо и более удобно указывать параметры кеширования прямо в запросе.
только в случае многострочных запросов
Quote:
Quote:
ИМХО как раз-таки более читаемо и более удобно указывать параметры кеширования прямо в запросе.
А главное, они идут в лог SQL-запросов, и сразу ясно, какой запрос кэшируется, а какой - нет.
Собственно, можно считать эти комментарии указаниями базе (или указанию драйверу базы), а не указаниями библиотеке.
такое ощущение, что логгер - это для вас чёрный ящик. :) ну так измените этот логгер, чтобы писал инфу о кэшировании. не вижу никакого смысла разбавлять и так не шибко читабельный язык sql всякой сторонней инфой.
Quote:
Мы ничего лучше чем указывать параметры кэша прямо в запросе через комментарии не придумали. Вообще использовать комментарии в программе для того чтобы указать директивы какому-то pre-образователю, если он есть и не портить код, если его нет - самое лучшее решение.
нет, это как раз наихудшее решение. например, в случае если такой вот чудо-комментарий сам нужно закомментировать, мы не можем быть уверены, что выбранный нами способ нестандартного комментирования не вызовет глюков.
Quote:
JS в <script><!-- alert(404)//--></script>
1. <script>/*<![CDATA[<!--*/ alert(404) /*-->]]>*/</script>
если уж мы хотим спрятать не толко от браузера, но и от xml-парсера
2. вам предлагают более правильный вариант <script src="alert.js"></script>
Quote:
Во избежание путаницы, когда говорим о PHP, будем использовать термин "ассоциативный массив", а не "хэш", если Вас не затруднит. У меня в этом языке слово хэш ассоциируется с результатом md5() - так уж исторически сложилось за 8 лет программирования на этом языке. Все же не Perl (-;
значит надо расширять кругозор, а не навязывать собеседникам то, что у вас сложилось. не, ну объективно "ассоциативный массив" - это ну уж слишком длинное выражение для такой основополагающей в php сущности :)
Code (any language): скопировать код в буфер обмена
есть два варианта:
1. поставить ещё одну подпорку и ждать пока дом рухнет (кучи комментов в простом запросе)
2. снести кривое здание кривое здание и построить новое прямое (специальный параметр, в котором указываются доп параметры), а жильцам помочь с переездом (нотисы, ерроры, врапперы)
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Wed Feb 07, 2007 11:10 am (спустя 3 дня 5 часов 12 минут; написано за 2 минуты 23 секунды)
   Post subject:
Reply with quote

Dark-Demon
здесь есть удобная система персонализированного цитирования (выделить текст и кликнуть по нику) - пользуйтесь, пожалуйста, ею. Мне например, сейчас видно только 2 последних постинга и совершенно неясно, с кем Вы спорите - с топикстартером или его оппонентами.
//P.S. это не сообщение модератора, а лишь просьба
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 1:51 pm (спустя 2 часа 41 минуту; написано за 52 секунды)
   Post subject:
Reply with quote

неа, не удобная, но я постараюсь более адэкватно цитировать...
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML