8

ほとんどの人が、データ サービスとデータベースがシステムの最も重要な部分であると言うのはなぜですか?

私が見た限りでは、最も重要なのはフロント エンドの開発です。つまり、GUI、WEBUI、XAML です。確かに、中間層やデータベース層よりも重要です。

アプリケーションのデータベースを構築することは大したことではないと思います。結局のところ、データ スキーマはビジネス分析から得られるものであり、データベース開発者の「創造的な」作業はほとんどありません。ビジネス ロジック側 (中間層) についても同様です。さらに、J2EE と .NET エンタープライズ フレームワークはどちらも、ビジネス ロジックの開発を簡素化するのに役立ちます。

では、データベース開発者が行っている重要なことは何でしょうか? なぜスタンドアロンのデータベース開発者が必要なのですか? なぜほとんどの企業は、フロントエンド開発者ではなく、ミドル/バックエンド開発者により高い給与を支払っているのですか?

(Java または C# で) UI を構築する開発者は、データベースの知識を持っている必要があると思います。これにより、アプリケーション全体を構築できます。いずれにせよ、データベースの知識のない人にアプリケーションを開発させることは不可能だと思います。

ここで何が欠けているか教えてください。

どうもありがとう。

4

10 に答える 10

11

通常、フロントエンドは変更がはるかに簡単ですが、バックエンドは要件と設計段階でより多くの変更を必要とします。バックエンドに変更がある場合、フロントエンドも変更する必要がある可能性が高いため、バックエンド サービス (db など) を扱う変更要求は、多くの場合、ミドル エンドとフロント エンドを通じて多くの変更をもたらします。通常、フロントエンドの変更はバックエンドには影響しません。

DBA の問題は、実際にはプロジェクトのサイズによって異なります。いくつかの単純なテーブルと数千のレコードを含むプロジェクトについて話している場合は、おそらく正しいでしょう。本物の DBA はおそらく、とにかくそのプロジェクトに取り組む価値がないと考えるでしょう。真の DBA は、DBMS の最適化を専門とするシステム管理者に似ています。ほぼすべてのプログラマーが、テーブル、リレーションシップ、ビュー、ストアド プロシージャなどを構築できます。特に、使いやすい ORM を使用すると、DBA が行っていた多くの作業が不要になります。ただし、DBMS の最適化、システム構成、フェイルオーバー構成などのために大規模なプロジェクトや大規模なデータベース システムに取り組む場合、DBA は非常に重要です。

あなたの元の質問はプロジェクトの範囲について話していません。それはあなたが混乱している、または実際のDBAの重要性を理解していないところだと思います(SQLを少し知っている人やデータ入力と呼び出しを行う人と混同しないでください自身が DBA です)。

于 2009-09-29T21:27:10.733 に答える
10

私はフロント エンド側を信じています: GUI、WEBUI、XAML は、中間層やデータベース層よりも重要です。

エンジンやタイヤよりも車の色の方が重要だと言っているようなものです。

データベースを構築することは、おそらく大したことではありません。ただし、適切に構築し、既存のものを最適化し、適切に設計されたデータ ストアを維持することは非常に重要です。IMO、それがデータベース/データストア担当者が大金を稼ぐ理由です。

于 2009-09-29T21:23:05.173 に答える
7

私がプログラマーとして行った最も難しい仕事のいくつかは、ユーザー インターフェイス (xhtml、xaml、サーブレット、mvc、asp.net など) を扱うことです。そうは言っても、2 つの異なる問題に直面していると思います。データベース側では、Mathew が言ったように、真の DBA は、通常の開発者が方法を知らない方法で、大規模な (数百万レコード) データベースを最適化できるようになります。中間層では、UI が非常に複雑になることが多いのは、開発者が真の中間/ビジネス ロジック層を実際に構築していないことが多いためだと思います。そのため、アプリケーションのすべてのロジックをユーザー インターフェイスに配置することになりますが、これは誤りです。オブジェクト指向の堅実なビジネス層を構築する方法を知っていて、ドメイン駆動設計と OO 設計パターンを知っている優れた開発者を見つけることはまれです。データベースオブジェクトに一致するゲッター/セッターだけで一連のクラスを構築することは、オブジェクト指向設計ではありません。したがって、それらはより価値があります。

それ以外では、UI 作業は非常にやりがいのあるプログラミングであり、現在よりも重要であると見なされるべきであることに同意します。

于 2009-09-29T21:31:53.267 に答える
5

それはすべて重要です。

于 2009-09-29T21:26:02.483 に答える
4

一緒に投げる小さなアプリの場合、データベースはそれほど重要ではないように見えますが、そのアプリが時間の経過とともに成長および進化すると、設計の悪さによる落とし穴にすぐに遭遇します.

データベース レイヤーと中間層は、アプリの寿命と保守性の鍵です。

于 2009-09-29T21:27:59.113 に答える
2

他にも多くの理由があります: 堅実な中間層を使用すると、要件に基づいてある GUI から別の GUI に切り替えることができます (web2.0 より前の設計から web2.0 の設計など)。おそらく交換可能なフロントエンド。

于 2009-09-29T21:24:13.890 に答える
2

データベースの知識がない人にアプリケーションを開発させることは不可能です。

Web サービスにラップされたストアド プロシージャを使用してデータベース テーブルを非表示にする場合はそうではありません。

フロントエンドは、実際のアプリケーションを覆う単なるスキンです。

中間層のビジネス層は、IMHO をプログラムするのが最も難しい層です。なぜなら、ビジネスの人々は自分が知っていると思っているにもかかわらず、自分の要件が何であるかをほとんど知らないからです。彼らは定期的に考えを変えます。エッジ ケースは優れた設計を台無しにし、実装が非常に困難になる可能性があります。

GUI 開発者がどれだけ優れていても、下手なビジネス層でフロント エンドを書いているのであれば、問題ではありません。また、設計が不十分なデータベースに優れたビジネス層を作成することはできません。

最終的に、データベース層や中間層を変更するよりも、GUI を書き直す方がはるかに簡単です。これらのいずれかを変更すると、プログラムの後続のすべてのレベルに影響を与えるからです。

于 2009-09-29T21:26:18.553 に答える
2

あなたの非質問に答えることは不可能です。

これは、すべてのシステムでデータベースが最も重要であると誰もが考えているという前提に基づいています。これは明らかに誤りです。すべての人がそうは考えていないだけでなく、多くのシステムはデータベースを使用していません。異なるシステムの重要な部分は、システムごとに異なります。

実際、システムの定義によれば、すべての部分が重要でなければなりません。一部のサブシステムは他のサブシステムよりも高価である可能性があり、一部のサブシステムは他のサブシステムよりも耐障害性が高く、一部はモジュール方式で交換可能であり、他のサブシステムはそうではない可能性がありますが、すべてがシステムの一部であり、したがって重要です。どちらかがより重要であるという考えは、定量化するのが困難です。一部のパーツはオプションであり (「機能しない」装飾など)、システムの一部とは見なされない可能性があると考えられます。ただし、システムのより大きな視点では、ユーザーが参加し、システムとの効率的で楽しい相互作用は、その成功を確実にするために不可欠です。

すでにここに掲載されている類推を使用すると、車の塗装はエンジンほど重要ではないかもしれませんが、塗装されていない車を販売する人がいるでしょうか? - 可能性は低いです (未完成の家具のように、それが製品の定義でない限り)。

エンジンが塗装よりも高価であるのと同じように、塗装の色を選択するよりも、エンジンを設計する方が多くの人にお金を払うと思います。

すべてのシステムには、さまざまな専門性と複雑性があります。

于 2009-09-29T21:42:15.040 に答える
1

ビジネスのロジックは、J2EE または DotNET エンタープライズ フレームワークの助けを借りて、常にシンプルになります。

確かに、ビジネス ロジックのコーディングは単純な傾向があります...例外、エラー処理、実際にビジネスから適切な要件を取得することなどについて心配する必要がない場合. 1 つのアプリケーションで複数のフロントエンド (Web、デスクトップ、モバイル) をサポートすると、突然、その「単純な」ビジネス ロジックが重要なポイントになります。

于 2009-09-29T21:28:08.640 に答える
0

C++ の知識があっても、誰もが VC++ でうまくコーディングできるというわけではありません。

現在の技術の世界では、すべての開発者がほとんどの最新技術に関する基本的な知識を習得しています。すべてのテクノロジーを備えたシステムを設計する準備ができているわけではありません。

そのすべては、経験とあなたの専門性によってもたらされます。UI 設計ではなく、DBA を行うことで十分な報酬が得られたことを思い出してください。

UI 開発者が DB を設計できないという意味ではありません。データベースの設計に十分な経験があれば、優れた DB 設計者になることもできます。

于 2009-09-30T05:50:19.690 に答える