DBAは、SQL以外のシステム言語でプログラミングする方法を知る必要がありますか?


20

データベース管理者は、「SQL」だけでなく、システムまたはアプリケーションレベルのプログラミング言語(.NETやPHPなど)をどの程度知っている必要がありますか?

この質問の目的では、SQLの領域外のデスクトップまたはサーバー言語に関する質問であるため、この回答(SQL ANSI 86、SQL ISO 87、SQL:2008)に特定のバージョンのSQL標準は考慮されません。

回答:


25

場合によります。

大きな店では、おそらく何千台ものサーバーを管理し、ツールが提供されているためではありません。小さなお店では、より広い権限を持っているため、おそらくより多くの知識が必要になります。

スクリプト言語(PowerShell、cmd.exeなど)は常に監視や展開などに役立ちます。私はしばしば(ほぼ)維持しなければならないPerlスクリプトをいくつか持っていました。それから、あなたが知っておくと期待される様々なETLパッケージがあります。

そうは言っても、ほとんどのDBA(私が知っている)は基本的なCLRのことを書いたり、PL / SQLをよく知っているでしょう。私にとって、境界線は.netまたはJavaのより広範なパターンまたはアーキテクチャについて知っています。DB開発者やDBAとしては必要ありません。同じように、.net、PHP、またはJava Monkeysは、データベースデザイン、アーキテクチャ、またはコードを私と同じように理解していません。

個人的に、私は数年前に最新または最高のクライアント言語を追いかけるのをやめて、データベース作業に集中することにしました。だからといって「プログラマーではない」わけではありません。必要に応じて、もう一度学ぶ必要があります。


4
「依存する」ための+1に続いて、他の誰もが見逃した(または多すぎると思われる)ものが続きます-それはお店のサイズによって異なります。私の前の仕事はIT部門の3人で、Web開発を含むすべてのことを少ししなければなりませんでした。現在、80人のITスタッフがいる私の現在の場所では、常にすべてのデータベースです。
サイモン・リガーツ

IDKの、私は私が大きいか小さい店を目指していなかったように感じた...
jcolebrand

「..私は何年も前に最新または最高のクライアント言語を追いかけるのをやめ、データベースの仕事に専念することを決めました...」-この賞賛が私を和解させました。素晴らしい点。データベースへのさまざまな「アクセスポイント」で他の言語をパーティーに持ち込むことで、dbを大きな定数として見るのが好きです。これらのアクセスポイントを作成するかどうかは、あなた次第です。頻繁にその質問をしていることに気づいたら、おそらく焦点を変えることが適切でしょう。
ロボピム

gbn-毎日どれくらいのコードを書いていると思いますか?主にSQLですか?
ロボピム

@ pimbrouwers、PowerShellとSQLですが、私はsysadmin + DBAです。最後の仕事はSQL、PowerShell、C#でした。その前は、主にSQLとSSIS(BI DBA)。それは、私が行うことにおいてSQLの機能に常に依存しています。
gbn

14

私は、DBAがプログラミングスキルをほとんど、またはまったく習得しないことを知っていますが、私がこれまで良いと考えていたすべてのDBAには、少なくとも合理的なプログラミングスキルがありました。私が考えることができる1つまたは2つは、かなりの開発バックグラウンドを持ち、それ自体でかなり良い開発者でした。日々の仕事でDBAとして働く人々とTOADを書いたIIRCがDBAとして働いていたIIRCによって書かれたかなりの オープンソース ツールがあります。

役割に応じて、クエリの作成や調整、タスクの自動化のためのスクリプトの作成、アプリケーション設計に関するコンサルティングを行うことがあります。場合によっては、OEMまたはその他の監視ツールを介して多数のサーバーを気にすることもあります。

.NetやJavaなどの現代の「エンタープライズ」開発環境は非常に複雑であるため、開発者はそれらに特化するだけでキャリアを積むことができます。DBAとして、特に開発分野では、C#またはJavaの実用的な知識があれば害はないかもしれませんが、実際にそれらをコーディングするのに多くの時間を費やすことはないでしょう。

