co robią programiści baz danych?

14

Za każdym razem, gdy czytam o programistach Oracle itp., Jestem zdezorientowany. Nie wiem co dokładnie robią.

Z mojego zrozumienia, programiści aplikacji muszą opracować podstawową funkcjonalność. Biblioteki, których używają, mogą pomóc w tworzeniu GUI lub łączności z bazą danych, ale funkcjonalność, która sprawia, że ​​aplikacja musi zostać zaprogramowana, i sprawia, że ​​każda aplikacja jest inna (cóż, niektóre mogą być ulepszonymi wersjami innych).

Czy w związku z tym programowanie bazy danych nie polega na tworzeniu tabeli i czy te tabele nie są przetwarzane w odpowiedzi na instrukcje SQL wydawane przez aplikację, która zwykle jest interfejsem użytkownika? Czy tworzenie stolików to taka wielka sprawa?

Tomasz
źródło

Odpowiedzi:

18

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.

Justin
źródło
Dzięki za odpowiedź (zrezygnowałem z nadziei na jej otrzymanie)! Powodem, dla którego o to zapytałem, jest to, że jako „programista aplikacji” zaprojektowałem małą bazę danych w msaccess, aby zrobić coś dla mojego projektu i nie wydawało mi się to zbyt trudne, ale jako programista oczywiście dbase t „łatwy”. Ale wciąż brakuje mi perspektywy potrzebnej do zrozumienia tego. To znaczy, jak różna może być jedna baza danych od innej? Jak żaden programista „nie zapisuje” kodu zarządzania plikami, ale korzysta z bibliotek, czy nie są dostępne szablony / biblioteki dostępne do projektowania dbase? A może programowanie dbase jest w rzeczywistości adminem dbase?
Czy typowy programista też tego nie zrobiłby? Wydaje mi się, że pracowałem jeszcze w zbyt małych organizacjach, aby obserwować jakikolwiek użytek dla programisty baz danych, ponieważ twórca aplikacji to zazwyczaj ten, który jeździ pociągiem. Wie, czego chce i zwykle sam to projektuje.
Brian
1
Z mojego doświadczenia wynika, że ​​niektóre działania biznesowe wymagają zespołów ekspertów DBA. Najnowszym, o którym słyszałem, było połączenie Coca-Coli i Minute Maid. Ich bazy danych (a było ich dużo) musiały zostać połączone, a Minute Maid's nie zostały zaprojektowane w taki sam sposób, jak Coca-Cola, i tamto, tamto i tamto. Zaplanowali i przetestowali to połączenie przez dobre sześć miesięcy, zanim pociągnęli go za sobą. Posiadanie niezależnego DBA niekoniecznie jest wymagane w małej firmie, ale w dużych zespołach jest to absolutnie niezbędne dla zadowolenia klienta.
Mike S
To powiedziawszy, w małych firmach (<50 osób) posiadanie co najmniej jednego (najlepiej dwóch lub trzech) samodzielnych DBA (ów) jest super, bardzo miłe, jeśli chodzi o twórców aplikacji. To i oddany personel IT do naprawy komputerów, ale to zupełnie inna historia.
Mike S
2
@ 0A0D, a wszystko to często 6 lat później, gdy w tabelach jest miliard lub więcej rekordów, a cały bałagan krzyczy powolnie, wynajmują eksperta bazy danych, aby naprawić bałagan, który nigdy nie powinien być zaprojektowany przez programistę aplikacji. Bazy danych są bardzo trudne do refaktoryzacji i muszą być zaprojektowane pod kątem wydajności od samego początku, co wydaje się zbyt trudne do zrozumienia dla programistów aplikacji. Mają też tendencję do projektowania w oparciu o to, czego nie potrzebuje interfejs użytkownika, a czego nie potrzebuje baza danych, dlatego pomijają wewnętrzne kontrole i ograniczenia audytu i integralności danych itp.
HLGEM,
12

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.

HLGEM
źródło
6

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ą.

Karl Bielefeldt
źródło
2

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).

Adam Arold
źródło
2

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.

Marjan Venema
źródło
1
„Oracle to nie tylko baza danych, ale kompletne środowisko programistyczne… Inne bazy danych mogą się ograniczać do„ tylko ”, umożliwiając zdefiniowanie i wykonanie…” Tego nie wiedziałem. Teraz to ma sens.
Thomas
SQL Server jest taki sam. Oprócz procedur przechowywanych, pakiety SSIS pozwalają na programowanie wizualne, wywoływanie innego istniejącego kodu, pisanie programów vb.net lub c # .net i wiele innych, wszystkie opakowane w IDE. Nie korzystałem z SSRS, ale podejrzewam, że jest podobnie. Jest TON programowania, a programista bazy danych musi znać wiele różnych narzędzi, języków i procesów.
Czwartek,
2

Powiedziałbym, że programista bazy danych jest odpowiedzialny za co najmniej jedną z następujących czynności

  • Projektowanie, obejmuje to tworzenie (a raczej definiowanie relacji) tabel
  • Optymalizacja, ustawianie właściwych indeksów, wybór kluczy, wybór odpowiednich typów danych
  • Funkcje, pisanie przydatnych funkcji do użycia w zapytaniach
  • Procedury, pisanie logiki aplikacji ściśle związanej z warstwą bazy danych.
  • Tworzenie funkcji wyzwalacza w celu reagowania na zdarzenia
  • Specyfikacja specyfikacji powyżej.

W zależności od RDBMS może obejmować zadania takie jak

  • Tworzenie raportów i formularzy
  • Tworzenie przepływów dla importu / eksportu danych

Spójrz na tę listę osób odpowiedzialnych

Peter Lindqvist
źródło