Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 14 июня 2010< ^ >
ygrek установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | judge by commits, not comments | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:05:13] digital_curse вышел(а) из комнаты
[00:05:26] digital_curse вошёл(а) в комнату
[00:15:58] Kakadu вошёл(а) в комнату
[00:16:00] Kakadu вышел(а) из комнаты
[00:54:11] Typhon вышел(а) из комнаты
[00:57:34] ermine вышел(а) из комнаты
[01:23:02] vshender вошёл(а) в комнату
[01:43:14] vshender вышел(а) из комнаты
[09:03:07] gds вошёл(а) в комнату
[09:48:58] ʇsʎɯ вошёл(а) в комнату
[10:30:37] vshender вошёл(а) в комнату
[11:04:01] iNode вышел(а) из комнаты
[11:04:06] iNode вошёл(а) в комнату
[11:07:02] komar вышел(а) из комнаты
[11:16:27] f[x] вошёл(а) в комнату
[11:39:45] ygrek вошёл(а) в комнату
[11:42:59] Typhon вошёл(а) в комнату
[11:46:48] <gds> интересно, как уважаемые дамы и господа, живущие с dbi-подобными интерфейсами к реляционкам, живут с тем, что dbi не стандартизирует вид bind variables / placeholders, встречающихся в тексте запроса?  Зоопарк из "?", ":1", ":name" -- это то, что я видел на практике.  По слухам, это не предел.
[11:52:44] <ʇsʎɯ> плохо живут, чё уж там
[11:53:33] <ʇsʎɯ> как правило необходимости перезжать на другую СУБД не возникает, на том только и держатся
[11:55:01] <gds> во-во, миф о том, что "dbi/db-api/orm/omg/wtf позволяет легко сменить СУБД", живуч.  То, что это миф, спасает всю ситуацию.
[11:55:02] <f[x]> gds: ещё один поинт, да
[11:56:25] <f[x]> реально смысл в dbi только в том чтобы "noob"ы выучили один интерфейс к БД и не травмировались rtfm'ами к каждой базе отдельно
[11:57:35] Typhon вышел(а) из комнаты
[12:03:23] <gds> да вообще, вся стандартизация только в угоду нубам и прочим ментальным калекам :]
[12:05:57] <gds> хотя, какое-то подмножество sql'я стандартизировано, и с помощью dbi можно беспроблемно вытягивать данные из любой базы.  В этом, в том числе, состоит польза от dbi.
[12:06:20] <gds> я про запросы вида select col from tab where col = 123, не сильно сложнее.
[12:13:30] <gds> ещё проблема в том, что select col from tab where col = ':1' or col = '?' or col = ':kukudiv' не содержит bind variables никак, а парсер, как известно, лох.
[12:14:06] ygrek вышел(а) из комнаты
[12:16:47] <ʇsʎɯ> ну лично я вижу пользу от DBI в том, что для того, чтобы сделать запрос надо сделать стандартную последовательность действий
[12:17:09] <ʇsʎɯ> а не так, что в одном байндинге 15 классов, а в другом вообще 2 функции и 1 переменная
[12:18:25] <ʇsʎɯ> в DB-API 3.0 змееводы вроде как сошлись сделать байндинги стандартным способом и пох, что в 4 из 5 случаев для этого понадобится парсить и пересобирать запросы
[12:18:42] <ʇsʎɯ> ну а там, глядишь, и субд подтянутся по этой части
[12:20:15] <gds> и что там решили принять за стандарт козлопитоны?
[12:23:51] <ʇsʎɯ> а я уже и не помню
[12:23:51] vshender вышел(а) из комнаты
[12:23:58] <ʇsʎɯ> надо PEP почитать
[12:25:39] <gds> тот, урло на который я кидал, не содержит подобной информации.  Есть другой?  Какой?
[12:40:37] <gds> чото есть тут: http://wiki.python.org/moin/DbApi3 , но не ясно, что они сочли стандартом.
[12:43:53] <ʇsʎɯ> да ничё они не сочли вроде
[12:44:05] <ʇsʎɯ> я только слышал, что решили, что надо выбрать что-то одно
[12:44:24] <ʇsʎɯ> я тут предлагаю затачиваться на PostgreSQL :)
[12:44:27] <gds> но нам-то, разработчикам (и советчикам) ocaml-dbi2, надо ведь что-то счесть и решить.
[12:45:45] <f[x]> bind parameters syntax is backen implementation defined
[12:45:54] <f[x]> * backend
[12:46:09] <f[x]> и всё (точно так же как и сам sql синтаксис)
[12:46:27] <f[x]> это если ты вообще хочешь заморачиваться с bind parameters
[12:46:54] <gds> но преобразование bind parameters делается несложно, можно и унифицировать.
[12:47:22] <gds> а как в постгресе дела?
[12:48:11] <f[x]> несложно? парсить sql на client-side?
[12:49:15] <gds> да, с целью замены :name на ? например, и выстраивания bind parameters в нужном порядке.
при унификации лажа только в обработке литералов.
[12:50:33] ermine вошёл(а) в комнату
[12:50:45] <f[x]> имхо оно того не стоит
[12:52:21] <ʇsʎɯ> The SQL command string to be executed. If parameters are used, they are referred to in the command string as $1, $2, etc.
[12:52:28] <ʇsʎɯ> PgSQL
[12:58:35] <gds> $1 мне не нравится, нужны именованные параметры, если уж делать унификацию.
а вот делать её или нет, это вопрос.
[12:59:48] <ʇsʎɯ> я считаю, что надо делать. пока кто-то один не начнёт "не взирая" насаждать стандарт, каждый будет тянуть на себя одеяло
[13:00:05] <ʇsʎɯ> а когда хоть где-то будет "так и только так", тогда уже проще ориентироваться
[13:00:10] <ʇsʎɯ> глядишь и другие подтянутся
[13:00:14] <ʇsʎɯ> а иначе - никак
[13:01:51] <ʇsʎɯ> а устаканить постгресный формат потому что так или иначе это самая вменяемая oss субд, логично на неё и задачиваться (ну, for performance reasons)
[13:07:52] <f[x]> бгг, камло будет насаживать стандарт субд api
[13:15:36] <gds> стандарт с $1 $2 я точно реализовывать не буду, уродство же.
[13:19:52] <ʇsʎɯ> почему уродство?
[13:20:59] <ʇsʎɯ> SELECT a, b FROM t WHERE c = $1 AND d = $2
[13:21:04] <ʇsʎɯ> чё такого уродского?
[13:28:50] <gds> уродство -- то, что требуется давать параметрам номерки.  Все знают, что нумерация сущностей, имеющих свои имена, это путь к распространению Числа Зверя.  Например, Раб Б-жий Иванов Иван Иванович -- это истинно-православный человек, а "налогоплательщик с ИНН = 012345666" -- это уже слуга С-тоны.
[13:33:19] <gds> сравни с select a, b from t where c = :param_c and d = :param_d.  труднее перепутать номерки, труднее ошибиться.
[13:39:20] <gds> а ещё, в некоторых субд нет понятия view (а там, где есть, оно не всегда помогает), поэтому Длинные-Длинные Запросы в коде программы -- это порой суровая необходимость.  А там попробуй разглядеть, к чему относится $7, и не использован ли он выше-ниже по запросу для других целей.
[13:44:14] <gds> кроме того, отсутствие композиционируемости.  Если были запросы select a from t where b = :b and c = :c и select a from t where b = :b and d = :d, им можно подать одинаковые привязки (b, c, d), их можно склеить в один запрос через union, ну и всё такое.  Это не выйдет с номерками.
[13:45:15] <gds> конечно, с именованными привязками тоже будет не всё ок, ведь :name может быть разное в разных запросах, но с этим аспектом (с выбором имён для сущностей) программист сталкивается по стопиццот раз на дню, разрулит как-то.
[13:56:57] ygrek вошёл(а) в комнату
[14:14:35] <gds> ну ладно.  тем, кто использует "?", не понять прелестей именованных привязок.
в общем, убедили.  backend-defined будет сначала.  потом, если захочу, нарисую разборку sql и доведение до кошерного вида.
[14:17:56] komar вошёл(а) в комнату
[14:45:09] ygrek вышел(а) из комнаты
[15:26:27] Typhon вошёл(а) в комнату
[15:40:55] <Typhon> gds, а напомни, почему bdi? питонячий, как мне кажется, db api больше распространен, вона в х-ле несколько либ с него срисовано, кажется. и если уж говорить о навязывании стандарта, то у питона шансов поболее, чем у перла (дби оттуда же пришел, если не ошибаюсь? )
[15:46:16] <gds> dbi пришёл из перла, да.  Насчёт DB-API -- не знаю, как он распространён, и в те самые либы не смотрел (а там, где смотрел, не заметил особо много общего).  Насчёт навязывания стандарта -- хитро тут.  Может петон и навяжет что-то, но синтаксис bind variables -- такая штука, которую авторы субд менять не будут так просто.  И в перле такая же ситуация, как и везде -- всё определяется субд.
как-то "ни о чём" я выступил сейчас.
[15:54:43] iNode вышел(а) из комнаты
[17:07:53] komar вышел(а) из комнаты
[17:19:52] komar вошёл(а) в комнату
[17:22:22] <komar> Кстати, разыскиваются биндинги к линупсовым дисковым квотам, либо команд-лайн фиговина для работы с ними.
[17:22:45] <komar> (знаю, прикрутить недолго, просто не дошёл ещё)
[17:26:19] <komar> О ёлки, уже нашёл.
[17:29:51] gds вышел(а) из комнаты
[18:44:53] komar вышел(а) из комнаты
[19:00:09] Typhon вышел(а) из комнаты
[19:08:52] Typhon вошёл(а) в комнату
[19:13:17] f[x] вышел(а) из комнаты
[19:18:49] f[x] вошёл(а) в комнату
[19:22:32] f[x] вышел(а) из комнаты
[19:28:46] f[x] вошёл(а) в комнату
[19:30:11] ʇsʎɯ вышел(а) из комнаты
[19:59:46] Typhon вышел(а) из комнаты
[20:06:35] komar вошёл(а) в комнату
[21:48:53] gds вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!