[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