웹 개발에서 데이터베이스를 누가 디자인합니까? [닫은]


10

웹 개발과 관련하여 누가 데이터베이스를 설계합니까? 백엔드 웹 개발과 서버 측 처리, 데이터 모델링 등을 연결하는 수많은 정보에도 불구하고,이 방정식의 데이터베이스 설계 측면은 신비하게 보이지 않는 것 같습니다.

누가 실제 데이터베이스를 설정하는지에 대해 이야기하는 것이 아니라 누가 데이터베이스의 논리적 모델을 설계하는지, 사용자 스토리 인터뷰를 수행하여 필요한 필드, 필드 사양 등을 알려줍니다. .

나는 데이터베이스 의 ( PROPER ) 디자인이 작은 작업이 아니며 ( 672 페이저를 읽고 있음 ) 쉽게 전체 직업이 될 수 있음을 깨달았습니다 . 그러나 인터넷을 위아래로 검색하면 웹 개발자와 관련하여 누가이 작업을 처리해야하는지에 대한 결과가 놀라 울 정도로 적었습니다.


2
조직과 조직이 사용하는 부서와 구조에 매우 의존적입니다. 제 경험상 일반적으로 백엔드 개발자 / 솔루션 아키텍트이며 DBA 또는 특정 데이터베이스 개발자와 관련하여 데이터베이스 부서가있는 경우입니다.
Allan S. Hansen

what those field specifications are, 프로젝트에 사양이있는 경우 모델을 식별 할 수 있어야합니다.
Walfrat

1
요즘에는 어떤 프레임 워크를 사용하든 데이터베이스 디자인이 결정됩니다.
Pieter B

답변:


17

귀하의 질문은 웹 응용 프로그램뿐만 아니라 데이터베이스 백엔드를 사용하는 모든 종류의 응용 프로그램과 관련이 있습니다.

내 경험에

  • 데이터베이스 디자인은 개발자와 DBA의 결합 된 작업입니다.
  • 개발자는 거칠거나 종종 매우 우수한 데이터베이스 디자인을 만듭니다. 그것은 모두 프로그래머의 경험에 달려 있습니다.
  • 종종 개발자는 개발 데이터베이스에서 테이블을 작성하고 개념 모델은 리버스 엔지니어링됩니다.
  • 개념적 ER 다이어그램은 종종 다른 팀 구성원, 종종 고객과 논의됩니다. 이 단계에서 명백한 개념적 오류가 감지되고 희망적으로 파악되고 수정됩니다.
  • DBA의 작업은 이러한 설계를 검토하고 정상적인 형태의 위반을 감지하도록 미세 조정하는 것입니다.
  • 또한 DBA는 테이블 및 열의 명명 규칙을 시행합니다.
  • 또한 DBA는 가능한 성능 병목 현상을 예상하고 나중에 적절한 인덱스를 생성하기 위해 데이터를 쿼리하는 방법을 이해하려고합니다.
  • 개발자 / 앱 디자이너와 DBA 간의 ​​개정 / 확인 / 고정주기는 실제 모델을 생성 할 수있을 정도로 모델이 완성 될 때까지 여러 번 반복됩니다.
  • 일반적으로 데이터베이스 설계 도구는이 프로세스를 돕기 위해 아주 작은 데이터베이스를 제외한 모든 데이터베이스에서 사용됩니다.

결론 :

  • 개발자는 DBA보다 비즈니스 및 문제 영역을 더 잘 알고 있으므로 초기 설계의 대부분을 수행하므로 개발자의 경험에 따라 이러한 설계는 최종 설계에 매우 근접 할 수 있습니다.
  • DBA의 역할은 주로 NF, 명명 규칙, 성능 고려 사항을 확인하여 명백한 오류를 수정하고 최종적으로 실제 모델을 생성 한 다음 데이터베이스 별 스크립트를 생성하고이를 실행하여 데이터베이스를 생성하는 것입니다.
  • 80 % 개발자 및 요구 사항 분석 작업과 20 % DBA 작업이라고합니다.

최신 정보:

3 가지 종류의 DBA가 있습니다.

  • 데이터 모델링을 알고 있고 SQL 전문가이며 저장 프로 시저를 작성할 수있는 개발 DBA는 대개 이전 개발자입니다.
  • 설치, 성능 조정, 백업 및 복원 등을 전문으로하는 프로덕션 DBA
  • 그리고 모든 일을 해왔으며 가장 많은 일을 할 수있는 모든 거래 (trade of all-trades) DBA가 있습니다.

대부분의 DBA는 프로덕션 DBA이며, 밤중에 실패한 디스크 어레이에서 손실 된 데이터베이스를 복구하는 사람이기 때문에 좋은 일입니다. 그러나 그들은 디자인 프로세스에 적극적으로 참여하지 않습니다.


