DBA는 SQL 이외의 시스템 언어로 프로그래밍하는 방법을 알아야합니까?


20

데이터베이스 관리자는 "just SQL"외에 시스템 또는 응용 프로그램 수준 프로그래밍 언어 (예 : .NET 또는 PHP)를 어느 정도 알아야합니까?

이 질문의 목적 상, SQL 영역 외부의 데스크탑 또는 서버 언어와 관련하여 질문에 대한 특정 버전의 SQL 표준 (SQL ANSI 86, SQL ISO 87, SQL : 2008)이 고려되지 않습니다.

답변:


25

따라 다릅니다.

큰 상점에서는 돌봐야 할 서버가 수천 대이고 도구가 제공되어 있지 않기 때문일 수 있습니다. 작은 상점에서는 더 많은 송금이 있기 때문에 더 많은 지식이 필요할 것입니다.

스크립팅 언어 (예 : PowerShell, cmd.exe)는 모니터링, 배포 등에 유용하지만 항상 유용합니다. 필자는 종종 유지 관리해야하는 일부 Perl 스크립트를 사용했습니다. 그런 다음 알아야 할 여러 ETL 패키지가 있습니다.

즉, 대부분의 DBA (내가 아는 것)는 기본 CLR 자료를 작성하거나 PL / SQL을 잘 알 수 있습니다. 나에게 구분선은 .net 또는 Java의 광범위한 패턴 또는 아키텍처에 대해 알고 있습니다. DB 개발자 또는 DBA로 필요하지 않습니다. .net, PHP 또는 Java Monkeys는 데이터베이스 디자인이나 아키텍처 또는 코드를 이해하지 못하는 것과 같은 방식으로 수행합니다.

개인적으로 저는 몇 년 전에 최신 또는 최상의 클라이언트 언어를 쫓는 것을 중단하고 데이터베이스 작업에 집중하기로 결정했습니다. 그렇다고 저를 "비 프로그래머"로 만들지는 않습니다. 필요한 경우 다시 배워야합니다.


4
"의존"에 +1 한 다음 다른 사람들이 놓친 것 (또는 너무 명백한 것으로 생각됨)-상점의 크기에 따라 다릅니다. 이전의 업무는 IT 부서에서 우리 중 세 명이었으며 웹 개발을 포함하여 약간의 모든 작업을 수행해야했습니다. 현재 80 명의 IT 직원이있는 현재 위치에서는 항상 모든 데이터베이스입니다.
Simon Righarts

idk, 나는 크고 작은 상점을 향해 기어되지 않은 것 같은 느낌이 들었습니다 ...
jcolebrand

".. 몇 년 전 최신 또는 최상의 클라이언트 언어를 쫓지 않기로 결정하고 데이터베이스 작업에 집중했습니다 ..."-이 표창은 저와 함께 화를 냈습니다. 좋은 지적입니다. 저는 db를 큰 상수로보고 싶습니다. 데이터베이스의 다양한 "액세스 포인트"에서 다른 언어를 파티에 가져옵니다. 이러한 액세스 포인트를 만들고자하는지 여부는 귀하에게 달려 있습니다. 당신이 그 질문을 자주하는 것을 발견한다면, 아마도 초점이 적절할 것입니다.
robopim

gbn-매일 작성하는 코드의 양은 얼마입니까? 주로 SQL입니까?
robopim

@pimbrouwers는 이제 PowerShell 및 SQL이지만 sysadmin + DBA입니다. 마지막 작업은 SQL, 일부 PowerShell, 일부 C #이었습니다. 그 전에는 주로 SQL 및 SSIS (BI DBA)가 있습니다. 그것은 내가하는 일에서 항상 SQL 기능에 달려 있습니다.
gbn

14

DBA는 프로그래밍 기술이 거의 없거나 전혀없는 것으로 알고 있지만, 내가 생각한 모든 DBA는 적어도 합리적인 프로그래밍 기술을 가지고 있습니다. 제가 생각할 수있는 한두 가지는 상당한 개발 배경을 가지고 있으며 그 자체로는 상당히 훌륭한 개발자였습니다. 있다 공정의 오픈 소스 하루 작업 및 IIRC 두꺼비는 DBA로 작업에 사용 쓴 사람의 DBA가 같이 일하는 사람들에 의해 쓰여진이.

역할에 따라 쿼리 작성 또는 조정, 작업 자동화를위한 스크립트 작성 또는 응용 프로그램 설계에 대한 컨설팅을받을 수 있습니다. 경우에 따라 OEM 또는 다른 모니터링 도구를 통해 여러 서버를 염두에 두어야 할 수도 있습니다.

.Net 또는 Java와 같은 현대적인 '엔터프라이즈'개발 환경은 개발자가 전문 분야에서 경력을 쌓을 수있을 정도로 복잡합니다. DBA로서, 특히 개발 공간에서 C # 또는 Java에 대한 실무 지식은 아프지 않을 수 있지만 실제로 코딩하는 데 많은 시간을 소비하지는 않을 것입니다.

