숙련 된 프로그래머가 데이터베이스 쿼리를 알아야합니까? [닫은]


35

쿼리 작성 및 데이터베이스 디자인 전문가 인 프로그래머가 너무 많습니다.

이것이 전문 프로그래머 또는 소프트웨어 엔지니어가되기위한 핵심 요구 사항이어야합니까?

이 유사성의 많은 방법 쿼리에 있고 코드가 개발되고 있지만, 내 개인적인 의견은, 쿼리는 다른 것 같다 구조 보다는 코드 인해 서로 다른 접근 방식을 동시에 마스터 힘들 수 있습니다.


2
"구조"는 무엇을 의미합니까? 의미론에 대해 이야기하는 경우, 새로운 의미론을 파악하는 것보다 " 전문가 " 에게는 문제가되지 않습니다 . 정의에 의해. OTOH는 소수의 개발자 만이 데이터베이스와 쿼리 언어에 노출되어 있으며 나머지는 전혀 신경 쓰지 않습니다.
SK-logic

3
"이것은 쿼리 작성 및 데이터베이스 디자인 전문가이기도 한 프로그래머가 너무 많다"고 잘못 가정 한 것 같습니다. DBA! = SE와 같은 전문가는 상대적으로 소수입니다.
Ashley

1
실제로 데이터베이스 쿼리를 작성하는 것이 얼마나 어렵습니까?
Captain Sensible

@CaptainShakespeare, CRUD 작업을 통과하면 실제로 어려울 수 있습니다. 언젠가 복잡한보고를하고 있습니다. 그런 다음 성능 조정 쿼리를 살펴보십시오.
HLGEM

답변:


69

데이터베이스 쿼리 작성이 핵심 요구 사항이어야하는지 여부는 작업에 따라 다르지만 관계형 데이터베이스는 현재 기술에서 어디에나 존재합니다.

따라서 데이터베이스 쿼리 작성 방법을 모르는 프로그래머를 만났다면 다음 두 가지 중 하나가 필요합니다.

  1. 그들은 일반적으로 경험이 없습니다.
  2. 이들은 다른 분야 (예 : 임베디드 시스템)에 고도로 전문화되어 있으며이를 배울 필요가 없습니다.

데이터베이스 쿼리는 기본 프로그래밍 언어와 근본적으로 다릅니다. 대수적이며 관계형 데이터에서 작동하도록 의도 된 반면 C # 또는 Java는 필수적이며 디스크, 메모리, 사용자 입력 등에서 작동합니다.보다 대수적인 LISP 또는 Haskell과 같은 기능적 언어조차 관계형 데이터에 덜 지향적입니다.

편집 : 나와 다른 사람들의 의견에서 지적했듯이 숙련 된 개발자가 데이터베이스 쿼리를 잘 모르는 몇 가지 정당한 이유가 있습니다.

  • 그들의 팀은 ORM / NoSQL을 사용했습니다.
  • 그들의 팀에는 DB 프로그래머가있었습니다
  • 응용 프로그램의 복잡성은 비즈니스 논리에 있었고 DB 쿼리는 사소했습니다.
  • 그들의 팀은 일부 프로그래머가 쿼리를 작성하지 않도록 작업을 배분했습니다.

이 경고는 유효하지만 숙련 된 개발자가 데이터베이스 쿼리를 알지 못하는 이유를 설득력이 없습니다. 고도로 전문화되지 않은 한 프로그래머는 관계형 데이터베이스에 익숙해야합니다.

요약하면, 대부분의 숙련 된 개발자는 데이터베이스 쿼리를 알아야합니다 .


1
따라서 누군가 데이터베이스를 사용하는 사소한 프로젝트를 수행했다면 쿼리에 대해 잘 알고 있어야합니다.
Shamim Hafiz 2016 년

3
@Shamim, 나는이 사람이 중학교 나 엔트리 레벨이 아니라면, 그 사람은 쿼리에 대해 약간의 경험이있을 것으로 기대합니다. 아마도이 사람은 몇 년의 경험을 가지고 있으며 고도로 전문화 된 팀에 숨겨져 있습니까?
maple_shaft