2
이것은 당신이 그것을 할 수있는 DBA를 가지고 있다고 생각하고 있습니다.
Walfrat

2
@Walfrat 당신이 맞아요. 3 가지 종류의 DBA가 있습니다. 현재 데이터 모델링이자 SQL 전문가이며 저장 프로 시저를 작성할 수있는 개발 DBA; 설치, 성능 조정, 백업 및 복원 등을 전문으로하는 프로덕션 DBA 및 이러한 모든 작업을 수행하는 데 가장 효과적인 DBA는 대부분 할 수 있습니다. 안타깝게도 대부분의 DBA는 프로덕션 DBA 일뿐입니다.
Tulains Córdova

9
상점이 너무 작아서 일부 개발자가 데이터베이스를 측면에서 유지 관리하는 "We-can't-afford-a-DBA"를 잊어 버렸습니다. 그것은 매우 일반적입니다.
Sebastian Redl

1
"NF"는 무엇을 의미합니까?
BЈовић

1
일반 양식, wikipedia 도 참조하십시오 .
Friek

4

사용되는 데이터베이스에 따라 다릅니다.

많은 응용 프로그램 (웹 응용 프로그램이든 아니든)에서 데이터베이스는 데이터베이스의 영구 저장소 역할을하기 때문에 해당 응용 프로그램과 밀접하게 연결되어 있습니다. 그런 다음 데이터베이스는 개념적으로 응용 프로그램의 일부이므로 함께 설계됩니다 (그리고 다른 프로그램이 해당 데이터베이스에 크게 액세스하거나 업데이트 하지 않을 것으로 가정 ). BTW, 지속성 은 데이터베이스 이외의 다른 수단, 예를 들어 일반 텍스트 파일, 이진 파일 (특히 색인화 된 파일 – GDBM ), git (또는 다른 VCS) 저장소, 디렉토리 또는 파일 트리, 원시 디스크 파티션, 전용 하드웨어 (예 : 플래시), 원격 파일 시스템, 검사 점기법. 하나의 응용 프로그램 용으로 설계된 데이터베이스의 경우 공통 검색 및 업데이트 패턴을 염두에두고 데이터베이스 스키마 (및 인덱싱!)를 염두에두고 설계해야합니다.

어떤 상황에서는 데이터베이스 자체가 주요한 독립적 자산이며 여러 다른 응용 프로그램 (및 미래의 응용 프로그램)에서 사용되도록 우선 순위가 지정됩니다 . 그런 다음 독립적으로 (그리고 훨씬 더 신중하게) 설계해야합니다.

특히 일부 웹 앱은 기존 데이터베이스에 대한 웹 인터페이스 일뿐입니다.

많은 경우 (예를 들어 일부 위키를 생각하면) 데이터는이를 사용하는 애플리케이션보다 중요하고 더 중요합니다. 미래의 증거를 만드는 방법에 관심이 있고 쉽게 진화 할 수 있습니다 (예 : 백업 및 복원을 위해 텍스트 및 다목적, 바람직하게 표준화되고 문서화 된 형식을 사용 또는 정의).

데이터베이스의 (적절한) 디자인은 작은 작업이 아니라는 것을 깨달았습니다 ...

NoSQL , 문서 지향 데이터베이스 , 키-값 데이터베이스 , 지식 관리 , 지식 표현 및 추론 , 온톨로지 , 전문가 시스템 , 비즈니스 규칙 접근 , ERP , CMS에 대해서도 읽어보십시오 . 아마도 REDIS , MongoDB 등을 사용하는 것이 좋습니다 .


확실하지 않다. 나는 그것을하지 않았다. 마지막 몇 개의 링크에 감사드립니다!
the_endian

IMHO, 첫 번째 단락의 링크도 읽을 가치가 있습니다.
Basile Starynkevitch

그래, 왜 그런지 잘 모르겠지만 개발자 과정에서 가능한 한 많이 다루지 않은 것 같습니다. 웹 개발 사이트에서 심각한 데이터베이스 hackjob이 진행되고 있다고 확신합니다. 그들은 DBMS 사용법을 가르쳐 주지만 여기서 이야기 한 내용에 대해서는별로 설명하지 않습니다.
the_endian

@TeeSee 데이터베이스를 사용하여 심각한 해킹 작업이 진행되는 웹 개발 사이트가 아닙니다. 그러나 그렇습니다. 일반적으로 초기 비용 절감 (유지 보수 및 기술적 부채는 잊어 버리는 것)과 같은 비즈니스상의 이유로 많은 일이 발생합니다.
gabe3886
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.