多くのシステムは.Net、Java、COM、またはWebサービスAPIを公開していますが、プラットフォームで使用されているスクリプトツールからより多くのマイルを獲得できます。これらのAPIに対して何かをコーディングする必要がある場合は、少なくともそのAPIを使用できるものに関する基本的な実用的な知識が必要です。ただし、通常、高度なアプリケーションアーキテクチャのスキルは必要ありません。

一部の開発者には強力なデータベーススキルがありますが、データベースに対する不合理な恐怖は開発サークルでは非常に一般的です。また、多くの開発者は、SQLの根底にある「セット操作」パラダイムに頭を悩ませることはありません。開発DBAとして、この結果に対処することができ、パフォーマンスの問題を整理するためにストアドプロシージャコードに介入する必要がある場合があります。

データベースを取り巻くETLおよびツールも、DBAの権限に含まれます。かなりの量のバックエンド開発作業が関係していると思われる、かなりの数のDBAの役割を見てきました。これは中小企業で最も一般的です。最近の投稿者の 1人は、カスタムメトリックをOracle Enterprise Managerに統合したいと考えていました。これには、これを行うプラグインAPIがあります。このような要件を見つけることは非常に一般的であり、本質的にこれへの唯一の方法は接着剤コードを書くことです。

ITで働く「Tools Guys」はたくさんあり、偏狭心症にもかかわらず有用な仕事をこなすことができます。ただし、ツールが使い果たされた場合、何かを成し遂げる唯一の方法は、実際にそれを行うためのコードを実際に書くことです。これは、プログラミングスキルが男性と男性を区別する場所です。


6

私は通常、そうは言いませんが、痛いことはありません。SQL Serverは十分に大きいため、1人で製品全体をマスターできるとは思いません。私はSQL Server 4.2からDBAであり、ほとんどの分野の専門家であると考えていますが、すべての段階でGoogleなしでMDXクエリを書くことはできません。

私が言いたいのは、あなたがすべての専門家になることはできないということです。本当に優れたDBAであるということは、T-SQLに精通している必要がありますが、.NETにはあまり得意ではないか、少なくとも.NETに時間を集中できる他の人ほど効果的ではありません。

Powershellは、SSISのインアンドアウトと同様に知っておくとよいでしょう。それ以外は、他の開発言語は開発者に任せてください。


SSASは実際にはSQL Serverとは別のエンティティであり、SSASで大量の作業を行う状況に置かれる人はあまりいないことに注意する価値があると思います。私は2001年頃からSSASを使用しており、毎年数週間しかSSASを使用していません。
ConcernedOfTunbridgeWells

SSASは、SSISやSSRSと同様にSQL Serverファミリの一部です。前述したように、SQL Serverは大規模です。
datagod

1
SSASはSQL Serverにバンドルされていますが、スタンドアロンシステムです。実際にSQL Serverを使用する必要はありません。接続できるものであれば何でもデータをロードできます。SSASは、ごく少数のSQL Serverサイトでのみ使用されていると思います。SQLサーバーのスキルが必要なjobserve.comのリストの数とmdxの広告の数を比較してみてください。SQL Serverでの作業に何年も費やし、SSASに触れないことは不合理ではありません。
ConcernedOfTunbridgeWells

SSISは、スタンドアロンシステムとしてインストールできます。それはあなたのモデルにも当てはまりますか?SSASという名前は何を表していると思いますか?SQL Server Analysis Services。これは、人々が使用するかどうかに関係なく、スイートの一部です。
datagod

5

私の経験では、ほとんどのDBAには何らかの開発の背景がありますが、コードを書く必要はまったくありません。私が携わった非常に優れたDBAには、シェルスクリプト、オペレーティングシステム、および専門的なアプリケーションの知識(PeopleSoftなど)を含むさまざまなトピックに関する広範な知識があります。