12
@Shamim 나는 아마 그렇게 기대할 것 입니다 . 그들은 여전히 좋은 프로그래머 있습니다. 이와 같은 질문은 많은 경고가 있기 때문에 대답하기가 매우 어렵습니다. 아마도 팀에 DB 프로그래머가 있었을 것입니다. 아마도 응용 프로그램의 중요하지 않은 부분은 비즈니스 논리에 있었고 데이터베이스 쿼리는 사소한 것이 었습니다. 아마도 그들은 프로그래머가 쿼리에서 작동하지 않도록 작업을 할당했을 것입니다. 등
마태 복음 Rodatus

4
저의 개발팀은 프로젝트의 일환으로 PL / SQL 프로그래머를 전담했습니다. 따라서 .Net 프로그래머는 간단한 쿼리를 수행 할 수 있지만이를 검토하고보다 복잡한 쿼리를 개발할 수 있습니다. 또한 ORM (및 NOSQL)이 확산되면서 비 SQL 개발자가 복잡한 쿼리를 알아야한다고 생각하는 이유는 무엇입니까?
softveda 2016 년

2
@ Matthew Rodatus : 쿼리를 관리하는 라이브러리가있는 곳에서 일했기 때문에 간단한 SQL을 이해하지 않고 이론적으로 작업 할 수 있습니다. 모든 개발자가 실제로 유능하다고 생각합니다.
David Thornley

23

모든 소프트웨어 엔지니어는 데이터베이스에 대한 기본적인 이해와 SQL을 사용하여 데이터를 저장 및 검색하는 방법을 알고 있어야합니다. , 저장 프로 시저 및 트리거).

모든 소프트웨어 엔지니어가 전문가가 될 필요는 없으며 필요한 전문 지식 수준은 실제로 초점을 맞추는 소프트웨어 유형에 따라 다릅니다. 임베디드 소프트웨어, 하드웨어 드라이버 및 운영 체제는 SQL을 거의 사용하지 않지만 애플리케이션 소프트웨어 (웹 또는 데스크탑 또는 서비스 / 데몬 기반)는 항상 데이터베이스를 사용합니다.


1
다행히 오늘날에는 RDBMS없이 응용 프로그램을 수행하는 것이 좋습니다. 대부분의 작업에는 필요하지 않거나 관계형 모델에 적절하게 매핑 할 수 없습니다. 다양한 비 관계형 스토리지 옵션이 있습니다.
SK-logic

8
이것은 내 의견도 요약합니다. 전문가? 아냐 지식? 예.
Wayne Molina

2
@ SK-logic, 어떤 종류의 옵션을 관계형 데이터베이스와 관련이 없다고 생각하십니까? 데이터웨어 하우징은 분석이 트랜잭션 시스템에 유용하기에는 너무 전문적입니다. 그리고 OODBMS의 모든 문제를 시작하지 마십시오.
maple_shaft

1
@maple_shaft에는 전문화 된 도메인 지향 스토리지 솔루션이 많이 있습니다. RDBMS는 일반적인 시도를하는데 실패합니다. 어떤 경우에는 고대의 계층 적 DBMS조차 관계형보다 훨씬 낫습니다.
SK-logic

6
모든 데스크탑 소프트웨어가 데이터베이스를 사용하는 것은 아니므로 항상 발생한다고 말할 때주의하십시오.
Adam Lear

18

데이터베이스 지식이 필요하지 않은 일부 전문 분야 (예 : 임베디드 시스템)가 있습니다. 그러나 대부분의 비즈니스 응용 프로그램은 어떤 종류의 데이터베이스를 사용하며 제대로 사용하는 방법을 완전히 이해하지 못하면 수정하기가 매우 어려운 성능 혼란을 만들 수 있습니다. 리팩토링 데이터베이스는 복잡하고 어려운 프로세스 일 수 있으며, 많은 곳에서 이러한 어려움으로 인해 구조적 문제를 해결하지 않고 자신을 더 깊이 파고 들게됩니다. 데이터베이스 지식이 있다면 시간이 지남에 따라 디자인이 훨씬 쉽고 훨씬 잘 작동 할 수 있습니다.

ORM은 데이터베이스 지식을 얻는 대신 사용할 수 없습니다. 데이터베이스 쿼리 및 디자인의 기본 사항을 모르는 상태에서 데이터베이스를 사용하는 사람은 성능이 저하되고 잘못 설계된 데이터베이스를 보유하게되어 응용 프로그램의 장거리 기능에 영향을 미쳐로드를 처리 할 수 ​​있습니다. 자신이하고있는 일을 아는 사람의 손에 든 ORM은 괜찮습니다. 데이터베이스에 대해 배울 필요가없는 사람들은 보통 재난입니다.

