web-dev-qa-db-ja.com

データベースプログラマは何をしますか?

私はOracleプログラマーなどについて読むたびに混乱します。彼らが何をしているのか正確にはわかりません。

私の理解では、アプリケーションプログラマはコア機能を開発する必要があります。彼らが使用するライブラリは、GUI開発やデータベース接続に役立つ可能性がありますが、そのアプリケーションをプログラムする必要があり、すべてのアプリケーションを異なるものにする機能です(他のバージョンを調整したものもあります)。

この関係で、データベースプログラミングは基本的にテーブルを作成しておらず、これらのテーブルは、通常はフロントエンドであるアプリケーションによって発行されたSQLステートメントに応答して処理されていませんか?では、テーブル作成はそれほど重要なのでしょうか?

16
Thomas

どのデータベースプログラマーに本当に感謝するためには、自分で試してみる必要があります。別の方法で説明してみましょう。

知識不足の人にとってはmight理想的な世界のように思えますアプリケーションプログラマーは実際にはそれほど多くをしません-彼らはビジネスアナリストによって書かれた要件とプロセスを取り、それを行うコードに変換しますプログラマーが入札。

もちろん、プログラミングの経験がある人なら誰でも、これがどのように機能するかはわかりません。現時点では、要件がアプリケーションの動作を細部まで特定していないという事実を無視すると、いくつかの複雑な問題があります。

  • プログラマは、アプリケーションの構造を決定する必要があります。
  • 要件をコンピューターが理解できるものに変換することは、多くの場合、簡単なことではありません。
  • プログラマーは、考えられるさまざまなアプローチのパフォーマンスへの影響を認識する必要があります。
  • プログラマーが選択したプラットフォームを使用して経験を積むにつれて、彼らはより熟達し、より高速でより高品質のコードを提供します。

(もちろん、これは大幅に削減されたリストです。データベース開発で類似点があるものを取り上げようとしています。)

まあ、データベースの開発はほとんど同じです-情報に乏しい人にとっては、それはかなり簡単に見えますが、あなたがより深く関与するようになると、データベース開発の特定の複雑さを認識するようになります:

  • 彼らは、データベースをどのように構成するかを決定します。
  • 多くの場合、より複雑なクエリは、要件から変換するのは簡単ではありません。
  • データベース開発者は、データベースのパフォーマンスに関心を持つ必要があります。
  • また、データの整合性と可用性の維持についても考慮する必要があります。
  • また、開発者と同様に、データベースプログラマーは、経験を重ねるにつれて、行うすべてのことに熟練します。

アプリケーション開発が隠れた落とし穴(スレッドの問題など)でいっぱいであるのと同じように、データベース開発もそうであり、多くの場合、これらの問題のファウルの低下の結果は非常に深刻です(たとえば、データベースを使用するすべてのアプリケーションのデータ損失または潜在的なダウンタイム) 。

プログラマーに何もないと考えさせるのは(「プログラマーがこれを行うことはできないのですか?」)、役割の間には多くの重複があり、彼らは同様のスキルセットを必要とするということです。優れた開発者としての能力を持つ人なら誰でも、時間と経験を積んで優れたデータベースプログラマーとしての能力を持つことは間違いありませんが、経験豊富なデータベースの専門家の価値を過小評価してはなりません。

22
Justin

データベースプログラマは多くのことを行います。まず、予想されるレコード数で適切に機能するようにデータベース構造を設計します。数千のレコードで問題なく機能する設計構造では、データベースが数百万のレコードで使用できなくなる可能性があります。また、データの整合性が長期にわたって維持され、データが不正な変更や盗難から保護されていることを確認する必要もあります。彼らは、正規化と、いつ非正規化するのか、そしてその理由を徹底的に理解する必要があります。彼らは、パフォーマンスとデータの整合性を確保する方法を理解する必要があります。彼らはセキュリティを理解し、データの盗難や悪意のある変更を防ぐ方法を理解する必要があります。

クエリのパフォーマンスを調整します。実行に数分かかるクエリをミリ秒に変更しました。 24時間以上かかっていたプロセスを30分未満に変更しました。挿入の速度と選択の速度のバランスをとるインデックス構造を設計および維持します。

彼らは複雑なクエリ、特にレポートクエリを記述します。私は個人的に、要件が複雑なために1000行を超えるクエリを作成しました。彼らはまだしなければならなかったし、すぐに走った。

データウェアハウスとそれに付随するETLプロセスを作成して、それらをサポートします。多くの場合、他のソースからデータを取り込むためのプロセスを記述し、一部のクライアントデータベースからそれらにフィールドをマップする方法を理解する必要があります。これらは、データ型、データサイズ、必須フィールド、ルックアップ値、等.

