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


14

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

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

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

回答:


18

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

それは悪い知らせにあります理想的な世界のアプリケーションプログラマにのように見える本当にあまりをしない-彼らは、ビジネス・アナリストが書かれたような要件やプロセスを取り、プログラマの入札を行うコードにそれらを変換します。

もちろん、プログラミングの経験がある人なら誰でも、これがどのように機能するのかわからないことを知っているでしょう-要件がアプリケーションの振る舞いを最も詳細に指定することは決してないという事実を今のところ無視して、多くの複雑さがあります

  • プログラマーは、アプリケーションの構成方法を決定する必要があります
  • 要件をコンピューターが理解できるものに変換することは、しばしば些細なことではありません。
  • プログラマは、パフォーマンスの意味を認識する必要があります
  • プログラマーは、選択したプラットフォームを使用して経験を積むにつれて、より熟練し、より高品質のコードをより高速に提供します。

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

データベースの開発はほぼ同じです-情報が不十分なため、それは非常に簡単に見えますが、より複雑になると、データベース開発の特定の複雑さを認識するようになります。

  • データベースの構成方法を決定します
  • 多くの場合、より複雑なクエリは、要件から翻訳するのは簡単ではありません
  • データベース開発者は、データベースのパフォーマンスに注意する必要があります
  • また、データの整合性と可用性の維持に関心を持つ必要があります
  • また、開発者と同様に、データベースプログラマーは、経験を積むにつれて、行うすべての作業に精通します。

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

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


返事をありがとう(私はそれを手に入れたいと思っていた)!私がこれを尋ねた理由は、「アプリケーションプログラマ」として、msaccessで小さなデータベースを設計して私のプロジェクトのために何かを成し遂げることであり、大した仕事には思えませんでしたが、もちろんプログラマとしてはt「簡単」。しかし、私はまだこれを理解するのに必要な視点を欠いています。つまり、あるdbaseが他のdbaseとどれほど違うのでしょうか?アプリ開発者がファイル管理コードを「作成」せずにライブラリを使用するように、dbase設計に使用できるテンプレート/ライブラリを使用する準備はできていませんか?または、dbaseプログラミングは実際にはdbase adminですか?

典型的なプログラマーもこれをしませんか?アプリケーション開発者は通常、いわば電車を運転しているので、データベースプログラマーの使用を独占的に観察するにはまだ小さい組織で働いていると思います。彼は自分が何を望んでいるかを知っており、通常は自分でデザインします。
ブライアン

1
私の経験では、専門のDBAのチームを必要とする特定のビジネスアクションがあります。最近聞いたのは、コカコーラとミニッツメイドの合併です。彼らのデータベース(そして彼らはたくさん持っていた)をマージする必要があり、Minute Maid'sはCoca-Colaが持っていたのと同じように設計されていなかった。彼らは、このマージを実行するために徹夜する人を引き寄せる前に、このマージを6か月間計画してテストしました。小規模な会社ではスタンドアロンのDBAは必ずしも必要ではありませんが、大規模な会社では顧客満足のためにそれらのチームが絶対に必要になります。
マイクS

とはいえ、少なくとも1人(できれば2人または3人)のスタンドアロンDBAを持っている小規模企業(50人未満)では、アプリケーション開発者に関する限り、非常に優れています。それとコンピューターを修正する専任のITスタッフがいますが、それはまったく別の話です。
マイクS

2
@ 0A0D、およびテーブルに10億以上のレコードがあり、混乱が絶叫するほど遅くなった6年後までは、データベースエキスパートを雇って、アプリケーションプログラマが設計するべきではなかった混乱を修正します。データベースはリファクタリングするのが非常に難しく、最初からパフォーマンスを考慮して設計する必要があります。これは、アプリケーションプログラマが把握していることはほとんどないようです。ユーザーインタフェースは、データベースのニーズとは、などの内部統制と監査やデータの整合性制約、省略するものではありません必要なものを彼らはまたに基づいて設計する傾向がある
HLGEMを

12

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

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

複雑なクエリ、特にレポートクエリを記述します。個人的には、要件が複雑であるため、1000行を超えるクエリを記述しました。彼らはまだ迅速に実行する必要があり、実際に実行しました。

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

データベース要件の変化に応じて、すでに所有している100,000,000レコードを損なうことなく、データベースの使用を完全に停止することなく、リファクタリングする方法を決定する必要があります。大規模なデータベースには、数千のテーブル、ストアドプロシージャ、およびユーザー定義関数が含まれる場合があります。このような構造を理解するには、変更によってどのような影響を受けるか、どのように影響するかを理解するのに時間とスキルが必要です。

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

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


6

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

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

データベースプログラマーが自分の仕事を正しくしている場合、彼の仕事は非常に簡単であるように見えるでしょう。多くの人が自分が何をしているのか本当に知らないことは驚くことではありません。


2

これはかなり簡単です。MVCパターンのようなことを聞​​いた場合、コントローラーとモデルの違いを知っている必要があります。たとえば、ERPを作成している場合、コントローラーでモデルに対して「retrieveCashFlow」と言うだけで、モデルがデータベースに保存されたプログラムを呼び出すと想像してください。このストアドプログラムは、すべての結合、フィルタリング、順序付けなどを処理し、処理されたデータを取得します。あなたのコントローラーでは、物事を一緒につぶす必要があります。

ストアドプロシージャについて疑問がある場合は、これを確認してください。 なぜストアドプロシージャを使用するのですか?

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


2

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

Sybase同様のプログラミング環境を備えた別のシステムだと思います。

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


1
「Oracleは単なるデータベースではなく、完全なプログラミング環境です。他のデータベースは、「ただ」に定義して実行できるように制限しているかもしれません...」これは知りませんでした。今では理にかなっています。
トーマス

SQL Serverは同じです。ストアドプロシージャに加えて、SSISパッケージを使用すると、ビジュアルプログラミング、他の既存のコードの呼び出し、vb.netまたはc#.netプログラムの作成など、すべてをIDEにまとめることができます。私はSSRSを使用していませんが、似ていると思います。プログラミングのトンがあり、データベースプログラマは多くの異なるツールと言語とプロセスを知っている必要があります。
木曜日

2

データベース開発者は、次の1つまたは複数の責任を負います。

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

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

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

この責任者のリストをご覧ください

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