AR, ORM, Query Builder - хочется разобраться

keltanas

marty cats
ksnk
Фаулер уже успел застолбить эту аббревиатуру
Т.е. если бы ты закон Ом трактовал как-то иначе, то в этом был виноват Ом? Да и вообще он уже устарел, т.к. был дан в 1826 году. Так что теперь буду считать под законом Ома все что захочу.
ORM - это не AR. Но AR - это ORM. Автомобить - это не Жигули. А Жигули - это автомобиль (наверное).
повязал его на реляционную модель данных
Так а на что должно быть повязано объектно-реляционное преобразование, если не на реляционную БД?
 

Absinthe

жожо
Даже если нереляционная, это не значит, что отношений нет.
Сообщение содержит комментарий, содержащий логин юзера. При этом есть отдельный документ, описывающий этого юзера. Отношение.
И описывается в ORM нормально: http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/reference-mapping.html

Более того, могут быть отношения, одна сущность которого лежит в NoSQL, а вторая в MySQL: http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/cookbook/blending-orm-and-mongodb-odm.html
И это прозрачно для ORM.
 

ksnk

прохожий
keltanas Вам хочется аналогий? Давайте посмотрим на Ньютона и Эйнштейна. imho несколько ближе к рассматриваемой ситуации.

noSql база не реляционная. определение "реляционная" слишком малO для возможностей noSql. Она сурепреляционная :) Все, что можно записать на json + рекурсивные ссылки - это все можно сохранить и относительно разумно обработать. Ее прелесть в том (впрочем - и только в том) что она эффективно работает с деревянными ветвистыми конструкциями. Наиболее жизненный пример - карточка товара с кучей разнокалиберных свойств и и произвольной разбивкой по категориям. Искать товары по монге - легко и приятно. Искать то же по sql базе - отвратительно и медленно.
 

fixxxer

К.О.
Партнер клуба
Чото вы разошлись. :)

Есть представление какой-то сущности в виде объекта, есть его персистенция в реляционной базе данных (если база не реляционная, это object persistence, но уже не ORM).

ORM - это маппинг одного на другое. Любой. Вручную написанные SQL-запросы для маппинга - тоже ORM.

AR - это смешивание одного и другого в один объект: AR-модель содержит данные сущности и сама себя персистит.
 

fixxxer

К.О.
Партнер клуба
Возможны, но сам термин ORM означает маппинг объектов на классическую реляционную базу.
Это, конечно, условность, можно и расширить термин. :)
 

Absinthe

жожо
Возможны, но сам термин ORM означает маппинг объектов на классическую реляционную базу.
В чем разница меппинга на одноуровневые документы и на myisam с точки зрения сущности?
 

WMix

герр M:)ller
Партнер клуба
мне хочется настоять на слове relation = таблица. релационная база данных это база в которой храняться только таблицы, отношения между таблицами могут тоже быть построены на таблицах. Mongo, CouchDb это не релационные а документо-базированные базы данных. (или как это по русски?)
моделью может быть что угодно и вебсервисе и монго но какой смысл мапинга в монго?, там и так готовый обьект, напиши просто json_decode
 

fixxxer

К.О.
Партнер клуба

MiksIr

miksir@home:~$
И что, Ингресс и Систем Р - первые шаги по работе Кодда о реляционной модели, в 77-м прям вот с внешними ключами были сразу?
 

fixxxer

К.О.
Партнер клуба
Не обязательно иметь конструкцию foreign key. Важно иметь версионный движок, поддерживающий транзакции и позволяющий в принципе обеспечить ссылочную целостность. Триггером, внешним кодом - не суть важно.

Ingres с самого начала был построен на версионном движке.
 

MiksIr

miksir@home:~$
Как отсутствие транзакций может помешать _принципу_ ссылочной целостности?
 

fixxxer

К.О.
Партнер клуба
Ну расскажи, как ты будешь обеспечивать ссылочную целостность без версионного движка.
 

Фанат

oncle terrible
Команда форума
Интересно наблюдать сваливание дискуссии в спор о терминах. Сначала Absinthe докопался, потом MiksIr продолжил.
И никого уже не волнует, что выяснение принадлежности майисама к рсубд никакого отношения к первоначальному вопросу не имеет.

Фикс предложил довольно-таки корректное определение, которое вполне может использоваться как базовое.
Но вот надо обязательно докопаться
 

keltanas

marty cats
Лучше бы ты внимательнее читал. Я говорил обратное, что ORM нормально ложится и на NoSQL.
Но, называться она уже будет как-то по другому. Например, ODM.
К чему вообще этот спор о терминах, если все обсуждаемые термины уже имеют классические определения, принятые во всем мире? Зачем упираться, когда это надо просто принять?

keltanas Вам хочется аналогий? Давайте посмотрим на Ньютона и Эйнштейна. imho несколько ближе к рассматриваемой ситуации.
Ты желаешь оспорить законы Ньютона, или ОТО?
 
Сверху