Kto projektuje bazy danych w tworzeniu stron internetowych? [Zamknięte]

11

Kto w kontekście tworzenia stron internetowych projektuje bazy danych? Pomimo całej masy informacji związanych z zapleczem web dev z przetwarzaniem po stronie serwera, modelowaniem danych itp., Aspekt równania projektowania bazy danych wydaje się być tajemniczo nieobecny.

Nie mówię o tym, kto konfiguruje fizyczną bazę danych, mam na myśli, kto projektuje logiczny model bazy danych, przeprowadza wywiady z użytkownikami, aby uzyskać informacje na temat potrzebnych pól, specyfikacji pól itp. .

Zdałem sobie sprawę, że projekt ( PROPER ) bazy danych nie jest małym zadaniem (czytam ten pager 672) i może z łatwością stanowić cały zawód. Jednak przeszukiwanie Internetu w górę i w dół doprowadziło do zaskakująco niewielkich wyników dla osób, które powinny poradzić sobie z tym zadaniem w kontekście web dev.

the_endian
źródło
2
Jest to tak bardzo zależne od organizacji, z jakich działów i struktury korzysta - z mojego doświadczenia wynika, że ​​zwykle są to programiści / architekci rozwiązań, a jeśli istnieje dział bazy danych, w związku z DBA lub konkretnymi programistami baz danych.
Allan S. Hansen
what those field specifications are, jeśli twój projekt ma specyfikację, powinieneś być w stanie zidentyfikować swój model.
Walfrat 31.08.16
1
Powiedziałbym, że w dzisiejszych czasach, niezależnie od używanego frameworka, narzuca się projekt bazy danych.
Pieter B

Odpowiedzi:

18

Twoje pytanie dotyczy nie tylko aplikacji internetowych, ale wszystkich rodzajów aplikacji korzystających z zaplecza bazy danych.

Z mojego doświadczenia

  • Projekt bazy danych jest połączoną pracą programistów i DBA.
  • Deweloperzy opracowują szorstkie lub często bardzo dobre projekty baz danych. Wszystko zależy od doświadczenia programistów.
  • Często programiści tworzą tabele w swojej bazie danych programowania, a model koncepcyjny jest z nich odtwarzany.
  • Często koncepcyjne diagramy ER są omawiane z innymi członkami zespołu, często klientami. Na tym etapie oczywiste błędy pojęciowe są wykrywane i, mam nadzieję, ustalone i naprawione.
  • Zadaniem DBA jest przejrzenie takiego projektu i dostrojenie go w celu wykrycia naruszeń normalnych form.
  • DBA wymusza także konwencje nazewnictwa tabel i kolumn
  • Również DBA przewiduje możliwe wąskie gardła wydajności i próbuje zrozumieć, w jaki sposób dane będą wyszukiwane w celu późniejszego utworzenia odpowiednich indeksów.
  • Cykl zmian / sprawdzania / naprawiania między deweloperem / projektantem aplikacji a DBA przechodzi kilka iteracji, aż model jest wystarczająco dojrzały, aby wygenerować model fizyczny.
  • Zwykle narzędzie do projektowania baz danych jest używane we wszystkich, ale bardzo małych bazach danych, aby pomóc w tym procesie.

Konkluzja:

  • Programiści znają domenę biznesową i problemową lepiej niż DBA, więc w dużej mierze wykonują większość początkowego projektu i, w zależności od doświadczenia dewelopera, taki projekt może być bardzo zbliżony do ostatecznego projektu.
  • Rolą DBA jest przede wszystkim zapewnienie NF, konwencji nazewnictwa, rozważań dotyczących wydajności, poprawienie oczywistych błędów i wreszcie wygenerowanie modelu fizycznego, a następnie skryptu specyficznego dla bazy danych i uruchomienie ich w celu utworzenia bazy danych.
  • Powiedziałbym, że to 80% pracy programisty i analizy wymagań oraz 20% pracy DBA.

AKTUALIZACJA:

Istnieją 3 rodzaje DBA:

  • programistów DBA, którzy znają modelowanie danych, są ekspertami SQL i potrafią pisać procedury składowane, zwykle są to dawni programiści;
  • produkcyjne bazy danych, które specjalizują się w instalowaniu, dostrajaniu wydajności, tworzeniu kopii zapasowych i przywracaniu itp.,
  • i DBA typu jack-of-all-trade, które pracowały nad tymi wszystkimi rzeczami i jako takie mogą zrobić najwięcej (jest ich bardzo niewiele).

