Длинноватые. см. Резюме внизу.
RDBMS
СУРБД означает систему управления реляционными базами данных. Это система управления реляционной базой данных. Данные хранятся там. Данные. Это не говорит о бизнес-логике.
Бизнес-процесс
Что на самом деле означает бизнес-логика? Для меня это описание бизнес-процессов в логических терминах.
Процессы - это те бизнес-операции, которые происходят регулярно, достаточно того, что они больше не являются специальными. Они разные для каждого бизнеса.
Позвольте мне надеть мою деловую шапку и объяснить, что здесь означает бизнес. Для некоторых это может стать неожиданностью.
Бизнес
Бизнес - это сумма действий, выполненных для достижения создания стоимости, и, более конкретно, стоимости, которой можно торговать. Это может означать создание комбайнов, бутербродов с тунцом или предоставление банковских услуг. В большинстве стран мира, даже в некапиталистических системах, людям нравится получать наибольшую отдачу от своих денег, и поэтому существует конкуренция между различными поставщиками этих ценных товаров и услуг. Конкуренция обычно зависит от цены, качества и доступности.
Быстрый обход: вам понадобится 40 миллионов заклепок за 2 дня, вы не собираетесь заказывать у какого-нибудь парня в Интернете со счетом PayPal, независимо от того, насколько дешевле его цена, чем у вашего обычного продавца.
Знание процесса
Как вы можете себе представить, процессы, связанные с созданием этой «стоимости», в основном живут в исполнительных главах. Часть из этого написана на бумаге и используется в качестве политики и процедур компании. Часть этого живет в головах корпоративных адвокатов. Многое из этого живет в голове людей, управляющих отделами, отделами, командами, и теми, кто управляет машинами, кассовыми аппаратами, печами, грузовиками. Небольшое подмножество этого когда-либо сводит на нет бизнес-требования к программному обеспечению, а еще меньшее подмножество точно соответствует времени, когда оно внедряется в компьютерные системы.
В конце концов, бизнес-логика, которую вы видите в коде, - это не то, что управляет бизнесом, это то, что запускает приложение для бизнеса. Фактический мозг внутри реальных людей содержит реальные бизнес-процессы, и у них нет проблем с пониманием того, что процесс в их мозге более точен, чем процесс в компьютере. Кроме того, вы, вероятно, не могли бы вести бизнес, если бы у вас были только политики и процедуры большинства корпораций. Очень часто это очень неточно, несмотря на огромные усилия.
Итак, в конце концов, это логика приложения, которая закодирована в программном обеспечении. И люди хотят поместить это в базу данных, потому что поставщики систем управления базами данных сделали грандиозные требования.
Логика приложения
Я говорю нет. Я говорю, что логика приложения остается внутри приложения. Данные поступают в базу данных в очень нормализованном виде, а затем передаются в ETL'd в хранилище данных для составления отчетов, сверления, объединения, поворота и кубирования.
Данные
Я также говорю, что данные переживают приложение, поэтому усилия по нормализации данных не должны быть конкретными для приложения и даже не специфичными для бизнеса, а скорее должны быть общими для бизнеса. Вы храните коды штатов? Вы должны использовать INCITS 38: 2009 (http://www.census.gov/geo/www/ansi/statetables.html), потому что это переносимо для предприятий. Это также позволяет нескольким приложениям манипулировать данными.
NoSQL?
Если вы рассматриваете базу данных как часть кода приложения, от макета таблиц до триггеров, хранимых процедур и форматов данных, вы, по сути, используете базу данных предприятия в качестве прославленной BerkleyDB, представляющей собой прославленную структуру плоских файлов, что на самом деле просто сохранились списки. По сути, это то, что делает NoSQL: возвращаться к корням, но делать это многопроцессно, настойчиво, отказоустойчиво.
Актуальный код
Нет, вам нужно рассматривать базу данных как общий репозиторий данных для нескольких приложений, как текущих, так и будущих. Теперь мы подошли к сути моего аргумента. Бизнес-процессы меняются вместе с капризами рынка, политики и моды. Очень часто они меняются быстрее, чем то, с чем могут справиться программисты на языках компьютерного уровня (Java, C #, C ++ и т. Д.), И в конечном итоге пишутся на VBA в электронных таблицах Excel в отделе бухгалтерского учета или маркетинга. (И только если это не может быть выражено в причудливых взглядах ...)
Ухудшение базы данных
Данные не сильно меняются, если они хорошо организованы. Бизнес-логика меняется очень быстро. Поместив бизнес-логику в базу данных, вы сделаете базу данных менее ценной, потому что она устареет и станет неточной.
Резюме
Данные должны пережить приложение, потому что бизнес-процессы живут в приложении, а бизнес-процессы меняются гораздо чаще. Включение бизнес-логики в базу данных вредно для ее долговечности и общей ценности.
Предостережение
Я сделал свою долю в dba-ing и прочитал ответы на dba.se, но, честно говоря, они говорят о проблемах целостности данных и производительности. Я полностью согласен с тем, что люди, которые касаются корпоративных данных, должны знать, что они делают, будь то dba или программист или старший аналитик SAS с доступом для чтения / записи.
Я также отметил, что они рекомендуют кодерам знать SQL. Я согласен. Это язык программирования, поэтому я не понимаю, почему программисты не хотят его знать.
Позже, подумав об этом
Я думаю, что золотая середина - это создание API, и этот API должен управлять потоком данных туда и обратно. Если вы не можете разрешить приложениям подключаться напрямую к таблицам, по крайней мере, вы можете настроить механизм доступа на современные языки.