大学院のデータベース管理者のインストラクターがいて、優れた(Oracle)DBAが答えるべき質問のリストを教えてくれました:(40ほどのリストからハイライトの一部を投稿します)

  • Oracleが外部キー列にインデックスを自動的に作成しないのはなぜですか?
  • 制約を削除するとき、KEEP INDEX句はいつ使用しますか?
  • いつIOTと通常のテーブルを使用しますか?
  • テーブルとインデックスを別々のテーブルスペースに配置することをお勧めしますか?
  • VARCHARデータ型とVARCHAR2データ型の違いは何ですか?
  • トリガーまたは制約を使用してビジネスルールを実施する方が良いでしょうか?
  • 自動割り当てと固定セグメントサイズのどちらを使用したいですか?
  • 外部テーブルとヒープテーブルとBツリーテーブルをいつ使用しますか?
  • ごみ箱はどのくらいの頻度でパージする必要がありますか?
  • パーティション化されたテーブルをバックアップするには、どのような戦略をお勧めしますか?パーティション化されたインデックスはどうですか?

(Oracle)DBAは、これらのことを効果的に知る必要があります。私が知っているほとんどの開発者(誰がOracleに対してコードを作成するか)は、これらのうちの1つまたは2つでも正しく答えることが難しいでしょう。


5

あなたがDBAであるなら、おそらくパフォーマンスとセキュリティの領域で作業しているでしょう。これには、開発者が作業しているクライアントアプリケーションのプロファイリングと調整が含まれます。したがって、開発者が使用している言語の基本と、データベースサーバーとのインターフェイス方法を知っていても、確かに害はありません。SQL Serverの場合、それはおそらく.NETです。MySQLの場合、おそらくphpまたはjavaのいくつかの組み合わせ。

たとえば、サーバーがクライアントスレッドを必要とする場合、単一のデータベース接続を再利用できるように、ObjectDataSourcesにシングルトンインスタンスを使用する必要があることを開発者に通知できると役立ちます。また、SQLインジェクションを制限するために、パラメーター化されたクエリを適切に使用していることも確認してください。そのようなもの。

厳密にDBAであれば、クライアントアプリケーションを開発するという意味でプログラミングを行うことはありませんが、それらがどのように機能するかを知っておく必要があります(一般的に言えば)。


1
+1私の.netは、ほとんどの場合、データベースを呼び出す方法を知ることに限定されています。それは重要なビットです:-)
gbn

4

さて、見てみましょう、OracleはPascal(デスクトップアプリのコードを生成するために使用されていた言語ですが、近年減少し、開発者はDelphiに移行しました。そこから.NETまで)、Oracleは一部のアクティビティでJavaもサポートするようになりました。Oracle DBAは、システムのすべての側面を十分に理解する必要があるため、PascalとJavaを知っていることが必要だと思います。

TSQLには、SQL Serverの一部の機能の.NET(CLR)マネージコードを記述する能力があるため、優れたDBAはおそらくこれについて知る必要があります(ただし、古いバージョンでは常に使用できるとは限らないため、私の経験では、DBAの多くはその機能セットを避けています。

これが大きな2つであり、ほとんどの人があなたが尋ねているときに尋ねるときに参照するものです。私は他のすべてのエンジンが何をサポートしているのか知りませんが、他の多くのエンジンもSQL以外の言語統合を持っていることを知っています。


+1ですが、Oracle上のサーバー側Java は通常あまり有用ではないと思います(奇妙な例外はあります
ジャックダグラス

@JackDouglas-ほとんどの場合、サーバー側のjavaまたはCLRコードはシステムタスクに役立ちます。サーバー側のコードについて注意すべきことの1つは、それを実行するために使用されるCPU容量に対してDBサーバーのライセンスを支払う傾向があるということです。
ConcernedOfTunbridgeWells

どちらも特に便利ではありませんが、必要なときに必要になります。そして、DBAがこれらのことを認識しておらず、少なくとも開発者から提供されたコードを読むことができない場合、彼は問題を抱えています。私が言っていたのはそれだけです。
jcolebrand

-1

シンプルなデータベースを備えた小さなショップは、あらゆる商取引の開発者/ DBAを逃れることができるため、大きなアプリケーションを備えた大きなショップのみが非プログラミングDBAを必要としていると確信しています。DBAが製品(Oracle、SQL Serverなど)のマスターになるには、この知識リーダーシップが必要です!DBAは、複雑な環境と問題にさらされ、知識を深める必要があります。私は小さな店のDBAであり、2つ以上のニューロンを必要とすることは何もしていないので、これは基本的に私の暴言です。この仕事で時間を無駄にしていると思います。開発者になりたいです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.