彼らは、データベースの要件が変化したときにリファクタリングする方法を決定する必要があります。既存の100,000,000レコードに影響を与えたり、データベースの使用を完全に停止したりする必要はありません。大規模なデータベースには、数千のテーブル、ストアドプロシージャ、ユーザー定義関数が含まれる場合があります。そのような構造を理解するには、変更によってどのような影響を受けるか、どのように影響を受けるかを理解するのと同様に、時間とスキルが必要です。

彼らは、規制および回復の理由でデータを監査する方法を設計します。次に、それらの監査テーブルからデータを回復する方法を設計します。彼らはデータの問題を調査し、問題がインポートプロセスのバグ、他者から提供された不正なファイル、アプリケーションからの不正な挿入/更新、または不正アクセスによるものであるかどうかを確認します。彼らは、アプリケーションプログラマーがハッカーが攻撃するための穴を開けたままにしたときに、不正なデータを修正する方法を見つけます。

多くの場合、あるシステムから新しいシステムへのデータ変換に関与しています。これには、1つのCOTS製品から、会社が購入したばかりの新しい製品にデータを移動することが含まれる場合があります。前述のインポートと同様に、これらは複雑なプロセスであり、計画と実行に数か月かかる可能性があり、広範なテストが必要です。インポートとは異なり、データベースプログラマは異種のデータ構造を制御できない場合があります。

14
HLGEM

私は、90年代後半の24時間ウェーハファブの製造データのデータベースプログラマーとしてインターンしました。自分の職務がどれほど典型的だったかはわかりませんが、私にとって最も大きな部分は、フィールドエンコーディングまたはスキーマの変更が必要になったときに、変更が本番環境にシームレスであることを確認する必要がありました。本質的に、それは私が彼らにクライアントアプリケーションをアップグレードするように彼らに指示することを意味しました、彼らは彼らにとって都合の良い時にそれを行い、そして新しい変更ですぐに戻ることが期待されました。

それは私が予想していたよりもずっと複雑でした。変換スクリプトとクライアントソフトウェアは徹底的にテストする必要がありました。多くの場合、セマンティック上は同一であるが互換性のない2つのデータセットは、全員が切り替えられるまで同期を維持する必要がありました。シームレスにするために、慎重に計画された複数のフェーズでスイッチを切り替える必要が生じる場合があります。本質的に瞬間的に発生した切り替えのために数週間準備することは珍しくありませんでした。

データベースプログラマーが彼の仕事を正しく行っている場合、彼の仕事は非常に簡単であるように観察者に見えるでしょう。多くの人が自分が何をしているのか本当にわからないのは当然です。

8
Karl Bielefeldt

これはかなり単純です。 MVCパターンのようなものを聞いたなら、コントローラーとモデルの違いを知っているはずです。たとえば、ERPを記述している場合、コントローラーでモデルに「retrieveCashFlow」と言うだけで、モデルがデータベースのストアドプログラムを呼び出すことを想像してください。このストアドプログラムは、結合、フィルタリング、順序付けなどを行うと、処理されたデータが返されます。コントローラーでは、物事を組み合わせる必要があります。

ストアドプロシージャについて疑問がある場合は、次を確認してください。 ストアドプロシージャを使用する理由

簡単に言うと、データベース開発者は、アプリケーションがMVCのM(または、mvcを使用しない場合はビジネスロジック)を処理するためのストアドプログラム(手順と関数)を記述します。

2
Adam Arold

Oracleは単なるデータベースではなく、フォームやレポートデザイナを含む完全なプログラミング環境です。 Oracleプログラマは、完全なユーザーアプリケーションをプログラミングします。あなたが参照するデータベースのコーディングは、多くの場合、専門のデータベース管理者(DBA)によって行われます。

Sybaseは、同様のプログラミング環境を持つもう1つの製品だと思います。

他のデータベースは、レポートの定義と実行を許可する「だけ」に制限する場合がありますが、フォームまたはレポートの設計/実行機能をまったく提供しないデータベースもあります。

2
Marjan Venema

データベース開発者は次の1つ以上の責任を負っていると思います

  • 設計、これにはテーブルの作成(またはリレーションの定義)が含まれます
  • 最適化、適切なインデックスの設定、キーの選択、適切なデータタイプの選択
  • 関数、クエリで使用する便利な関数の記述
  • プロシージャ。データベースレイヤーに密結合されたアプリケーションロジックを記述します。
  • イベントに応答するトリガー関数の作成
  • 上記の仕様を作成します。

問題のRDBMSによっては、次のようなタスクを含めることができます

  • レポートとフォームの作成
  • データのインポート/エクスポートのフローを作成する

これを見てください リスト 責任者の

2
Peter Lindqvist