8

個人的な経験とSOの質問と回答の両方から、SQLの実装は大幅に異なるようです。SQL に関する質問の最初の問題の 1 つは、次のようなものです。

ほとんどの場合、SQL では、同じ方言を使用する場合でも、特定のクエリを構造化する方法がいくつかあります。しかし、さまざまなアプローチの相対的な移植性が議論されないことが多く、議論されている場合でも非常に高く評価されていることは興味深いことです。

しかし、特定のアプリケーションが変換の対象となる可能性とそうでない可能性を無視しても、スキル、習慣、およびパターンが可能な限り移植可能であることを好むと思います。

SQL を扱う中で、標準の SQL 構文をどれくらい好みますか? 妥当性のバリエーションをどれだけ積極的に避けていますか? より良いパフォーマンスを知覚するための独自の設定に言及せずに回答してください。通常、これは十分に正当な防御であるとほとんどの人が認めます。

4

4 に答える 4

13

標準/ベンダーに依存しない SQL に反対票を投じます

  • データベースが実際に切り替えられることはめったにありません。
  • 現在の SQL 標準に完全に準拠する単一のデータベースはありません。したがって、標準に準拠している場合でも、ベンダーに依存しているわけではありません。
  • ベンダーの違いは、SQL 構文にとどまりません。ロック動作が異なります。分離レベルが異なります。
  • データベースのテストは非常に難しく、開発が遅れています。絶対に必要でなければ、複数のベンダーをゲームに投入してさらに難しくする必要はありません。
  • ベンダー固有の調整には多くの力があります。(「制限」、「分析関数」、または「ヒント」と考えてください)

その真髄は次のとおりです。 - ベンダーに依存しないという要件がない場合は、実際に使用しているベンダーに特化してください。- ベンダーの独立性が必要な場合は、誰が請求書を支払うか、これには費用がかかることを確認してください。すべての rdbms がテストに使用できることを確認してください。そしてそれも使用してください - SQLのすべての部分をプラグイン可能な特別なレイヤーに配置して、データベースのパワーを使用し、さまざまなベンダーと協力することができます - 違いが構文の純粋な問題である場合にのみ、標準を使用してください。 (外部) 結合に対するオラクル表記法と ANSI 標準構文の使用。

于 2009-04-02T07:21:09.813 に答える
6

当店では真摯に受け止めております。すべての主要なプラットフォームでサポートされていない限り、非標準の SQL または拡張機能は許可されません。それでも、コード内で非標準としてフラグが立てられ、正当化が必要です。

クエリを高速に実行するのはアプリケーション開発者の責任ではありません。明確な役割分担があります。クエリは、DBMS 自体または DBMS の DBA チューニングによってのみ最適化されます。

DB2/z のような実際のデータベース :-) は、標準 SQL をかなり高速に処理します。

これを強制する理由は、お客様に選択肢を与えるためです。彼らは、私たち以上に特定のベンダーに縛られることを好まないのです。

于 2009-04-02T07:23:06.657 に答える
2

私の経験では、クエリの移植性はそれほど重要ではないことがわかりました。私たちはさまざまなデータ ソース (主に MSSQL と MySQL) を扱っていますが、どのデータがどこに保存されているかを把握しており、それに応じて最適化できます。私たちはシステムを管理しているので、いつ構造を移動し、クエリを書き直す必要があるかを決定します。

また、SQL Server でのクエリ通知など、MySQL では提供されないサーバー固有の機能を使用することも好きです。繰り返しになりますが、移植性について心配せずに、可能な場合に使用します。

さらに、アプリの一部は、スキーマ情報を照会してそれに基づいて動作する必要があります。ここでも、最小公分母に限定しようとするのではなく、さまざまなシステム用のサーバー固有のコードがあります。

于 2009-04-02T07:31:20.070 に答える
1

SQL の移植性が望ましいかどうかについて明確な答えはありません。実際には、アプリケーションの種類などの状況に大きく依存します。

アプリケーションがサービスになる場合、つまり、それをホストするのはあなただけである場合、SQL が十分に移植可能であるかどうかを気にする人は誰もいないので、特にドロップする予定がない限り、無視しても問題ありません。現在のプラットフォームのサポート。

アプリケーションが多数のサイトにインストールされ、それぞれが独自の確立されたデータベース システムを持っている場合、明らかに SQL の移植性は人々にとって非常に重要です。これにより、潜在的な市場を広げることができ、データベースシステムに関してフェンスにいるクライアントに少しの心配を与えることができます. それをサポートしたいのか、例えば Oracle の顧客のみに販売したいのか、それとも MySQL/PostgreSQL の顧客のみに販売したかったのかは、あなた次第であり、あなたの市場がどうあるべきかはあなた次第です。

PHP でコーディングしている場合、潜在的な顧客の大多数はおそらく MySQL を期待するでしょう。もしそうなら、MySQL を仮定することは大したことではありません。または同様に、C#/.NET を使用している場合は、Microsoft SQL Server を想定できます。ただし、通常よりも他のデータベース システムへの接続を希望する PHP または .NET ユーザーの、小さいながらも競争の少ない市場が存在する可能性があるため、ここでも裏返しがあります。

したがって、最初の例のように、ユーザーにとって重要ではないホステッド サービスを提供している場合を除き、これは主に市場調査の質問と見なします。

于 2009-04-02T07:15:21.637 に答える