데이터베이스 백엔드가있는 프로젝트가있는 경우 데이터베이스 전문가는 내가 고용 한 두 번째 개발자 (최초 애플리케이션 개발자 이후)가됩니다. 데이터베이스는 일반적으로 무시할만한 것이 아니며, 20 년 후에도 데이터가 여전히 같은 형식에 가깝게 유지 될 것이며, 초기 단계에서 전문 지식을 갖추게됩니다.

데이터베이스에 100,000,000 개의 레코드가 있고 느리게 실행될 때까지 이러한 직원을 고용하지 않기 때문에 프로젝트는 종종 문제를 일으 킵니다. 또는 도구가 설계 능력이 부족하지 않다고 잘못 판단한 경우가 있습니다 (정확하게 디자인하면 SQL Server가 느려지지 않음).


4
ORM이 존재한다고해서 SQL (또는 사용중인 db 유형의 기본 요소)을 알아야 할 필요성을 대체하지는 않습니다.
RHSeeger

4
+1 그리고 나는 당신에게 100을 더 줄 수 있으면 좋겠다! 나는 corellation! = 인과 관계라는 것을 알고 있지만, 내가 함께 일한 가장 효과적인 응용 프로그램 개발자가 표준 SELECT 쿼리를 작성하는 방법을 철저히 이해했음을 알 수 있습니다. 나는 좋은 개발자에게 데이터 모델과 데이터에 대한 "질문"을 전달할 수 있어야하고, 그 사람은 결국 내 질문에 "답변하는"쿼리를 작성할 수 있어야한다.
maple_shaft

1
+1, 완전히 동의합니다. 나는 '우리는 ORM을 사용한다'또는 '전용 프로그래머가있다'는 설명을 사지 않는다. 누군가가 실제로 경험 이 있다면 , 한 시점에서 DB 개발자의 역할을 수행했을 것입니다. 그게 무슨 경험입니다.
GrandmasterB

15

정치적으로 정답 : 그것은 달려 있습니다. 개발자가 관계형 데이터베이스를 사용하지 않는 경우 (그리고 오늘날 NoSQL 응용 프로그램의 시대에 실제로는 가능할 것임) SQL 지식은 아무 가치가 없습니다.

둘째, DBA 또는 풀 타임 쿼리 작성기 (제목이 무엇이든)가 있으면 이해도 덜 중요합니다.

개발자가 가장 중요한 거래가되어야하고 관계형 데이터베이스 (예 : 구식 웹 응용 프로그램 또는 기존 데이터베이스와 연결)를 사용하기위한 프로젝트에 요구 사항이있는 경우에만 매우 중요합니다.

내 개인적인 의견 : 아니요. 숙련 된 소프트웨어 개발자는 필요할 때 '기본적으로'가 아니라 새로운 기술 (예 : SQL)을 배울 수 있어야합니다. 유연성과 배우고 이해하는 능력은 훌륭한 개발자와 좋은 개발자를 구별하는 것입니다. '황금 망치'규칙도 적용됩니다. 광범위한 SQL 지식을 보유한 개발자가있는 경우이 개발자가 자신이 가장 잘 알고있는 도구 인 관계형 데이터베이스를 꺼내어 모든 문제를 해결하려고 시도 할 가능성이 있지만 최고의 솔루션이 되겠습니다. 물론 이것은 NoSQL 지지자에게도 적용됩니다.;).

숙련 된 프로그래머가 알아야 할 올바른 작업에 적합한 도구를 선택하는 것입니다.


NoSQL 데이터베이스는 관계형 데이터베이스보다 더 많은 데이터를 처리하지 않습니다. 어디에서 들었는지 모르겠지만 뻔뻔스럽고 위험 합니다.
Aaronaught

@Aaronaught-편집 : 내 조기 가정의 고마워 :).
Cthulhu

7

컴퓨터 프로그래밍에 대한이 위키 백과 소개를 확인하십시오.

컴퓨터 프로그래밍 (종종 프로그래밍 또는 코딩으로 단축 됨)은 컴퓨터 프로그램의 소스 코드를 디자인, 작성, 테스트, 디버깅 / 문제 해결 및 유지 관리하는 프로세스입니다. 이 소스 코드는 프로그래밍 언어로 작성되었습니다. 프로그래밍의 목적은 원하는 특정 동작을 나타내는 프로그램을 만드는 것입니다.

