metaclass: (Default)
[personal profile] metaclass
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-запросом :)

Date: 2013-07-30 05:37 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Констрейнты что до базы (в UI), что после базы обрабатываются достаточно однообразно, главное сунуть обработчик в точку через которую запросы ходят.
Зато при их наличии гарантированно, что внешние псы ходящие в базу, приложение не попортят.

Date: 2013-07-30 05:41 pm (UTC)
From: [identity profile] sergiej.livejournal.com
" что внешние псы ходящие в базу, приложение не попортят."
Расстреливать сразу

Date: 2013-07-30 05:48 pm (UTC)
From: [identity profile] sergiej.livejournal.com
Внутри легаси я согласен на любой ад, однако легаси лазить в новое приложение через базу никогда не разрешу, даже если рукожопые сэкономят на этом человекомесяцы - мне пофиг. Если поднимают хай, я поднимаю вопрос рисков и безопасности до топ манагеров.

Date: 2013-07-30 07:25 pm (UTC)
From: [identity profile] falcrum.livejournal.com
Архип'авильно! Были прен-цен-ден-ты... :(

Date: 2013-07-30 07:31 pm (UTC)
From: [identity profile] sergiej.livejournal.com
ну так блин, лучший учитель - собственная задница :)

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

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

Date: 2013-07-30 07:45 pm (UTC)
From: [identity profile] zelanton.livejournal.com
А потом удаление записей превращается в ебанный секс, когда структура данных превращается в сеть, где объекты сами на себя ссылаются через 10 разных путей. И хуячь триггеры, процедуры, получай вендор лок. Особенно пиздато, когда в каком-нибудь оракле от всех этих триггеров и процедур приползают блокировки страниц или другое подобное веселье. Или тот же MSSQL с ограничением вложенности рекурсии.

Собственно целостность можно кодом контролировать, в.т.ч. отложено - искать и чистить битые связи. Главное в базу никого не пуcкать. Ну как вариант конечно, особенно когда за сроки мозг ебут, а это практически всегда.

Date: 2013-07-30 07:53 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Рекурсивные зависимости в базе?

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

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

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

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

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

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

Date: 2013-07-31 12:22 pm (UTC)
From: [identity profile] ext_1684112 (from livejournal.com)
>Новомодный стиль

Что это он новомодный. Очень даже старый.

(no subject)

From: [identity profile] zelanton.livejournal.com - Date: 2013-07-31 12:50 pm (UTC) - Expand

Date: 2013-07-30 07:53 pm (UTC)
From: [identity profile] henu3detb.livejournal.com
А вот не надо ничего удалять )

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

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

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

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

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

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

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

Date: 2013-07-31 02:00 pm (UTC)
From: [identity profile] dennab.livejournal.com
Завернуть базу в какой-нить один интерфейс не?

Date: 2013-07-31 07:18 pm (UTC)
From: [identity profile] zelanton.livejournal.com
ORM же + многозвенка, я ядром и развитым API для работы извне.
Заодно снимается необходимость требовать много всяких ненужных BDA длябы оно работало.
А то сначала напишут софт который для маломальско-нормальной работы требует сотню крокодилов, а потом пишут постики про то, что крокодилы у клиентов некачественные.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 19th, 2025 03:09 am
Powered by Dreamwidth Studios