답변:
따라 다릅니다.
큰 상점에서는 돌봐야 할 서버가 수천 대이고 도구가 제공되어 있지 않기 때문일 수 있습니다. 작은 상점에서는 더 많은 송금이 있기 때문에 더 많은 지식이 필요할 것입니다.
스크립팅 언어 (예 : PowerShell, cmd.exe)는 모니터링, 배포 등에 유용하지만 항상 유용합니다. 필자는 종종 유지 관리해야하는 일부 Perl 스크립트를 사용했습니다. 그런 다음 알아야 할 여러 ETL 패키지가 있습니다.
즉, 대부분의 DBA (내가 아는 것)는 기본 CLR 자료를 작성하거나 PL / SQL을 잘 알 수 있습니다. 나에게 구분선은 .net 또는 Java의 광범위한 패턴 또는 아키텍처에 대해 알고 있습니다. DB 개발자 또는 DBA로 필요하지 않습니다. .net, PHP 또는 Java Monkeys는 데이터베이스 디자인이나 아키텍처 또는 코드를 이해하지 못하는 것과 같은 방식으로 수행합니다.
개인적으로 저는 몇 년 전에 최신 또는 최상의 클라이언트 언어를 쫓는 것을 중단하고 데이터베이스 작업에 집중하기로 결정했습니다. 그렇다고 저를 "비 프로그래머"로 만들지는 않습니다. 필요한 경우 다시 배워야합니다.
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)'가 있으며 교구주의에도 불구하고 유용한 작업을 수행 할 수 있습니다. 그러나 도구에 증기가 부족할 때 종종 무언가를 수행하는 유일한 방법은 실제로 약간의 코드를 작성하여 수행하는 것입니다. 프로그래밍 기술이 남자와 남자를 분리하는 곳입니다.
나는 일반적으로 말하지는 않지만 결코 아프지 않습니다. SQL Server는 한 사람이 전체 제품을 마스터 할 수 있다고 생각할만큼 충분히 큽니다. 저는 SQL Server 4.2부터 DBA를 맡았으며 대부분의 분야에서 전문가라고 생각하지만 모든 단계에서 구글없이 MDX 쿼리를 작성할 수는 없다는 것을 인정합니다.
내가 말하려는 것은 모든 것에 전문가가 될 수 없다는 것입니다. 정말 좋은 DBA는 T-SQL에 능숙해야하지만 .NET에 능숙하지 않거나 .NET에 시간을 집중할 수있는 다른 사람들만큼 효과적이지 않다는 것을 의미합니다.
Powershell은 SSIS의 기능에 대해 잘 알고 있습니다. 그 외에는 다른 개발 언어를 개발자에게 맡기십시오.
대부분의 DBA에는 어떤 종류의 개발 배경이 있지만 코드를 작성하는 데 전혀 필요하지 않은 것은 저의 경험이었습니다. 내가 함께 일한 정말 좋은 DBA는 쉘 스크립팅, 운영 체제 및 특수 응용 프로그램 지식 (예 : PeopleSoft)을 포함한 다양한 주제에 대한 광범위한 지식을 가지고 있습니다.
저는 대학원 (Graschool School)에 데이터베이스 관리 강사가 있었는데, 좋은 (Oracle) DBA가 대답 할 수있는 질문 목록을 제공했습니다.
(오라클) DBA는 이러한 것들이 효과적이기를 알아야합니다. 내가 아는 대부분의 개발자 (Oracle에 대한 코드)는이 중 하나 또는 두 개에 정확하게 대답하기가 어려울 것입니다.
DBA라면 아마도 성능 및 보안 영역에서 일하고있을 것입니다. 여기에는 개발자가 작업중인 클라이언트 응용 프로그램 튜닝과 관련된 프로파일 링 및 지원이 포함될 수 있습니다. 따라서 개발자가 사용하는 언어의 기본 사항과 데이터베이스 서버와의 인터페이스 방법을 아는 것은 확실히 아프지 않습니다. SQL Server의 경우 아마도 .NET 일 것입니다. MySQL의 경우 php 또는 java의 조합 일 수 있습니다.
예를 들어, 서버에 클라이언트 스레드에 대한 압력이 가해지면 개발자가 단일 데이터베이스 연결을 재사용 할 수 있도록 ObjectDataSources에 싱글 톤 인스턴스를 사용해야한다고 개발자에게 알릴 수 있습니다. 또한 SQL 주입을 제한하기 위해 매개 변수화 된 쿼리를 올바르게 사용하고 있는지 확인하십시오. 그런 것들.
엄격하게 DBA 인 경우 클라이언트 응용 프로그램을 개발한다는 의미에서 프로그래밍 을 수행하지 않지만 작동 방식 (일반적으로 말하면)을 알아야합니다.
Oracle은 Pascal (데스크톱 앱 코드를 생성하는 데 사용되었지만 최근 몇 년 동안 줄어든 언어)과 비슷한 PL / SQL을 사용하고 있으며 개발자는 Delphi로 이동했습니다. 거기에서 .NET까지), Oracle은 이제 일부 활동에 대해 Java도 지원합니다. Oracle DBA는 시스템의 모든 측면을 잘 알고 있어야하기 때문에 Pascal과 Java를 아는 것이 필요하다고 말할 것입니다.
TSQL에는 Sql Server의 일부 기능에 대해 .NET (CLR) 관리 코드를 작성할 수 있는 기능이 있으므로 DBA를 잘 알고 있어야 할 수도 있습니다 (그러나 항상 이전 버전에서 사용할 수있는 것은 아닙니다. DBA는 내 경험상 해당 기능 세트에서 멀어집니다).
그래서 그것은 큰 두 가지이며, 대부분의 사람들은 당신이 요구할 때 물어볼 때 참조합니다. 나는 다른 모든 엔진이 무엇을하고 지원하지 않는지 알지 못하지만 다른 많은 엔진도 SQL 외에도 언어 통합을 가지고 있다는 것을 알고 있습니다.
간단한 데이터베이스를 가진 소규모 상점은 모든 거래의 대가 인 개발자 / DBA와 함께 도망 갈 수 있기 때문에 큰 응용 프로그램을 가진 대형 상점 만이 비 프로그래밍 DBA를 요구한다고 확신합니다. DBA가 제품 (Oracle, SQL Server 등)의 마스터가 되려면이 지식에 대한 요구가 있어야합니다! DBA는 복잡한 환경과 문제에 직면하여 더 잘 알 수 있도록해야합니다. 나는 작은 상점에서 DBA이고 2 개 이상의 뉴런을 필요로하는 어떤 것도하지 않기 때문에 기본적으로 내 광란이다. 나는이 일에 시간을 낭비하고 있다고 생각한다. 나는 개발자가되고 싶다.