metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-07-30 08:07 pm

Рельсы и констрейнты в БД

http://guides.rubyonrails.org/migrations.html#active-record-and-referential-integrity
"The Active Record way claims that intelligence belongs in your models, not in the database. As such, features such as triggers or foreign key constraints, which push some of that intelligence back into the database, are not heavily used."

В ActiveRecord червь не рекомендует делать констрейнты в БД. Это огорчение, т.к. например, я сломал к хуям (т.е. до невозможности вообще хоть что-либо сделать из UI) хипстерское веб-приложение одним SQL-запросом :)

[identity profile] zelanton.livejournal.com 2013-07-30 07:59 pm (UTC)(link)
Лопнет

может например удалятся через настраиваемое время (n-лет) после пребывания в статусе "как бы удалено". Или вообще не удаляться. Это уж как юзеру угодно будет, схему жизненного цикла объекта пускай правит, где-то оно надо, где-то - мешает, по ситуации. Но вообще сама возможность удаления в ситуация когда связей уже пиздец сколько и oracle/mssql ебанётся на каком-нибудь случае.

[identity profile] zelanton.livejournal.com 2013-07-30 08:02 pm (UTC)(link)
ну. Кстати у FB с этим беда (многие триггеры не тупо создаются, уж не помню с какими формулировками). Если я ничего не путаю, а могу, т.к. натрахавшись с триггерами я на них уже забил и делаю кодом - в каждой СУБД свои уникальные грабли, превращающие кросплатформенную работу с тригерамми в кромешный адъ. Только код, а заодно никакого вендор-лока. Но там свои грабли)

[identity profile] vp.livejournal.com 2013-07-30 08:03 pm (UTC)(link)
"никого в базу не пускать"

А самого себя инстансов так 100 если, да все на одну базу?

[identity profile] zelanton.livejournal.com 2013-07-30 08:05 pm (UTC)(link)
чёй-та я не понял твоего французкого.
"самого себя инстансов" - это ты сессии что-ли так обозвал? Или шо? А что, у вас кол-во подключений чем-то лимитировано, после цифры 20 например перестаёт работать? Или откуда такие вопросы?

[identity profile] zelanton.livejournal.com 2013-07-30 08:12 pm (UTC)(link)
если инстансы БД, то я тоже не догоняю откуда подобный вопрос и какое оно имеет отношение к сказанному.

[identity profile] plumqqz.livejournal.com 2013-07-30 08:56 pm (UTC)(link)
Неинтересно. Вы меня извините, но тащ явно совсем не понимает, зачем эти констрейны вообще нужны. Ну не понимает и не понимает, это его проблемы.

Рельсы и констрейнты в БД

[identity profile] livejournal.livejournal.com 2013-07-30 09:38 pm (UTC)(link)
User [livejournal.com profile] insanegigolo referenced to your post from Рельсы и констрейнты в БД (http://insanegigolo.livejournal.com/89887.html) saying: [...] Оригинал взят у в Рельсы и констрейнты в БД [...]
develop7: (dero)

[personal profile] develop7 2013-07-30 10:02 pm (UTC)(link)
а ещё если БД приложения удалить, то тупые хипстерские рельсы её обратно не поднимают, представляешь?
Edited 2013-07-30 22:02 (UTC)

[identity profile] theiced.livejournal.com 2013-07-30 11:02 pm (UTC)(link)
я ему тоже самое сказал ;]

>[1:45:34 PM] Andrew Kirilenko: если крокодила пустить
>[1:45:39 PM] Andrew Kirilenko: то он и drop database сделает
>[1:46:15 PM] Andrew Kirilenko: ну вообще тут тоже самое что и динамической типизацией
>[1:46:21 PM] Andrew Kirilenko: надо чернягу не творить явную
>[1:46:26 PM] Andrew Kirilenko: и всё будет работать заебис

[identity profile] fraks-nsk.livejournal.com 2013-07-31 01:38 am (UTC)(link)
Если закладывается такой функционал "удалять через N лет" то нет никаких проблем в рамках этого функционала реализовать корректное удаление, с учетом связей. Зато корректность и целостность гарантирована.

[identity profile] fraks-nsk.livejournal.com 2013-07-31 01:39 am (UTC)(link)
Триггеры создаются "не тупо"? А надо что бы было "тупо"?

[identity profile] metaclass.livejournal.com 2013-07-31 05:31 am (UTC)(link)
А вот например, пользователю на уровне БД можно дать права только на Insert и только в одну таблицу. Без всяких "удалить базу" и прочего там.

Есенинское

[identity profile] livejournal.livejournal.com 2013-07-31 06:56 am (UTC)(link)
User [livejournal.com profile] plumqqz referenced to your post from Есенинское (http://plumqqz.livejournal.com/389428.html) saying: [...] рожье В овраг глухой. Пролей как масло Власа луны В мужичьи ясли Моей страны Срок ночи долог... [...]
develop7: (dero)

[personal profile] develop7 2013-07-31 09:17 am (UTC)(link)
Я когда-то баловался, ещё на пхп. В итоге оказалось удобнее реализовывать ограничения в приложении — и гибче, и проще деплоить, и проще допиливать.

[identity profile] zealer.livejournal.com 2013-07-31 09:35 am (UTC)(link)
Это конечно неофициально, но с моей точки зрения - Рельсы предполагают, что на проекте будет DBA, который будет работать с базой на продакшене.
А в development/test режиме это не обязательно.
develop7: (dero)

[personal profile] develop7 2013-07-31 09:37 am (UTC)(link)
Вообще это всё имело бы смысл обсуждать, если бы юзеры вашего приложения работали с БД из SQL-клиента, а не из веб- или десктоп-морды.
Edited 2013-07-31 10:08 (UTC)

[identity profile] fraks-nsk.livejournal.com 2013-07-31 09:40 am (UTC)(link)
Гм... Вообще-то люди не идеальны, в том числе и вы. Констрейнты позволяют максимально просто и быстро объявить ограничения со 100% их соблюдением. А в приложении оно будет реализовано не сразу, забыл, не подумал, отвлекся, "потом"...

[identity profile] sergiej.livejournal.com 2013-07-31 09:44 am (UTC)(link)
так я же соглашаюсь, как временные костыли и как последняя инстанция для прикрытия задницы - очень даже, но не как основа логики приложения.

[identity profile] metaclass.livejournal.com 2013-07-31 10:46 am (UTC)(link)
Вообще, десктоп-морда у меня - это SQL-клиент, только облагороженный до состояния "может пользоваться любой человек".

[identity profile] ext_1684112 (from livejournal.com) 2013-07-31 10:57 am (UTC)(link)
А не надо использовать FB.

[identity profile] zelanton.livejournal.com 2013-07-31 11:09 am (UTC)(link)
Не надо в новом. А вот поддержка старого никуда не денется, благо это не стиль "втюхал и забыл"

[identity profile] ext_1684112 (from livejournal.com) 2013-07-31 11:16 am (UTC)(link)
> это не стиль
Так делать тоже не надо. Делать исключения только за очень большие деньги.

[identity profile] zelanton.livejournal.com 2013-07-31 11:19 am (UTC)(link)
Как делать не надо? Поддерживать старые внедрения не надо? Новомодный стиль "продали, а там хоть потоп"?
develop7: (dero)

[personal profile] develop7 2013-07-31 12:16 pm (UTC)(link)
таки у ваших юзеров аутентификация сервером БД? тогда да, иначе чем GRANTом, будет очень сложно.

Page 3 of 4