Oto, gdzie nieuchronnie musi się odbyć spotkanie umysłów, to znaczy umysłów Deweloperów (DV) i DBA. Praca z Business Logic (BL) i przechowywanie takich danych w bazie danych może mieć wpływ, który może gloryfikować lub przerazić jego implementację.
W przypadku niektórych produktów RDBMS istnieją doskonałe biblioteki / narzędzia / interfejsy API dla logiki biznesowej i infrastruktur obiektowych, których można szybko nauczyć się i zastosować w ich aplikacjach. W przypadku innych RDBMS nie istnieją biblioteki / narzędzia / interfejsy API.
W przeszłości aplikacje klienckie tworzyły mostek w BL za pomocą procedur przechowywanych (SP). W przypadku produktów takich jak Oracle i SQL Server zrobiono to wcześnie. Wraz z powstaniem baz danych typu open source, takich jak PostgreSQL i MySQL, użytkownicy korzystający z nich byli narażeni na przełom w zakresie procedur przechowywanych w BL. PostgreSQL dojrzał w tym czasie bardzo szybko, ponieważ zaimplementowano nie tylko procedury składowane, ale także możliwość tworzenia języków klienta. MySQL zasadniczo przestał ewoluować w świecie procedur przechowywanych i przyszedł w formie uproszczonej wersji języka z wieloma ograniczeniami. Tak więc, jeśli chodzi o BL, jesteś całkowicie na łasce MySQL i jego języka procedury składowanej.
Pozostaje tylko jedno pytanie: niezależnie od RDBMS, czy BL powinien znajdować się w całości czy w części w bazie danych?
Pomyśl o deweloperze. Gdy w aplikacji coś pójdzie nie tak, proces debugowania spowoduje, że programista wskoczy i wyskoczy z bazy danych, aby śledzić zmiany danych, które mogą być poprawne lub nie, co jakiś czas. To jest jak kodowanie aplikacji C ++ i wywoływanie kodu asemblera w środku. Musisz przełączyć się z kodu źródłowego, klas i struktur na przerwania, rejestry i przesunięcia ORAZ POWRÓT !!! To debugowanie na tym samym poziomie.
Deweloperzy mogą być w stanie stworzyć szybką metodę wykonywania BL w połączeniu z konfiguracjami językowymi (flagi kompilatora dla C ++, różne ustawienia dla PHP / Python itp.) Za pomocą obiektów biznesowych znajdujących się w pamięci, a nie w bazie danych. Niektórzy próbowali przełączyć tę ideologię na szybsze uruchamianie kodu w bazie danych, pisząc biblioteki, w których debugowanie procedur składowanych i wyzwalaczy jest dobrze zintegrowane z bazą danych i wydaje się niemożliwe do użycia.
Dlatego programista ma za zadanie opracować, debugować i utrzymywać kod źródłowy i BL w dwóch wersjach językowych.
Teraz pomyśl o DBA. DBA chce, aby baza danych była szczupła i jak najwięcej znaczyła w dziedzinie procedur przechowywanych. DBA może postrzegać BL jako coś zewnętrznego w stosunku do bazy danych. Jednak gdy SQL wymaga danych potrzebnych do BL, SQL musi być ubogi i wredny.
Teraz na spotkanie umysłów !!!
Deweloper koduje SP i stosuje metody iteracyjne. DBA patrzy na SP. DBA ustala, że pojedyncza instrukcja SQL może zastąpić iteracyjne metody napisane przez programistę. Deweloper widzi, że instrukcja SQL sugerowana przez DBA wymaga wywołania innego kodu związanego z BL lub SQL, który nie jest zgodny z normalnymi planami wykonania instrukcji SQL.
W świetle tego konfiguracja, dostrajanie wydajności i kodowanie SP stają się funkcją głębokości i intensywności danych BL dla pobierania danych. Im większa głębokość i intensywność danych, tym więcej programistów i DBA musi znajdować się na tej samej stronie, aby uzyskać dane i moc obliczeniową przekazaną do bazy danych.
WNIOSEK
Sposób wyszukiwania danych powinien zawsze obejmować zarówno obozy programistów, jak i obozy DBA. Należy zawsze udzielać koncesji na to, jakie metody kodowania i paradygmaty wyszukiwania danych mogą ze sobą współpracować, zarówno pod względem szybkości, jak i wydajności. Jeśli przygotowanie danych do obsługi kodu źródłowego odbywa się tylko jeden raz, zanim kod pobierze dane, DBA powinien dyktować użycie lean i średniego SQL. Jeśli BL jest czymś, czego DBA nie jest w zgodzie, stery są wtedy w rękach Dewelopera. Dlatego DBA powinien widzieć siebie i część zespołu projektowego, a nie wyspę dla siebie, podczas gdy Deweloper musi pozwolić DBA dopracować SQL, jeśli to uzasadnia.