Większość DBA to DBA produkcyjne, co jest dobre, ponieważ to oni odzyskują utracone bazy danych z uszkodzonych macierzy dyskowych w ciągu nocy. Ale nie uczestniczą aktywnie w procesie projektowania.

Tulains Córdova
źródło
2
Rozważa to, że masz DBA, który może to zrobić, gdzie ja i ja byłem wcześniej, nie było na to żadnego wsparcia.
Walfrat
2
@Walfrat Masz rację. Istnieją 3 rodzaje DBA: programistyczne DBA, które teraz modelują dane, są ekspertami SQL i potrafią pisać procedury składowane; produkcyjne DBA, które specjalizują się w instalowaniu, dostrajaniu wydajności, tworzeniu kopii zapasowych i przywracaniu itp. oraz DBA typu jack-of-all-trade, który pracował nad tymi wszystkimi rzeczami i taki może zrobić najwięcej. Niestety, większość DBA to tylko produkcyjne DBA.
Tulains Córdova
9
Zapomniałeś o „nie możemy sobie pozwolić na DBA”, w którym sklep jest tak mały, że jakiś programista utrzymuje z boku bazę danych. To też jest bardzo powszechne.
Sebastian Redl,
1
Co oznacza „NF”?
BЈовић
1
Normalna forma, patrz także wikipedia .
Friek
4

Zależy, do czego służy baza danych.

W wielu aplikacjach (aplikacjach internetowych lub nie) baza danych jest ściśle związana z tą aplikacją, ponieważ służy jako trwały magazyn dla niej. Następnie baza danych jest koncepcyjnie częścią aplikacji, więc została zaprojektowana razem (i zakładasz, że żaden inny program nie uzyskałby istotnego dostępu do tej bazy danych ani jej nie aktualizował). BTW, trwałość można osiągnąć za pomocą innych środków niż baza danych, np. Zwykłe pliki tekstowe, pliki binarne (w szczególności pliki indeksowane à GDBM ), repozytoria git (lub inne VCS), katalogi lub drzewa plików, surowe partycje dysku, dedykowany sprzęt (np. flash), zdalne systemy plików, punkty kontrolnetechniki. W przypadku baz danych zaprojektowanych dla jednej aplikacji i z jedną aplikacją powinieneś zadbać o typowe wzorce pobierania i aktualizacji oraz projektować schemat bazy danych (i indeksowanie!) Z myślą o nich.

W niektórych sytuacjach baza danych jest sama w sobie ważnym i niezależnym zasobem i jest z góry zaprojektowana do użytku przez kilka różnych aplikacji (a nawet przyszłych). Następnie powinien być zaprojektowany niezależnie (i znacznie ostrożniej).

W szczególności niektóre aplikacje internetowe to tylko interfejsy internetowe do istniejących baz danych.

W wielu przypadkach (pomyśl o niektórych wiki jako przykład) dane są ważniejsze i cenniejsze niż aplikacje, które ich używają. Możesz zadbać o to, jak sprawić, by był przyszłościowy i móc go łatwo ewoluować (np. Używając lub definiując tekstowe i wszechstronne - najlepiej standaryzowane i udokumentowane formaty do tworzenia kopii zapasowych i przywracania).

Zdałem sobie sprawę, że projekt (PROPER) bazy danych nie jest małym zadaniem ...

Czytaj także o NoSQL , baz danych zorientowanych dokumentów , baz danych klucz-wartość , zarządzanie wiedzą , reprezentacji wiedzy i rozumowania , ontologie , systemy eksperckie , reguły biznesowe podejście , ERP , CMS . Być może rozważ użycie REDIS , MongoDB itp.

Basile Starynkevitch
źródło
Niepewny. Nie zrobiłem tego Dzięki za ostatnie kilka linków!
the_endian
IMHO, linki w pierwszych akapitach też są warte przeczytania.
Basile Starynkevitch
Tak, nie jestem pewien, dlaczego, ale wygląda na to, że te rzeczy nie są „omówione” w tak dużym stopniu na kursach dla programistów, jak to tylko możliwe. Do tego stopnia, że ​​jestem pewien, że istnieją poważne hackjoby do baz danych w web dev land. Uczą cię, jak korzystać z DBMS, ale nie tyle o rzeczach, o których tu mówiliśmy.
the_endian
@TeeSee Zapewniam cię, że nie jest to tylko strona do tworzenia stron internetowych, na której trwają poważne prace hakerskie związane z bazami danych. Ale tak, wiele się dzieje, ogólnie z powodów biznesowych, takich jak utrzymanie początkowych kosztów na
niskim poziomie