Тривалий. див. Підсумок внизу.
RDBMS
RDBMS розшифровується як система управління реляційними базами даних. Це система управління реляційною базою даних. Дані зберігаються там. Дані. Це не говорить про ділову логіку.
Бізнес-процес
Що насправді означає логіка бізнесу? Для мене це опис бізнес-процесів в логічному відношенні.
Процеси - це бізнес, який регулярно відбувається, достатньо, щоб вони більше не були ad hoc. Вони різні для кожного бізнесу.
Дозвольте мені надіти свою кришку бізнесу та пояснити, що тут означає бізнес. Для когось це може стати несподіванкою.
Бізнес
Бізнес - це сума діяльності, яка здійснюється для досягнення створення цінності, а точніше вартості, якою можна торгувати. Це може означати створення комбайнів, бутерброди з тунцями або надання банківських послуг. У більшості країн світу, навіть у тих, що знаходяться в некапіталістичних системах, люди люблять отримувати найбільше значення своїх грошей, і тому існує конкуренція між різними постачальниками цих цінних товарів і послуг. Змагання, як правило, залежать від ціни, якості та доступності.
Швидкий об’їзд: Вам потрібно 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 у бухгалтерії чи маркетингу. (І лише в тому випадку, якщо це неможливо виразити у вигадливих vlookups ...)
Деградація бази даних
Дані не сильно змінюються, якщо вони добре організовані. Логіка бізнесу змінюється дуже швидко. Вкладаючи ділову логіку в базу даних, ви робите базу менш цінною, оскільки вона швидше застаріє і буде неточною.
Підсумок
Дані повинні переживати додаток, оскільки бізнес-процеси живуть у додатку, а бізнес-процеси змінюються набагато частіше. Включення бізнес-логіки в базу даних погано впливає на її довговічність та загальну цінність.
Caveat
Я зробив свою частку dba-ing, і я прочитав відповіді на dba.se, але чесно кажучи, про що вони говорять - це питання цілісності даних та проблеми ефективності. Я повністю погоджуюся, що люди, які торкаються корпоративних даних, повинні знати, що вони роблять, будь то dba чи програміст чи старший аналітик SAS з доступом до читання / запису.
Я також зазначив, що вони рекомендують кодерам знати SQL. Я згоден. Це мова комп’ютерного програмування, тому я не бачу, чому комп'ютерні програмісти не хочуть цього знати.
Пізніше, подумавши про це
Я думаю, що середня частина полягає в тому, щоб створити API, і він повинен управляти потоком даних туди-сюди. Якщо ви не можете дозволити додаткам підключатися безпосередньо до таблиць, принаймні ви можете зробити так, щоб механізм доступу був сучасними мовами.