Długawy. patrz Podsumowanie na dole.
RDBMS
RDBMS oznacza system zarządzania relacyjnymi bazami danych. Jest to system do zarządzania relacyjną bazą danych. Dane są tam przechowywane. Dane. Nie mówi logiki biznesowej.
Proces biznesowy
Co tak naprawdę oznacza logika biznesowa? Dla mnie to logiczny opis procesów biznesowych.
Procesy to takie działania biznesowe, które występują regularnie, na tyle, że nie są już ad hoc. Są one różne dla każdej firmy.
Pozwól mi założyć moją czapkę biznesową i wyjaśnić, co oznacza tutaj biznes. Dla niektórych może to być zaskoczeniem.
Biznes
Biznes to suma działań przeprowadzonych w celu osiągnięcia wartości, a dokładniej wartości, którą można handlować. Może to oznaczać robienie kombajnów, kanapek z tuńczykiem lub świadczenie usług bankowych. W większości krajów świata, nawet w systemach niekapitalistycznych, ludzie lubią uzyskiwać jak najwięcej za swoje pieniądze, a zatem istnieje konkurencja między różnymi dostawcami tych cennych towarów i usług. Konkurencja zasadniczo zależy od ceny, jakości i dostępności.
Szybki objazd: potrzebujesz 40 milionów nitów w ciągu 2 dni, nie zamawiasz od jakiegoś faceta w Internecie z kontem PayPal, bez względu na to, o ile tańsza jest jego cena niż u zwykłego sprzedawcy.
Wiedza o procesie
Jak można sobie wyobrazić, procesy związane z tworzeniem tej „wartości” przeważają w głowach wykonawczych. Niektóre z nich są zapisywane na papierze i wykorzystywane jako zasady i procedury firmy. Niektóre z nich żyją w głowach radców prawnych. Wiele z nich żyje w głowach ludzi kierujących oddziałami, działami, zespołami i kierujących maszynami, kasami, piekarnikami i ciężarówkami. Niewielki ich podzbiór obniża wymagania biznesowe dotyczące oprogramowania, a jeszcze mniejszy podzbiór jest dokładny do czasu jego wdrożenia w systemach komputerowych.
Ostatecznie logika biznesowa, którą widzisz w kodzie, nie jest tym, który prowadzi biznes, tylko tym, który uruchamia aplikację dla biznesu. Rzeczywiste mózgi w rzeczywistych ludziach przechodzą rzeczywiste procesy biznesowe i nie mają problemu ze zrozumieniem, że proces w ich mózgu jest dokładniejszy niż proces w komputerze. Nawiasem mówiąc, prawdopodobnie nie mógłbyś prowadzić firmy, gdyby wszystko, co miałeś, to zasady i procedury większości korporacji. Bardzo często są one rażąco niedokładne, pomimo wysiłków Herkulesa.
Tak więc ostatecznie logika aplikacji jest zakodowana w oprogramowaniu. I ludzie chcą umieścić to w bazie danych, ponieważ dostawcy systemów zarządzania bazą danych wysunęli wielkie roszczenia.
Logika aplikacji
Mówię nie. Mówię, że logika aplikacji pozostaje wewnątrz aplikacji. Dane trafiają do bazy danych w bardzo znormalizowany sposób, a następnie trafiają do bazy danych ETL w celu raportowania, wiercenia, zwijania, obracania i dzielenia.
Dane
Mówię również, że dane przeżywają dłużej niż aplikacja, więc wysiłki związane z normalizacją danych nie powinny być specyficzne dla aplikacji, a nawet specyficzne dla biznesu, ale raczej powinny być ogólne. Czy przechowujesz kody stanów? Powinieneś używać INCITS 38: 2009 (http://www.census.gov/geo/www/ansi/statetables.html), ponieważ jest przenośny dla różnych firm. Ułatwia to także wielu aplikacjom manipulowanie danymi.
NoSQL?
Jeśli traktujesz bazę danych jako część kodu aplikacji, od układu tabel do wyzwalaczy, procedur przechowywanych i formatów danych, zasadniczo używasz korporacyjnej bazy danych jako uwielbionego BerkleyDB, który jest uwielbioną płaską strukturą plików, który jest tak naprawdę tylko utrwalonymi listami. To jest właśnie to, co robi NoSQL: powrót do korzeni, ale robienie tego w wieloprocesowy, uparty, odporny na awarie.
Aktualny kod
Nie, musisz traktować bazę danych jako wspólne repozytorium danych dla wielu aplikacji, zarówno obecnych, jak i przyszłych. Teraz dochodzimy do sedna mojej argumentacji. Procesy biznesowe zmieniają się wraz z kaprysami rynku, polityki i mody. Bardzo często zmieniają się szybciej, niż koderowie potrafią zarządzać językami klasy informatycznej (Java, C #, C ++ itp.) I kończą pisanie w VBA w arkuszach kalkulacyjnych Excela w dziale księgowości lub marketingu. (I tylko jeśli nie można tego wyrazić w fantazyjnych widokach ...)
Degradacja bazy danych
Dane niewiele się zmieniają, jeśli są dobrze zorganizowane. Logika biznesowa zmienia się bardzo szybko. Umieszczenie logiki biznesowej w bazie danych powoduje, że baza danych staje się mniej wartościowa, ponieważ wcześniej stanie się przestarzała i niedokładna.
Podsumowanie
Dane muszą przeżyć aplikację, ponieważ procesy biznesowe w niej działają, a procesy biznesowe zmieniają się znacznie częściej. Zawarcie logiki biznesowej w bazie danych jest niekorzystne ze względu na jej długowieczność i ogólną wartość.
Zastrzeżenie
Zrobiłem część dba-dingu i przeczytałem odpowiedzi na dba.se, ale szczerze mówiąc, chodzi o problemy z integralnością danych i wydajnością. Całkowicie zgadzam się, że osoby, które dotykają danych korporacyjnych, powinny wiedzieć, co robią, czy to dba, programista, czy starszy analityk SAS z dostępem do odczytu / zapisu.
Zauważyłem również, że polecają programistom znać SQL. Zgadzam się. Jest to język programowania komputerowego, więc nie rozumiem, dlaczego programiści nie chcieli go znać.
Później, po przemyśleniu
Myślę, że podstawą jest stworzenie interfejsu API i zarządzanie tym przepływem danych tam iz powrotem. Jeśli nie możesz zezwolić aplikacjom na bezpośrednie łączenie się z tabelami, przynajmniej możesz sprawić, że mechanizm dostępu będzie w nowoczesnych językach.