[Moscow.pm] Концепция ORMа
Warstone@list.ru
warstone на list.ru
Пт Янв 16 12:39:53 PST 2015
Смысл в том, что мы при произвольном запросе будем знать из какой таблицы эта колонка и можем, используя метаинформацию, заданную в схеме, конструировать свои типы данных, а не дефолтные Пгшные. Например у нас есть таблица UserId,(BIGINT) ACL(JSON), делая что-то типа: $db->query("SELECT * FROM users WHERE userid = ?", $userid)->ACL->check_rights_for("MyACLKey"). Или если у нас там id со связанной таблицей, то мы можем при обращении к этому полю прозрачно выполнить SQL запрос на выборку информации по этому полю. Вариантов море. И это довольно хороший сахар.
Fri, 16 Jan 2015 21:08:01 +0100 от PEF Secure <pef-secure на yandex.ru>:
>On Friday, January 16, 2015 22:27:05 Warstone на list.ru wrote:
>> Раз уж тут пошла такая пьянка... Давайте сделаем ORM для PostgreSQL с
>> поддержкой асинхронности и возможностью прямого SQL запроса и
>> конвертирования результатов в спец типы.
>>
>> Идея основана на том, что EXPLAIN VERBOSE всегда расскажет какие поля и
>> откуда взяты (даже в случае с WITH), вот допустим:
>>
>> EXPLAIN VERBOSE WITH foo AS (SELECT * FROM test) SELECT * FROM foo;
>> QUERY PLAN
>> ----------------------------------------------------------------------------
>> - CTE Scan on foo (cost=21.60..44.80 rows=1160 width=40)
>> Output: foo.id, foo.data
>> CTE foo
>> -> Seq Scan on pg_temp_111.test (cost=0.00..21.60 rows=1160 width=40)
>> Output: test.id, test.data
>>
>> Смысл в том, что на каждый raw запрос (с кешированием, понятно) запрашивать
>> EXPLAIN этого запроса и по результатам строить аксессоры. Или не строить ))
>
>Не совсем понятен смысл именно EXPLAIN. Для аксессоров достаточно сделать
>execute и ещё до фетча уже будет всё выдано в %fields = %{$sth->{NAME_hash}};
>--
>PEF Developer
>--
>Moscow.pm mailing list
>moscow-pm на pm.org | http://moscow.pm.org
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20150116/f14daa1d/attachment.html>
Подробная информация о списке рассылки Moscow-pm