metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-01-12 10:22 pm

ORM и системы типов

Понял, почему меня всегда так бесят сабжи, и почему всегда хочется "сделать по своему, с преферансом и гимназистками".
Вообще ORM это попытка скрестить ужа и ежа, т.е. гонять данные из одной системы типов в другую. Мало того, что это само по себе печально, так еще обычно и первая и вторая системы типов страдают унылостью, да еще и по разному в разных СУБД и языках программирования.

Т.е. нормальный ORM должен быть сделан либо на некоем общем подмножестве всего что есть(которое или пустое или настолько мелкое что ничего не даст сделать) или использовать достаточно мощную систему типов, которая бы позволила имитировать работу и СУБД и объектных языков и без особого напряга подстраиваться к ним.

А без этого получается имитация ужей методом сцепления ежей в списки или имитация ежей методом скручивания ужа в шар и протыкания иголками. А нужен ежеуж или ужеёж, с которым с одной стороны смогли бы совокуплятся в свое удовольствие ужи, а с другой - ежи.

PS: Да, хорошее было бы название для фреймворка - snagehog :)
wizzard: (Default)

[personal profile] wizzard 2010-01-12 11:30 pm (UTC)(link)
Ага. Проекции типов вообще куда ни плюнь встречаются - компиляция, сериализация, орм, рендеринг, фильтры - это всё проекции типов.

Очень интересно бы вывести что-то, позволяющее декларативно их описывать, наподобие Linq. Причем поддерживающее денормализованные данные.

Только мне что-то подсказывает что это будет очень страшная фиговинка поначалу... но потенциал очень интересный.
wizzard: (Default)

[personal profile] wizzard 2010-01-13 02:58 am (UTC)(link)
читаю

[identity profile] metaclass.livejournal.com 2010-01-13 08:38 am (UTC)(link)
А в каком смысле "денормализованные"?
wizzard: (Default)

[personal profile] wizzard 2010-01-13 11:23 am (UTC)(link)
В смысле что если проекция не может адекватно представить часть данных, то она от этого не должна терять возможность распространения изменений в обратную сторону, или наоборот, если проекция имеет какие-то свои еще данные, то они пускай и не отражаются на остальной системе но мержатся с данными от нее.

например, от того что человек переименовался в твоем контакт-листе, не должна нарушаться идентити и скажем распадаться метаконтакт на отдельные способы связи с человеком. типа такого.

[identity profile] metaclass.livejournal.com 2010-01-13 11:57 am (UTC)(link)
Ууу, двунаправленный рекурсивный холокост.
wizzard: (Default)

[personal profile] wizzard 2010-01-13 02:02 pm (UTC)(link)
Именно)