Опять срачь за ORM
http://tonsky.livejournal.com/275048.html
Если обработаться на жабе и дотнете, то записи в таблицах БД действительно начинают казаться объектами, только заколдованными злыми DBA по чернокнижию дейта и кодда. И нужно использовать специальные магические зелья в виде ORM чтобы объекты расколдовать.
А если работать в основном с СУБД и понимать, что "базе-то не объекты, в базе именно что отношения." то внезапно оказывается, что объекты-то не так часто и нужны, а иногда и вообще вредны.
Оно конечно выглядит просто - "взял из ORM объект, показал в форме, по нажатию ОК отдал его ORM на сохранение". Но подобные решения намертво увязывают структуру БД, результаты запросов и типы объектов в программе. И вынуждают использовать в БД только структуры данных, которые хорошо в такое укладываются.
Если обработаться на жабе и дотнете, то записи в таблицах БД действительно начинают казаться объектами, только заколдованными злыми DBA по чернокнижию дейта и кодда. И нужно использовать специальные магические зелья в виде ORM чтобы объекты расколдовать.
А если работать в основном с СУБД и понимать, что "базе-то не объекты, в базе именно что отношения." то внезапно оказывается, что объекты-то не так часто и нужны, а иногда и вообще вредны.
Оно конечно выглядит просто - "взял из ORM объект, показал в форме, по нажатию ОК отдал его ORM на сохранение". Но подобные решения намертво увязывают структуру БД, результаты запросов и типы объектов в программе. И вынуждают использовать в БД только структуры данных, которые хорошо в такое укладываются.
no subject
То есть, "в идеале" вы начинаете писать всё на чистых объектах (тупо чистых объектах, в случае питона наследуемых от object), а затем "связываете" их с описанием БД (которое не является ORM, а это просто представляение вашей БД, собственно сама операция связывания и есть этот самый маппинг обджект рилейшнов). Sqlalchemy позволяет сделать именно это.
no subject
no subject
А давайте так - если объект потерялся, то есть изменение не отразилось в дисковом хранилище, то материальная ответственость за потерянный реальный объект ляжет на вас. А там и до уголовного дела недалеко.
no subject
no subject
Но поскольку в большинстве уеб-проектов данные никому не важны, да и сам проект нужен только для перепродажи следующему инвестору - то там можно наворачивать сто слоев абстракции, держать все в оперативной памяти и радоваться, как быстро персистируются объекты.
no subject
Чем ORM не подходит под определение "работа идет строго с базой"? Не понимаю, к чему ты.
no subject
Кроссплатформенность - миф, бесшовный переход с базы на базу - тоже. Или оно одинаково медленно будет работать везде.
>да я вообще не помню проекты, где данные не важны
Да тот же Гугл. "Мы ни за что не отвечаем, пропадет что-то - сами виноваты".
no subject
Успешно переходил с базы на базу при помощи изменения пары строчек + миграции. По поводу "медленно" не понял, почему оно медленно будет работать.
> Да тот же Гугл. "Мы ни за что не отвечаем, пропадет что-то - сами виноваты".
Ну, одно дело "мы ни за что не отвечаем", другое -- "данные не важны".