데이터베이스 프로그래머는 무엇을합니까?


14

Oracle 프로그래머 등에 대해 읽을 때마다 혼란스러워합니다. 정확히 그들이 무엇을하는지 모르겠습니다.

내가 이해 한대로 응용 프로그램 프로그래머는 핵심 기능을 개발해야합니다. 이들이 사용하는 라이브러리는 GUI 개발이나 데이터베이스 연결에 도움이 될 수 있지만, 해당 응용 프로그램을 응용 프로그램으로 프로그래밍해야하고 모든 응용 프로그램을 다르게 만드는 기능 (일부 응용 프로그램은 다른 버전으로 조정될 수 있음).

이와 관련하여 데이터베이스 프로그래밍은 기본적으로 테이블을 작성하지 않습니까?이 테이블은 일반적으로 프론트 엔드 인 애플리케이션이 발행 한 SQL 문에 대한 응답으로 처리되지 않습니까? 그렇다면 테이블 생성이 그렇게 큰 일입니까?

답변:


18

데이터베이스 프로그래머가 어떤 일을하는지 정말로 이해하기 위해서는 직접 가야합니다. 다른 방법으로 시도해 보도록하겠습니다.

모르는 사람들 에게는 이상적인 세계 응용 프로그램 프로그래머가 그렇게 많이하지 않는 것처럼 보일 수 있습니다 . 비즈니스 분석가가 작성한 요구 사항과 프로세스를 가져 와서 프로그래머가 입찰하는 코드로 변환합니다.

물론 경험이 풍부한 프로그래밍을 가진 사람이라면 이것이 이것이 작동하는 방식이 아님을 알 것입니다. 요구 사항은 요구 사항이 응용 프로그램의 동작을 세부 사항까지 명시하지 않는다는 사실을 무시하고 많은 합병증이 있습니다.

  • 프로그래머는 응용 프로그램의 구조를 결정해야합니다
  • 요구 사항을 컴퓨터가 이해하는 것으로 바꾸는 것은 종종 사소한 일이 아닙니다.
  • 프로그래머는 다음과 같은 성능 영향을 알고 있어야합니다.
  • 프로그래머가 선택한 플랫폼을 사용하여 경험을 쌓으면서 더 능숙 해져 고품질 코드를 더 빠른 속도로 제공합니다.

(물론 이것은 상당히 축소 된 목록입니다. 데이터베이스 개발과 비슷한 점을 찾으려고 노력하고 있습니다)

데이터베이스 개발은 거의 똑같습니다. 병이 들었다는 사실은 알기 쉽지만, 일단 더 관여하게되면 데이터베이스 개발의 특정 합병증을 알게됩니다.

  • 데이터베이스 구성 방법을 결정합니다.
  • 요구 사항에서 번역하기 위해보다 복잡한 쿼리가 사소한 경우가 종종 있습니다
  • 데이터베이스 개발자는 데이터베이스 성능에 관심을 가져야합니다.
  • 또한 데이터 무결성과 가용성을 유지해야합니다.
  • 또한 개발자와 마찬가지로 데이터베이스 프로그래머도 경험이 많을수록 자신이하는 모든 일에 능숙 해집니다.

응용 프로그램 개발이 숨겨진 함정 (스레딩 문제 등)으로 가득 차있는 것처럼 데이터베이스 개발도 마찬가지이며 이러한 문제로 인한 파울로 인한 결과는 매우 심각합니다 (예 : 데이터베이스를 사용하는 모든 응용 프로그램의 데이터 손실 또는 잠재적 다운 타임) .

프로그래머가 아무 것도 없다고 생각하게 만드는 것은 ( "프로그래머는 이것을 할 수 없습니까?") 역할간에 겹치는 부분이 많으며 비슷한 기술이 필요하다는 것입니다. 훌륭한 개발자가 될 수있는 사람이라면 누구나 시간과 경험이있는 훌륭한 데이터베이스 프로그래머가 될 수 있지만, 숙련 된 데이터베이스 전문가의 가치를 과소 평가해서는 안됩니다.


답장을 보내 주셔서 감사합니다. 내가 이것을 요청한 이유는 "응용 프로그램 프로그래머"로서 msaccess에 작은 데이터베이스를 설계하여 내 프로젝트를 위해 무언가를 수행했으며 많은 작업이 아닌 프로그래머는 물론 dbase 일 것입니다. t "쉬운". 그러나 나는 여전히 이것을 이해하는 데 필요한 관점이 부족합니다. 내 말은, 한 dbase가 다른 dbase와 얼마나 다를 수 있습니까? 응용 프로그램 개발자가 파일 관리 코드를 "쓰기"하지만 라이브러리를 사용하는 것처럼 dbase 디자인에 사용할 수있는 템플릿 / 라이브러리가 있습니까? 아니면 실제 dbase 관리자의 dbase 프로그래밍입니까?

전형적인 프로그래머도 그렇지 않습니까? 나는 응용 프로그램 개발자가 기차를 운전하는 사람이기 때문에 데이터베이스 프로그래머에 대한 사용을 관찰하기 위해 아직 너무 작은 조직에서 일한 것 같습니다. 그는 자신이 원하는 것을 알고 보통 스스로 디자인합니다.
Brian