많은 시스템이 .Net, Java, COM 또는 웹 서비스 API를 노출하지만 플랫폼에서 사용되는 스크립팅 도구를 사용하면 더 많은 마일리지를 얻을 수 있습니다. 이러한 API에 대해 무언가를 코딩해야하는 경우 최소한 해당 API를 소비 할 수있는 기본적인 작업 지식이 필요합니다. 그러나 일반적으로 고급 응용 프로그램 아키텍처 기술이 필요하지 않습니다.

일부 개발자는 강력한 데이터베이스 기술을 갖지만 데이터베이스에 대한 비이성적 인 두려움은 개발 분야에서 매우 일반적입니다. 또한 많은 개발자들은 SQL의 기반이되는 '세트 작업'패러다임에 대해 결코주의를 기울이지 않습니다. 개발자 DBA는이 결과를 처리하고 저장 프로 시저 코드에 개입하여 성능 문제를 해결해야 할 수도 있습니다.

데이터베이스를 둘러싼 ETL 및 툴링도 DBA의 송금에 해당 될 수 있습니다. 나는 상당한 양의 백엔드 개발 작업을 필요로하는 것으로 보이는 DBA 역할이 상당히 많다고 보았다. 이것은 소규모 회사에서 가장 일반적입니다. 하나 개는 최근의 포스터는 이 작업을 수행하는 플러그인 API를 가지고 오라클 엔터프라이즈 관리자로 맞춤 측정 항목을 통합하고 싶었다. 이와 같은 요구 사항을 확인하는 것이 일반적이며,이를위한 유일한 방법은 접착제 코드를 작성하는 것입니다.

IT에는 많은 '도구 가이 (Tools Guys)'가 있으며 교구주의에도 불구하고 유용한 작업을 수행 할 수 있습니다. 그러나 도구에 증기가 부족할 때 종종 무언가를 수행하는 유일한 방법은 실제로 약간의 코드를 작성하여 수행하는 것입니다. 프로그래밍 기술이 남자와 남자를 분리하는 곳입니다.


6

나는 일반적으로 말하지는 않지만 결코 아프지 않습니다. SQL Server는 한 사람이 전체 제품을 마스터 할 수 있다고 생각할만큼 충분히 큽니다. 저는 SQL Server 4.2부터 DBA를 맡았으며 대부분의 분야에서 전문가라고 생각하지만 모든 단계에서 구글없이 MDX 쿼리를 작성할 수는 없다는 것을 인정합니다.

내가 말하려는 것은 모든 것에 전문가가 될 수 없다는 것입니다. 정말 좋은 DBA는 T-SQL에 능숙해야하지만 .NET에 능숙하지 않거나 .NET에 시간을 집중할 수있는 다른 사람들만큼 효과적이지 않다는 것을 의미합니다.

Powershell은 SSIS의 기능에 대해 잘 알고 있습니다. 그 외에는 다른 개발 언어를 개발자에게 맡기십시오.


SSAS는 실제로 SQL Server와는 별개이며 많은 사람들이 SSAS로 많은 작업을 수행하는 상황에 처하지는 않는다는 점에 주목할 가치가 있다고 생각합니다. 2001 년경부터 SSAS를 사용하고 있습니다. 매년 몇 주 동안 만 사용했습니다.
ConcernedOfTunbridgeWells

SSAS는 SSIS 및 SSRS와 마찬가지로 SQL Server 제품군의 일부입니다. 내가 말했듯이 SQL Server는 BIG입니다.
datagod

1
SSAS는 SQL Server와 함께 번들로 제공되지만 독립형 시스템입니다. 실제로 SQL Server를 사용할 필요는 없습니다. 연결하려는 모든 데이터를로드 할 수 있습니다. SSAS는 소수의 SQL Server 사이트에서만 사용됩니다. SQL Server 기술을 원하는 jobserve.com의 목록 수와 mdx의 광고 수를 비교해보십시오. SQL Server 작업에 수년을 소비하고 SSAS를 건드리지 않는 것은 무리가 없습니다.
ConcernedOfTunbridgeWells

SSIS는 독립형 시스템으로 설치할 수 있습니다. 모델에도 잘 맞습니까? SSAS라는 이름이 무엇을 의미한다고 생각하십니까? SQL Server 분석 서비스 사람들의 사용 여부에 관계없이 스위트의 일부입니다.
datagod

5

대부분의 DBA에는 어떤 종류의 개발 배경이 있지만 코드를 작성하는 데 전혀 필요하지 않은 것은 저의 경험이었습니다. 내가 함께 일한 정말 좋은 DBA는 쉘 스크립팅, 운영 체제 및 특수 응용 프로그램 지식 (예 : PeopleSoft)을 포함한 다양한 주제에 대한 광범위한 지식을 가지고 있습니다.

