3

今日の最新のデータベース システムには、さまざまな機能が搭載されています。そして、あるデータベースを学ぶには、別のデータベースで学んだ概念を忘れなければならないという私に同意するでしょう. たとえば、各データベースは他のデータベースとは異なる方法でロックを実装します。したがって、あるデータベースの概念を別のデータベースに持ち込むことは、失敗のレシピになります。また、2 つのデータベースのパフォーマンスが非常に異なる例が他にもある可能性があります。

では、データベース駆動型システムを開発している間、プログラマーはパフォーマンスのためにコーディングできるように、データベースを詳細に知る必要があるのでしょうか? DBA の仕事は、データベースを維持し、緊急時に開発者を支援することだけであり、定期的なものではないため、DBA に後でパフォーマンスを求めるのは適切ではないと思います。

開発者がデータベースについての洞察を得るために必要な範囲はどの程度であるべきだと思いますか?

4

7 に答える 7

6

これらは最も重要なことだと思います(最も重要なものから最も重要でないものまで、IMO):

  • SQL (明らかに) - 少なくとも基本的なクエリ、集計 (sum() など)、および内部結合を実行する方法を知っていると役立ちます。
  • 正規化- DB 設計スキルは主要な要件です
  • Locking Model/MVCC - データベースが行ロックを管理する方法を少なくとも基本的に把握しておくとよいでしょう (または、MVCC を使用して楽観的ロックで同様の目標を達成します)。
  • ACID コンプライアンス、Txns - これらがどのように機能し、相互作用するかを知っておいてください
  • インデックス作成- テーブルスペースの専門家である必要はないと思いますが、パフォーマンスを最適化するためにデータを別のドライブに配置することや、その他の細かい点については、インデックス スキャンとテーブルスキャンがどのように機能するかについて高度な知識を持っていると役に立ちます。また、クエリ プランを読み、どちらかを選択する理由を理解できるようにすることも役立ちます。
  • 基本的なツール- ある時点で本番データをテスト環境にコピーしたいと思うかもしれません。そのため、データベースを復元/バックアップする方法の基本を知っておくことが重要です。

幸いなことに、現在、db の基礎についてかなりのことを学ぶために使用できる優れた FOSS および無料の商用データベースがいくつかあります。

于 2008-08-23T05:20:50.590 に答える
3

開発者は、データベース システムがどのシステムであるかに関係なく、どのように機能するかをかなりよく理解している必要があると思います。設計とアーキテクチャを決定する際には、データベースに関して考えられる影響を理解する必要があります。

于 2008-08-23T05:09:56.873 に答える
3

個人的には、データベースがどのように機能するか、リレーショナル モデルとその背後にあるレトリック、すべての形式の正規化を含むことを知っておく必要があると思います (ただし、第 3 正規形を超える必要はほとんどありません)。リレーショナル モデルの中心となる概念は、リレーショナル データベースからリレーショナル データベースに変更されません。実装は変更される可能性があります。

データベースの正規化、インデックスなどの背後にある理論的根拠を理解していない開発者は、重要なプロジェクトに取り組んだ場合、苦しむことになります。

于 2008-08-23T05:12:59.330 に答える
3

それは本当にあなたの仕事次第だと思います。専任の DBA を擁する大企業の開発者であれば、多くのことを知る必要はないかもしれませんが、小規模な企業の場合は、データベースについて詳しく知っていると非常に役立つ場合があります。小さな会社では、複数の役割を担うことがあります。

どんな状況でも、もっと知ることは害にはなりません。

于 2008-08-23T05:16:40.257 に答える
3

リレーショナル データベースの理論に精通していること、標準 SQL 構文の実用的な知識、ストアド プロシージャ、トリガー、ビュー、およびインデックスとは何かを理解していることは確かに問題ありません。SQL のデータベース固有の拡張機能 (T-SQL、PL/SQL など) を学習することは、そのデータベースでの作業を開始するまで、それほど重要ではないことは明らかです。

ソフトウェアを実行するハードウェアを理解することが重要であるのと同様に、データベース アプリケーションを開発する際には、データベースの基本を理解することが重要だと思います。専門家である必要はありませんが、ソフトウェアがやり取りするものについて完全に無知であってはなりません。

とはいえ、アプリケーション開発者として多くの SQL を実行する必要はないはずです。データベースとのやり取りのほとんどは、DBA が開発したストアド プロシージャを介して行う必要があります。私は、アプリケーション コードに SQL コードを含めることはあまり好きではありません。クエリがストアド プロシージャにある場合、DBA はストアド プロシージャの実装やデータベース スキーマを変更できます。結果が同じである限り、アプリケーション コードを変更する必要はありません。

于 2008-08-23T05:30:00.177 に答える
2

データベースへの最適なアクセス方法がわからない場合は、Microsoft のアプリケーション ブロック ( http://msdn.microsoft.com/en-us/library/cc309504.aspx ) などの試行済みのソリューションを使用する必要があります。また、そのコードがどのように実装されているかを調べることで、役に立つことがわかります。

于 2008-08-23T05:18:17.633 に答える
0

Sql クエリに関する基本的なことは必須です。その後、簡単なシステムを開発できます。ただし、複雑なシステムを実装する場合は、正規化、手順、関数などを知っておく必要があります.

于 2013-05-08T07:13:34.393 に答える