Aby naprawdę docenić, jakich programistów baz danych naprawdę musisz spróbować, pozwól mi wyjaśnić to w inny sposób.
Dla niedoinformowanych może się to wydawać, że w idealnym świecie programiści aplikacji tak naprawdę nie robią zbyt wiele - biorą wymagania i procesy zapisane przez analityków biznesowych i tłumaczą je na kod, który licytują programiści.
Oczywiście każdy, kto ma doświadczenie w programowaniu, będzie wiedział, że to nie tak działa - ignorując na chwilę fakt, że wymagania nigdy nie określają zachowania aplikacji w najdrobniejszych szczegółach, istnieje wiele komplikacji
- Programiści muszą zdecydować o strukturze aplikacji
- Przełożenie wymagań na coś, co rozumie komputer, często nie jest trywialne.
- Programiści muszą zdawać sobie sprawę z wpływu na wydajność
- W miarę, jak programiści zdobywają doświadczenie na wybranej platformie, stają się bardziej biegli, dostarczając kod o wyższej jakości w szybszym tempie.
(Oczywiście, jest to znacznie zredukowana lista, próbuję tylko podnieść punkty, które mają podobieństwa w tworzeniu baz danych)
Cóż, tworzenie baz danych jest bardzo podobne - dla źle poinformowanych wygląda to dość prosto, ale kiedy bardziej się zaangażujesz, zdajesz sobie sprawę z konkretnych komplikacji związanych z tworzeniem baz danych:
- Decydują o strukturze bazy danych
- Często bardziej złożone zapytania mogą być dalekie od trywialnych do przetłumaczenia z wymagań
- Twórcy baz danych muszą się martwić wydajnością bazy danych
- Muszą również dbać o utrzymanie integralności i dostępności danych
- I podobnie jak programiści, programiści baz danych stają się bardziej biegli we wszystkim, co robią, gdy stają się bardziej doświadczeni.
Tak jak tworzenie aplikacji jest pełne ukrytych pułapek (problemy z wątkami itp.), Tak samo jest z tworzeniem baz danych, a często konsekwencje popełnienia błędu przez te problemy są bardzo poważne (np. Utrata danych lub potencjalnie przestój dla wszystkich aplikacji korzystających z bazy danych) .
Myślę, że rzeczą, która sprawia, że programiści myślą, że nie ma w tym nic („Czy programista nie może tego zrobić?”) Jest to, że role nakładają się na siebie i wymagają podobnych zestawów umiejętności - mam bez wątpienia każdy, kto potrafi być dobrym programistą, może także być dobrym programistą baz danych, mając czas i doświadczenie, jednak nikt nie powinien lekceważyć wartości doświadczonego eksperta od baz danych.
Programiści baz danych robią wiele rzeczy. Najpierw projektują strukturę bazy danych, aby działała poprawnie z liczbą oczekiwanych rekordów. Projektowanie struktur, które działają poprawnie dla kilku tysięcy rekordów, może sprawić, że baza danych nie będzie nadawać się do użytku dla kilku milionów rekordów. Muszą także upewnić się, że dane zachowają integralność w czasie oraz że dane są zabezpieczone przed nieautoryzowanymi zmianami lub kradzieżą. Muszą dokładnie zrozumieć normalizację oraz czas denormalizacji i dlaczego. Muszą zrozumieć wydajność i sposób zapewnienia integralności danych. Muszą zrozumieć bezpieczeństwo i zapobiegać kradzieży lub złośliwej zmianie danych.
Wykonują zapytania dostrajające. Zmieniłem zapytania, których uruchomienie zajmuje kilka minut, na milisekundy. Zmieniłem proces, który trwał ponad 24 godziny, do mniej niż 30 minut. Projektują i utrzymują struktury indeksujące, które równoważą szybkość wstawek z szybkością selekcji.
Piszą złożone zapytania, w szczególności zapytania sprawozdawcze. Osobiście napisałem zapytania o długości ponad 1000 linii ze względu na złożoność tego wymagania. Wciąż musieli i biegli szybko.
Tworzą hurtownie danych i towarzyszące im procesy ETL, aby je wspierać. Często muszą pisać procesy, aby wprowadzić dane z innych źródeł, i muszą wymyślić, jak zamapować pola z bazy danych niektórych klientów na swoje, i nigdy nie są one ściśle dopasowane do typu danych, wielkości danych, wymaganych pól, wartości wyszukiwania, itp.
Muszą ustalić, jak dokonać refaktoryzacji, gdy zmieniają się wymagania bazy danych, bez szkody dla 100 000 000 rekordów, które już posiadają, i bez całkowitego zatrzymania korzystania z bazy danych. Duże bazy danych mogą obejmować tysiące tabel i przechowywanych procesów i funkcji zdefiniowanych przez użytkownika. Zrozumienie takiej struktury wymaga czasu i umiejętności, podobnie jak zrozumienie, na co wpłyną zmiany i jak.
Projektują sposoby audytu danych z powodów prawnych i odzyskiwania. Następnie projektują sposoby odzyskiwania danych z tych tabel kontroli. Badają problemy z danymi, aby ustalić, czy przyczyną problemu był błąd w procesie importowania, zły plik udostępniony przez innych lub złe wstawienie / aktualizacja aplikacji, czy też nieautoryzowany dostęp. Znajdują sposoby na naprawienie złych danych, gdy programiści aplikacji pozostawili otwartą dziurę dla hakerów do zaatakowania.
Często biorą udział w konwersji danych z jednego systemu do nowego. Czasami wymaga to przeniesienia danych z jednego produktu COTS do nowego, który firma właśnie kupiła. Podobnie jak w przypadku importu opisanego wcześniej, są to złożone procesy, których zaplanowanie i wykonanie może zająć miesiące i które wymagają obszernych testów. W przeciwieństwie do importu, programista bazy danych może nie mieć kontroli nad odmiennymi strukturami danych.
źródło
Pod koniec lat 90. pracowałem jako programista baz danych dla danych produkcyjnych 24-godzinnego producenta płytek. Nie wiem, jak typowe były moje obowiązki, ale największa część była dla mnie, gdy potrzebna była zmiana kodowania pola lub schematu, musiałem upewnić się, że zmiana była bezproblemowa w produkcji. Zasadniczo oznaczało to, że powiem im, aby zaktualizowali aplikację kliencką, co zrobiliby w dogodnym dla nich czasie, i oczekiwano, że natychmiast wrócą z nowymi zmianami.
To było o wiele bardziej zaangażowane, niż się spodziewałem. Skrypty konwersji i oprogramowanie klienckie musiały zostać dokładnie przetestowane. Często dwa semantycznie identyczne, ale niekompatybilne zestawy danych musiały być utrzymywane w synchronizacji, aż wszyscy zostaną przełączeni. Czasami konieczne było wykonanie przełącznika w wielu, starannie zaplanowanych fazach, aby był płynny. Nierzadko przygotowywał się na tygodnie na zmianę, która nastąpiła zasadniczo natychmiast.
Jeśli programista bazy danych dobrze wykonuje swoją pracę, wydaje się obserwatorom, że jego praca jest bardzo łatwa. Nie dziwię się, że wiele osób tak naprawdę nie wie, co robią.
źródło
To jest raczej proste. Jeśli słyszałeś o podobnym wzorze MVC, powinieneś znać różnicę między swoimi kontrolerami a modelami. Na przykład, jeśli piszesz ERP, wyobraź sobie, że w kontrolerze po prostu mówisz do swojego modelu „retrieveCashFlow”, a Twój model wywołuje zapisany program w bazie danych. Ten przechowywany program zajmuje się każdym łączeniem, filtrowaniem, porządkowaniem itd., A Ty odzyskujesz przetworzone dane. W kontrolerze musisz po prostu wymieszać rzeczy.
Jeśli masz wątpliwości co do procedur przechowywanych, sprawdź to: po co korzystać z procedur przechowywanych?
Mówiąc wprost: programiści baz danych piszą zapisane programy (procedury i funkcje), aby aplikacja mogła zająć się M w MVC (lub logiką biznesową, jeśli nie używasz mvc).
źródło
Oracle to nie tylko baza danych, ale kompletne środowisko programistyczne, w tym formularze i projektanci raportów. Jako programista Oracle programujesz kompletne aplikacje użytkownika. Kodowanie bazy danych, do której się odwołujesz, często wykonuje wyspecjalizowani administratorzy baz danych (DBA).
Myślę, że Sybase to kolejny z podobnymi środowiskami programistycznymi.
Inne bazy danych mogą ograniczać się do „tylko” pozwalającego na definiowanie i wykonywanie raportów, podczas gdy inne mogą w ogóle nie oferować żadnych formularzy ani narzędzi do projektowania / wykonywania raportów.
źródło
Powiedziałbym, że programista bazy danych jest odpowiedzialny za co najmniej jedną z następujących czynności
W zależności od RDBMS może obejmować zadania takie jak
Spójrz na tę listę osób odpowiedzialnych
źródło