저는 대학원 (Graschool School)에 데이터베이스 관리 강사가 있었는데, 좋은 (Oracle) DBA가 대답 할 수있는 질문 목록을 제공했습니다.

  • Oracle이 외래 키 열에 인덱스를 자동으로 생성하지 않는 이유는 무엇입니까?
  • 제약 조건을 삭제할 때 KEEP INDEX 절을 언제 사용 하시겠습니까?
  • IOT와 일반 테이블을 언제 사용 하시겠습니까?
  • 테이블과 인덱스를 별도의 테이블 스페이스에 배치하는 것이 좋습니까?
  • VARCHAR과 VARCHAR2 데이터 유형의 차이점은 무엇입니까?
  • 비즈니스 규칙을 시행하기 위해 트리거 또는 제약 조건을 사용하는 것이 더 낫습니까?
  • 자동 할당 대 고정 세그먼트 크기를 언제 사용 하시겠습니까?
  • 외부 테이블과 힙 테이블 및 B- 트리 테이블을 언제 사용 하시겠습니까?
  • 휴지통을 얼마나 자주 제거해야합니까?
  • 파티션 된 테이블을 백업하기 위해 어떤 전략을 권장 하시겠습니까? 파티션 된 인덱스는 어떻습니까?

(오라클) DBA는 이러한 것들이 효과적이기를 알아야합니다. 내가 아는 대부분의 개발자 (Oracle에 대한 코드)는이 중 하나 또는 두 개에 정확하게 대답하기가 어려울 것입니다.


5

DBA라면 아마도 성능 및 보안 영역에서 일하고있을 것입니다. 여기에는 개발자가 작업중인 클라이언트 응용 프로그램 튜닝과 관련된 프로파일 링 및 지원이 포함될 수 있습니다. 따라서 개발자가 사용하는 언어의 기본 사항과 데이터베이스 서버와의 인터페이스 방법을 아는 것은 확실히 아프지 않습니다. SQL Server의 경우 아마도 .NET 일 것입니다. MySQL의 경우 php 또는 java의 조합 일 수 있습니다.

예를 들어, 서버에 클라이언트 스레드에 대한 압력이 가해지면 개발자가 단일 데이터베이스 연결을 재사용 할 수 있도록 ObjectDataSources에 싱글 톤 인스턴스를 사용해야한다고 개발자에게 알릴 수 있습니다. 또한 SQL 주입을 제한하기 위해 매개 변수화 된 쿼리를 올바르게 사용하고 있는지 확인하십시오. 그런 것들.

엄격하게 DBA 인 경우 클라이언트 응용 프로그램을 개발한다는 의미에서 프로그래밍 을 수행하지 않지만 작동 방식 (일반적으로 말하면)을 알아야합니다.


1
+1 내 .net은 주로 내 데이터베이스를 어떻게 호출하는지 아는 것으로 제한됩니다. 그것은 중요한 비트입니다 :-)
gbn

4

Oracle은 Pascal (데스크톱 앱 코드를 생성하는 데 사용되었지만 최근 몇 년 동안 줄어든 언어)과 비슷한 PL / SQL을 사용하고 있으며 개발자는 Delphi로 이동했습니다. 거기에서 .NET까지), Oracle은 이제 일부 활동에 대해 Java도 지원합니다. Oracle DBA는 시스템의 모든 측면을 잘 알고 있어야하기 때문에 Pascal과 Java를 아는 것이 필요하다고 말할 것입니다.

TSQL에는 Sql Server의 일부 기능에 대해 .NET (CLR) 관리 코드를 작성할 수 있는 기능이 있으므로 DBA를 잘 알고 있어야 할 수도 있습니다 (그러나 항상 이전 버전에서 사용할 수있는 것은 아닙니다. DBA는 내 경험상 해당 기능 세트에서 멀어집니다).

그래서 그것은 큰 두 가지이며, 대부분의 사람들은 당신이 요구할 때 물어볼 때 참조합니다. 나는 다른 모든 엔진이 무엇을하고 지원하지 않는지 알지 못하지만 다른 많은 엔진도 SQL 외에도 언어 통합을 가지고 있다는 것을 알고 있습니다.



@JackDouglas-대부분 서버 측 Java 또는 CLR 코드는 시스템 작업에 유용합니다. 서버 측 코드에 대해 한 가지주의 할 점은 DB 서버 라이센스를 실행하는 데 사용되는 CPU 용량에 대한 비용을 지불하는 경향이 있다는 것입니다.
ConcernedOfTunbridgeWells

이들 중 어느 것도 매일 유용하지는 않지만 필요할 때 필요합니다. 그리고 DBA가 그러한 것을 인식하지 못하고 개발자가 제공 한 코드를 읽을 수 없다면 문제가 있습니다. 그게 내가 말하는 전부 야
jcolebrand

-1

간단한 데이터베이스를 가진 소규모 상점은 모든 거래의 대가 인 개발자 / DBA와 함께 도망 갈 수 있기 때문에 큰 응용 프로그램을 가진 대형 상점 만이 비 프로그래밍 DBA를 요구한다고 확신합니다. DBA가 제품 (Oracle, SQL Server 등)의 마스터가 되려면이 지식에 대한 요구가 있어야합니다! DBA는 복잡한 환경과 문제에 직면하여 더 잘 알 수 있도록해야합니다. 나는 작은 상점에서 DBA이고 2 개 이상의 뉴런을 필요로하는 어떤 것도하지 않기 때문에 기본적으로 내 광란이다. 나는이 일에 시간을 낭비하고 있다고 생각한다. 나는 개발자가되고 싶다.

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