쿼리 작성 및 데이터베이스 디자인 전문가 인 프로그래머가 너무 많습니다.
이것이 전문 프로그래머 또는 소프트웨어 엔지니어가되기위한 핵심 요구 사항이어야합니까?
이 유사성의 많은 방법 쿼리에 있고 코드가 개발되고 있지만, 내 개인적인 의견은, 쿼리는 다른 것 같다 구조 보다는 코드 인해 서로 다른 접근 방식을 동시에 마스터 힘들 수 있습니다.
쿼리 작성 및 데이터베이스 디자인 전문가 인 프로그래머가 너무 많습니다.
이것이 전문 프로그래머 또는 소프트웨어 엔지니어가되기위한 핵심 요구 사항이어야합니까?
이 유사성의 많은 방법 쿼리에 있고 코드가 개발되고 있지만, 내 개인적인 의견은, 쿼리는 다른 것 같다 구조 보다는 코드 인해 서로 다른 접근 방식을 동시에 마스터 힘들 수 있습니다.
답변:
데이터베이스 쿼리 작성이 핵심 요구 사항이어야하는지 여부는 작업에 따라 다르지만 관계형 데이터베이스는 현재 기술에서 어디에나 존재합니다.
따라서 데이터베이스 쿼리 작성 방법을 모르는 프로그래머를 만났다면 다음 두 가지 중 하나가 필요합니다.
데이터베이스 쿼리는 기본 프로그래밍 언어와 근본적으로 다릅니다. 대수적이며 관계형 데이터에서 작동하도록 의도 된 반면 C # 또는 Java는 필수적이며 디스크, 메모리, 사용자 입력 등에서 작동합니다.보다 대수적인 LISP 또는 Haskell과 같은 기능적 언어조차 관계형 데이터에 덜 지향적입니다.
편집 : 나와 다른 사람들의 의견에서 지적했듯이 숙련 된 개발자가 데이터베이스 쿼리를 잘 모르는 몇 가지 정당한 이유가 있습니다.
이 경고는 유효하지만 숙련 된 개발자가 데이터베이스 쿼리를 알지 못하는 이유를 설득력이 없습니다. 고도로 전문화되지 않은 한 프로그래머는 관계형 데이터베이스에 익숙해야합니다.
요약하면, 대부분의 숙련 된 개발자는 데이터베이스 쿼리를 알아야합니다 .
모든 소프트웨어 엔지니어는 데이터베이스에 대한 기본적인 이해와 SQL을 사용하여 데이터를 저장 및 검색하는 방법을 알고 있어야합니다. , 저장 프로 시저 및 트리거).
모든 소프트웨어 엔지니어가 전문가가 될 필요는 없으며 필요한 전문 지식 수준은 실제로 초점을 맞추는 소프트웨어 유형에 따라 다릅니다. 임베디드 소프트웨어, 하드웨어 드라이버 및 운영 체제는 SQL을 거의 사용하지 않지만 애플리케이션 소프트웨어 (웹 또는 데스크탑 또는 서비스 / 데몬 기반)는 항상 데이터베이스를 사용합니다.
데이터베이스 지식이 필요하지 않은 일부 전문 분야 (예 : 임베디드 시스템)가 있습니다. 그러나 대부분의 비즈니스 응용 프로그램은 어떤 종류의 데이터베이스를 사용하며 제대로 사용하는 방법을 완전히 이해하지 못하면 수정하기가 매우 어려운 성능 혼란을 만들 수 있습니다. 리팩토링 데이터베이스는 복잡하고 어려운 프로세스 일 수 있으며, 많은 곳에서 이러한 어려움으로 인해 구조적 문제를 해결하지 않고 자신을 더 깊이 파고 들게됩니다. 데이터베이스 지식이 있다면 시간이 지남에 따라 디자인이 훨씬 쉽고 훨씬 잘 작동 할 수 있습니다.
ORM은 데이터베이스 지식을 얻는 대신 사용할 수 없습니다. 데이터베이스 쿼리 및 디자인의 기본 사항을 모르는 상태에서 데이터베이스를 사용하는 사람은 성능이 저하되고 잘못 설계된 데이터베이스를 보유하게되어 응용 프로그램의 장거리 기능에 영향을 미쳐로드를 처리 할 수 있습니다. 자신이하고있는 일을 아는 사람의 손에 든 ORM은 괜찮습니다. 데이터베이스에 대해 배울 필요가없는 사람들은 보통 재난입니다.
데이터베이스 백엔드가있는 프로젝트가있는 경우 데이터베이스 전문가는 내가 고용 한 두 번째 개발자 (최초 애플리케이션 개발자 이후)가됩니다. 데이터베이스는 일반적으로 무시할만한 것이 아니며, 20 년 후에도 데이터가 여전히 같은 형식에 가깝게 유지 될 것이며, 초기 단계에서 전문 지식을 갖추게됩니다.
데이터베이스에 100,000,000 개의 레코드가 있고 느리게 실행될 때까지 이러한 직원을 고용하지 않기 때문에 프로젝트는 종종 문제를 일으 킵니다. 또는 도구가 설계 능력이 부족하지 않다고 잘못 판단한 경우가 있습니다 (정확하게 디자인하면 SQL Server가 느려지지 않음).
정치적으로 정답 : 그것은 달려 있습니다. 개발자가 관계형 데이터베이스를 사용하지 않는 경우 (그리고 오늘날 NoSQL 응용 프로그램의 시대에 실제로는 가능할 것임) SQL 지식은 아무 가치가 없습니다.
둘째, DBA 또는 풀 타임 쿼리 작성기 (제목이 무엇이든)가 있으면 이해도 덜 중요합니다.
개발자가 가장 중요한 거래가되어야하고 관계형 데이터베이스 (예 : 구식 웹 응용 프로그램 또는 기존 데이터베이스와 연결)를 사용하기위한 프로젝트에 요구 사항이있는 경우에만 매우 중요합니다.
내 개인적인 의견 : 아니요. 숙련 된 소프트웨어 개발자는 필요할 때 '기본적으로'가 아니라 새로운 기술 (예 : SQL)을 배울 수 있어야합니다. 유연성과 배우고 이해하는 능력은 훌륭한 개발자와 좋은 개발자를 구별하는 것입니다. '황금 망치'규칙도 적용됩니다. 광범위한 SQL 지식을 보유한 개발자가있는 경우이 개발자가 자신이 가장 잘 알고있는 도구 인 관계형 데이터베이스를 꺼내어 모든 문제를 해결하려고 시도 할 가능성이 있지만 최고의 솔루션이 되겠습니다. 물론 이것은 NoSQL 지지자에게도 적용됩니다.;).
숙련 된 프로그래머가 알아야 할 올바른 작업에 적합한 도구를 선택하는 것입니다.
컴퓨터 프로그래밍에 대한이 위키 백과 소개를 확인하십시오.
컴퓨터 프로그래밍 (종종 프로그래밍 또는 코딩으로 단축 됨)은 컴퓨터 프로그램의 소스 코드를 디자인, 작성, 테스트, 디버깅 / 문제 해결 및 유지 관리하는 프로세스입니다. 이 소스 코드는 프로그래밍 언어로 작성되었습니다. 프로그래밍의 목적은 원하는 특정 동작을 나타내는 프로그램을 만드는 것입니다.
데이터베이스 쿼리에는 자체 언어가 있으며 설계, 테스트, 디버깅 및 관리가 가능합니다. 데이터베이스 쿼리의 목적은 필요한 정보를 원하는 방식으로 얻을 수 있도록하는 것입니다.
그래서 나는 그것이 프로그래밍이라고 생각합니다.
엔터프라이즈 및 비즈니스 애플리케이션 (특히 RDBMS를 사용하는 프로젝트)에 대한 배경 지식이있는 우수한 소프트웨어 엔지니어는 관계형 데이터베이스 쿼리를 표준 형식으로 작성하는 데 대한 전문 지식이 있어야합니다. 또한 복잡한 스키마를 이해하고 최소한 중간 정도의 복잡한 스키마 디자인을 제안 할 수 있어야합니다.
매우 고급 또는 복잡한 스키마 설계는 데이터 모델러 또는 기능 설계자의 영역이어야합니다.
그렇다고 데이터베이스 프로그래머가 자리를 차지하지는 않습니다. 단일 데이터베이스 벤더 (예 : Oracle, MySQL, SQLServer 등)의 고유 한 툴 및 오퍼링에 중점을 둔 복잡한 저장 프로 시저, 복잡하고 효율적인 쿼리 및 데이터베이스 계층 소프트웨어 설계 및 아키텍처는 가능한 전문 소프트웨어에 맡겨야합니다. 고도로 전문화 된 복잡한 오퍼링 경험이있는 엔지니어.
그러나 필자의 의견으로는 대부분의 비즈니스 및 엔터프라이즈 시스템은 데이터 모델러 및 전문 데이터베이스 프로그래머의 필요성을 정당화하지는 않지만 이러한 사람들이 테이블에 가져온 지식과 전문 지식의 혜택을 받기 전에 그러한 프로젝트를 수행했습니다.
다른 사람들은 이미 데이터베이스 쿼리에 대한 귀하의 질문에 답변했습니다.
데이터베이스 디자인은 특정 유형의 디자인입니다. 배우기는 어렵지 않지만 일반적인 데이터베이스 디자이너는 데이터베이스를 디자인 할 수있는 많은 기회를 얻지 못합니다.
현재 작업중인 장소는 1970 년과 동일한 데이터베이스 설계를 갖습니다. 우리는 데이터베이스를 IDMS에서 DB2로 옮겼지만 동일한 네트워크 데이터베이스 설계입니다. 여기서 근무한 9 년 동안 5 개의 새로운 DB2 테이블을 만들 기회가있었습니다.
전담 데이터베이스 디자이너와 함께 일할 곳이 거의없는 것 같습니다. 따라서 데이터베이스 디자인은 선임 분석가의 레퍼토리의 일부로 간주됩니다.
프로그래머에게 쿼리 작성이 핵심 요구 사항이라고 생각하지 않습니다. 그러나 쿼리 및 디자인 데이터베이스를 작성할 수있는 프로그래머가 조직에 더 가치가 있다고 생각합니다.
그러나이 프로그래머가 "select * from tblxxxx"유형 쿼리 만 작성할 수 있으면이 프로그래머를 전문가로 생각하지 않습니다. 마찬가지로이 프로그래머가 설계 한 데이터베이스가 두 테이블 대신 하나의 테이블에 일대 다 관계를 배치하면이 프로그래머를 전문가로 간주하지 않습니다.
IT 이외의 사람들에게 이것을 설명하는 방법은 다음과 같습니다. IT 전문가는 목수, 전기 기사 및 배관공이 존경받는 분야를 전문으로하는 방식과 유사한 특정 분야를 전문으로합니다. 그들은 일부 기술과 겹치는 경향이 있지만 모든 분야의 전문가는 아닙니다. 전기 기술자는 자신있게 간단한 목공 작업을 수행 할 수 있지만 복잡한 구조물을 다루려고 노력하지는 않습니다.
마찬가지로, 프로그래머는 간단한 쿼리 및 데이터베이스 디자인을 작성하거나 조작하는 방법을 알고 있어야하지만 복잡한 데이터 구조를 디자인 할 필요는 없습니다.