1
내 경험상 전문가 DBA 이 필요한 특정 비즈니스 조치가 있습니다. 내가 들었던 가장 최근의 일은 코카콜라와 미닛 메이드 사이의 합병이었다. 그들의 데이터베이스 (그리고 많은 것들)는 병합되어야했고 Minute Maid 's는 Coca-Cola가 그들과 이것, 저것, 그리고 다른 것들과 같은 방식으로 설계되지 않았습니다. 그들은 6 개월 동안이 합병을 계획하고 테스트하여 밤새도록 합류했습니다. 소규모 회사에서는 독립형 DBA를 반드시 갖추어야하는 것은 아니지만 대규모 회사에서는 고객 만족을 위해 반드시 팀이 필요합니다.
Mike S

즉, 하나 이상의 독립 실행 형 DBA를 보유한 소규모 기업 (<50 명)에서는 응용 프로그램 개발자가 생각하는 한 매우 훌륭합니다. 그와 전담 IT 직원은 컴퓨터를 수리하지만 완전히 다른 이야기입니다.
Mike S

2
@ 0A0D, 그리고 테이블에 10 억 개 이상의 레코드가 있고 전체 혼란이 비명을 느리게 진행될 때마다 6 년 후까지는 데이터베이스 전문가를 고용하여 응용 프로그램 프로그래머가 설계하지 않아야하는 혼란을 해결합니다. 데이터베이스는 리팩토링하기가 매우 어렵고 처음부터 성능을 고려하여 설계해야합니다. 응용 프로그램 프로그래머가 거의 파악하지 못하는 것 같습니다. 이들은 또한 사용자 인터페이스가 데이터베이스에 필요로하지 않는 것을 기반으로 설계하는 경향이 있으므로 내부 제어 및 감사 및 데이터 무결성 제약 조건 등을 생략합니다.
HLGEM

12

데이터베이스 프로그래머는 많은 일을합니다. 먼저 예상되는 레코드 수로 올바르게 수행되도록 데이터베이스 구조를 설계합니다. 수천 개의 레코드에 대해 제대로 작동하는 디자인 구조는 수백만 개의 레코드에서 데이터베이스를 사용할 수 없게 만들 수 있습니다. 또한 데이터가 시간이 지남에 따라 데이터의 무결성을 유지하고 무단 변경이나 도난으로부터 데이터가 안전하게 보호되도록해야합니다. 정규화와 비정규 화시기 및 이유를 완전히 이해해야합니다. 그들은 성능과 데이터 무결성을 보장하는 방법을 이해해야합니다. 보안과 데이터 도난 또는 악의적 인 변경을 방지하는 방법을 이해해야합니다.

쿼리 성능을 조정합니다. 몇 분이 걸리는 쿼리를 밀리 초로 변경했습니다. 24 시간 이상 걸리는 프로세스를 30 분 미만으로 변경했습니다. 인서트 속도와 선택 속도의 균형을 유지하는 인덱싱 구조를 설계하고 유지합니다.

복잡한 쿼리, 특히보고 쿼리를 작성합니다. 요구 사항의 복잡성으로 인해 1000 줄 이상의 쿼리를 개인적으로 작성했습니다. 그들은 여전히 ​​빨리 달려야했다.

이들은 데이터웨어 하우스 및 해당 ETL 프로세스를 작성하여이를 지원합니다. 종종 그들은 다른 소스에서 데이터를 가져 오기 위해 프로세스를 작성해야하며 일부 클라이언트 데이터베이스에서 해당 필드를 필드로 맵핑하는 방법을 알아 내야하며 데이터 유형, 데이터 크기, 필수 필드, 조회 값, 기타

이들은 이미 보유한 100,000,000 개의 레코드를 손상시키지 않고 데이터베이스 사용을 완전히 중단하지 않고 데이터베이스 요구 사항이 변경 될 때 리팩토링하는 방법을 결정해야합니다. 큰 데이터베이스에는 수천 개의 테이블과 저장된 proc 및 사용자 정의 함수가 포함될 수 있습니다. 그러한 구조를 이해하려면 변화에 의해 어떤 영향을 받는지 이해하는 데 시간과 기술이 필요합니다.

규제 및 복구 이유로 데이터를 감사하는 방법을 설계합니다. 그런 다음 해당 감사 테이블에서 데이터를 복구하는 방법을 설계합니다. 데이터 관련 문제를 조사하여 가져 오기 프로세스의 버그, 다른 사람이 제공 한 잘못된 파일 또는 응용 프로그램의 잘못된 삽입 / 업데이트 또는 무단 액세스로 인한 문제인지 확인합니다. 응용 프로그램 프로그래머가 해커가 공격 할 수있는 구멍을 뚫었을 때 나쁜 데이터를 수정하는 방법을 찾습니다.