데이터베이스 쿼리에는 자체 언어가 있으며 설계, 테스트, 디버깅 및 관리가 가능합니다. 데이터베이스 쿼리의 목적은 필요한 정보를 원하는 방식으로 얻을 수 있도록하는 것입니다.

그래서 나는 그것이 프로그래밍이라고 생각합니다.


7

엔터프라이즈 및 비즈니스 애플리케이션 (특히 RDBMS를 사용하는 프로젝트)에 대한 배경 지식이있는 우수한 소프트웨어 엔지니어는 관계형 데이터베이스 쿼리를 표준 형식으로 작성하는 데 대한 전문 지식이 있어야합니다. 또한 복잡한 스키마를 이해하고 최소한 중간 정도의 복잡한 스키마 디자인을 제안 할 수 있어야합니다.

매우 고급 또는 복잡한 스키마 설계는 데이터 모델러 또는 기능 설계자의 영역이어야합니다.

그렇다고 데이터베이스 프로그래머가 자리를 차지하지는 않습니다. 단일 데이터베이스 벤더 (예 : Oracle, MySQL, SQLServer 등)의 고유 한 툴 및 오퍼링에 중점을 둔 복잡한 저장 프로 시저, 복잡하고 효율적인 쿼리 및 데이터베이스 계층 소프트웨어 설계 및 아키텍처는 가능한 전문 소프트웨어에 맡겨야합니다. 고도로 전문화 된 복잡한 오퍼링 경험이있는 엔지니어.

그러나 필자의 의견으로는 대부분의 비즈니스 및 엔터프라이즈 시스템은 데이터 모델러 및 전문 데이터베이스 프로그래머의 필요성을 정당화하지는 않지만 이러한 사람들이 테이블에 가져온 지식과 전문 지식의 혜택을 받기 전에 그러한 프로젝트를 수행했습니다.


2
-1 : "좋은"소프트웨어 엔지니어가 관계형 데이터베이스 쿼리 의 전문가 여야한다는 데는 동의하지 않습니다 .
John Saunders

3
훌륭한 엔터프라이즈 또는 비즈니스 애플리케이션 소프트웨어 엔지니어 (임베디드 시스템과는 달리 ...)라고 말하고이 사람이 STANDARD 관계형 데이터베이스 쿼리 전문가 (팬시 팬츠 공급 업체 제외)라고 말한 경우에도 여전히 동의하지 않습니까? 분석 쿼리 등의 세부 사항)? SQL SELECT 문, 모든 유형의 조인, 공용체, 교차 및 병합, 인라인 뷰, 조건, 순서 및 그룹화 결과 집합에 대한 철저한 이해는 위에서 지정한 레이블이있는 모든 소프트웨어 엔지니어가 철저히 이해하고 충분히 입증해야합니다.
maple_shaft

4
Meh. 저는 대규모 소프트웨어 회사에서 일하고 있으며 RDBMS를 다루지 않습니다. 데스크톱 소프트웨어를 개발 한 마지막 작업에는 SQL이 필요하지 않았습니다. 엔터프라이즈 및 비즈니스 응용 프로그램을 어떻게 정의하는지 잘 모르겠지만 사물에 대한 관점이 약간 좁아 보입니다.
Adam Lear

2
나는 내가 말한 것을 기다립니다. 이론적으로 응용 프로그램이 계층화되고 구성 요소 화되어 있으면 전체 전문 경험에서 팀이 필요하지 않으며 RDBMS 설계 및 개발을위한 전담 팀이 있었더라도 SQL 전문가가 아니었다면 나는 빠져 버릴 것입니다. 어쩌면 나는 구식이거나 경력에 끔찍한 행운이 있습니까?
maple_shaft

3
@maple_shaft 그래, 내가 작업 한 응용 프로그램이 충분히 구성 요소 화 된 것은 아닙니다. RDBMS를 사용하지 않은 기간입니다. 다른 분야, 나는 추측한다. 요점은 모든 비즈니스 / 기업 개발자가 SQL에 능숙해야 한다고 말할 수는 없습니다 . 그것은 사실이 아닙니다. 사용하면 잘한다. 다른 언어 나 기술과 같이 필요할 때까지 걱정하지 않아도됩니다.
Adam Lear

6

다른 사람들은 이미 데이터베이스 쿼리에 대한 귀하의 질문에 답변했습니다.