그들은 종종 한 시스템에서 새로운 시스템으로의 데이터 변환에 관여합니다. 때때로 이것은 하나의 COTS 제품에서 회사가 방금 구입 한 새로운 제품으로 데이터를 이동시키는 것을 포함합니다. 앞에서 설명한 수입품과 마찬가지로 이들은 복잡한 프로세스이므로 계획 및 실행에 몇 개월이 걸리고 광범위한 테스트가 필요합니다. 가져 오기와 달리 데이터베이스 프로그래머는 이종 데이터 구조를 제어 할 수 없습니다.


6

나는 90 년대 후반에 24 시간 웨이퍼 팹의 제조 데이터에 대한 데이터베이스 프로그래머로 인턴했다. 필자의 업무가 얼마나 전형적인 지 잘 모르겠지만 필드 인코딩이나 스키마를 변경해야 할 때가 가장 큰 부분은 변경 사항이 프로덕션에 완벽하게 적용되도록해야했습니다. 기본적으로 이는 고객에게 편리한 시간에 클라이언트 응용 프로그램을 업그레이드하라고 말하고 새로운 변경 사항이 즉시 표시 될 것으로 예상했습니다.

그것은 내가 예상했던 것보다 훨씬 더 복잡했습니다. 변환 스크립트와 클라이언트 소프트웨어는 철저히 테스트해야했습니다. 모든 사람이 전환 될 때까지 의미 상 동일하지만 호환되지 않는 두 데이터 집합을 동기화 상태로 유지해야하는 경우가 종종있었습니다. 때로는 원활하게 전환하기 위해 신중하게 계획된 여러 단계로 전환해야했습니다. 본질적으로 즉각적으로 일어난 전환에 대해 몇 주 동안 준비하는 것은 드문 일이 아닙니다.

데이터베이스 프로그래머가 자신의 일을 제대로하고 있다면, 그의 일이 매우 쉬운 것처럼 관찰자들에게 보일 것이다. 많은 사람들이 자신이하는 일을 실제로 모른다는 것에 놀라지 않습니다.


2

이것은 다소 간단합니다. MVC 패턴에 대해 들었다면 컨트롤러와 모델의 차이점을 알아야합니다. 예를 들어 ERP를 작성하는 경우 컨트롤러에서 모델에 "retrieveCashFlow"라고 말하고 모델이 데이터베이스의 저장된 프로그램을 호출한다고 상상해보십시오. 이 저장된 프로그램은 모든 조인, 필터링, 순서 등을 처리하여 처리 된 데이터를 다시 얻습니다. 컨트롤러에서 사물을 함께 숨겨야합니다.

저장 프로 시저에 대해 의문이있는 경우이를 확인하십시오. 왜 저장 프로 시저를 사용합니까?

간단히 말해 : 데이터베이스 개발자는 MVC에서 M을 관리하기 위해 응용 프로그램에 대한 저장된 프로그램 (프로 시저 및 함수)을 작성합니다 (또는 mvc를 사용하지 않는 경우 비즈니스 논리).


2

오라클은 데이터베이스 일뿐 아니라 양식 및 보고서 디자이너를 포함한 완벽한 프로그래밍 환경입니다. Oracle 프로그래머는 완전한 사용자 응용 프로그램을 프로그래밍합니다. 언급 한 데이터베이스 코딩은 종종 전문 데이터베이스 관리자 (DBA)가 수행합니다.

Sybase 필자는 비슷한 프로그래밍 환경을 가진 또 다른 시스템이라고 생각합니다.

다른 데이터베이스는 스스로 보고서를 정의하고 실행할 수 있도록 "단지"로 제한 할 수 있지만, 다른 데이터베이스는 어떤 형태 나 보고서 디자인 / 실행 기능도 제공하지 않을 수 있습니다.


1
"오라클은 단순한 데이터베이스가 아니라 완전한 프로그래밍 환경입니다. 다른 데이터베이스는"정의 "로 정의하고 실행할 수 있도록 제한 할 수 있습니다." 이제 말이됩니다.
토마스

SQL Server는 동일합니다. 저장 프로 시저 외에도 SSIS 패키지는 시각적 프로그래밍, 다른 기존 코드 호출, vb.net 또는 c # .net 프로그램 작성 등을 모두 IDE에 포함시킬 수 있습니다. SSRS를 사용하지 않았지만 비슷한 것으로 생각됩니다. 많은 톤의 프로그래밍이 있으며 데이터베이스 프로그래머는 다양한 도구와 언어 및 프로세스를 알아야합니다.
thursdaysgeek

2

데이터베이스 개발자가 다음 중 하나 이상을 담당한다고 말하고 싶습니다.

  • 디자인, 여기에는 테이블 만들기 (또는 관계 정의)가 포함됩니다.
  • 최적화, 적절한 인덱스 설정, 키 선택, 올바른 데이터 유형 선택
  • 쿼리에 사용할 유용한 함수를 작성하는 함수
  • 데이터베이스 계층에 밀접하게 연결된 응용 프로그램 논리를 작성하는 절차
  • 이벤트에 응답하기위한 트리거 기능 생성
  • 상기 사양을 작성하고 있습니다.

해당 RDBMS에 따라 다음과 같은 작업이 포함될 수 있습니다.

  • 보고서 및 양식 작성
  • 데이터 가져 오기 / 내보내기 플로우 작성

이 책임 목록 을 살펴보십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.