데이터베이스 디자인은 특정 유형의 디자인입니다. 배우기는 어렵지 않지만 일반적인 데이터베이스 디자이너는 데이터베이스를 디자인 할 수있는 많은 기회를 얻지 못합니다.

현재 작업중인 장소는 1970 년과 동일한 데이터베이스 설계를 갖습니다. 우리는 데이터베이스를 IDMS에서 DB2로 옮겼지만 동일한 네트워크 데이터베이스 설계입니다. 여기서 근무한 9 년 동안 5 개의 새로운 DB2 테이블을 만들 기회가있었습니다.

전담 데이터베이스 디자이너와 함께 일할 곳이 거의없는 것 같습니다. 따라서 데이터베이스 디자인은 선임 분석가의 레퍼토리의 일부로 간주됩니다.


5

저는 많은 사람들이 모든 개발이 데이터베이스와 SQL 데이터베이스를 중심으로 진행된다고 생각한다는 사실에 매우 놀랐습니다.

다른 사람들은 데이터베이스에서 (간접적으로) 데이터베이스 작업을 할 때에도 작업에서 SQL의 핵심을 피할 수있는 여러 가지 방법을 언급했지만, 101 개 전기 제품의 펌웨어를 작성하는 모든 개발자는 각각 붙잡다? 실시간 모니터링을 전문으로하는 사람들은 어떻습니까?

오늘날의 개발자 대부분은 SQL 기술을 다양한 수준으로 가질 것이라고 제안하지만 능력의 기압계와는 거리가 멀습니다.


5

소프트웨어에서 데이터베이스의 중요성을 과대 평가한다고 생각합니다.

많은 응용 프로그램 클래스는 데이터베이스 중심이 아닙니다.

워드 프로세서 및 이미지 편집기에 DBMS가 필요합니까? 음성 인식 및 컴퓨터 비전 시스템에는 많은 데이터베이스 쿼리가 포함되어 있습니까?

선형 비디오 편집기와 비디오 게임 물리 엔진은 무엇입니까?


5

필자는 일반 개발자가 데이터베이스 기술 (관계형 또는 기타)에 대해 최소한 인식하고이를 사용하는 장단점을 논의 할 수 있을 것으로 기대 합니다. 그렇지 않으면, 그들이하는 방법을 알고있는 모든 것이 플랫 파일에 데이터를 채우는 것만 두려워합니다.


4

프로그래머에게 쿼리 작성이 핵심 요구 사항이라고 생각하지 않습니다. 그러나 쿼리 및 디자인 데이터베이스를 작성할 수있는 프로그래머가 조직에 더 가치가 있다고 생각합니다.

그러나이 프로그래머가 "select * from tblxxxx"유형 쿼리 만 작성할 수 있으면이 프로그래머를 전문가로 생각하지 않습니다. 마찬가지로이 프로그래머가 설계 한 데이터베이스가 두 테이블 대신 하나의 테이블에 일대 다 관계를 배치하면이 프로그래머를 전문가로 간주하지 않습니다.

IT 이외의 사람들에게 이것을 설명하는 방법은 다음과 같습니다. IT 전문가는 목수, 전기 기사 및 배관공이 존경받는 분야를 전문으로하는 방식과 유사한 특정 분야를 전문으로합니다. 그들은 일부 기술과 겹치는 경향이 있지만 모든 분야의 전문가는 아닙니다. 전기 기술자는 자신있게 간단한 목공 작업을 수행 할 수 있지만 복잡한 구조물을 다루려고 노력하지는 않습니다.

마찬가지로, 프로그래머는 간단한 쿼리 및 데이터베이스 디자인을 작성하거나 조작하는 방법을 알고 있어야하지만 복잡한 데이터 구조를 디자인 할 필요는 없습니다.


3

우리 부서를 둘러 보면 다음과 같습니다.

  • 우리의 바탕 화면 / 웹 / 서버 개발자 . 전문 분야에 따라 기본에서 고급 크루 드 문을 작성해야합니다. 최적화를 위해 몇 가지 전문 DB 관리자가 있습니다.
  • 우리의 임베디드 프로그래머 . 꽤 많은 사람들이 "select * from mytable"을 지나치지 않았습니다. 그러나 이는 sqllite 가 프로젝트에 도입되면서 지난 몇 개월 동안 변경되었습니다 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.