0

仕事でMS SQLデータベースに取り組んでいます。私たちは開発の初期段階にあり、同僚が ASP.NET を使用している間、私は PHP をいじっています。最終的には、おそらく私たちの努力を組み合わせて、どちらか一方に固執するでしょう. このため、データベースのストアド プロシージャでできるだけ多くのプログラミングを行うことが賢明であると考えました。

そのため、私は現在、ユーザーがテキスト ファイルをアップロードし、データが再配置され、サーバー上のテーブルに挿入されるこのビットに取り組んでいます。今、私は基本的に3つのオプションに直面しています:

  1. PHP ですべての再配置を行い、クエリ文字列を作成して実行します。
  2. データをそのまま別のテーブルに挿入し、ストアド プロシージャを呼び出して再配置し、より大きなターゲット テーブルに挿入します。
  3. 一度にすべての操作と結合を行うストアド プロシージャにデータをパラメータとして渡すだけです。

これまで読んだことから、オプション 1 はおそらくあまり良くないことがわかりました。本当に私の質問は、オプション 3 は逆の方向に行き過ぎているのでしょうか? もっと難しいと思いますが、最も移植性が高く、まだ操作されていないデータがサーバーに置かれている余分なテーブルはありません。または、私のコードが何をしているかを分析しようとする私の後に来る人にとって最も理にかなっている可能性が高いので、オプション2が進むべき道ですか?

4

2 に答える 2

1

ファイルの読み取りとクリーンアップを処理するために、ストアドプロシージャに何らかのロジックを実行させたくありません。これを処理するために、プロセスを異なる論理レイヤーに分離します。ビジネス ロジック レベルでファイル操作を実行し、ストアド プロシージャ (データ アクセス層) にクリーンなデータを提供して、データを関連するテーブルに保存できるようにしたいと考えています。このようにして、アプリの別の部分からデータを保存したい場合や、別のアプリが既にクリーンアップされたデータを保存しようとしている場合に、同じデータ アクセス方法を使用できます。それはよりスケーラブルなソリューションだと思います。

したがって、PHP ファイルでファイル クリーニング操作を実行してから、データをストアド プロシージャに渡すことをお勧めします。クエリ文字列に保存するデータを渡していないことを確認し、そこから直接読み取って保存してください。SQL インジェクションの被害者になるからです。

于 2012-04-18T15:24:11.503 に答える
0

すべての処理とデータ操作を行う 2 つの Web パーツ (おそらく SOAP サービスなので、PHP と ASP.NET の両方が簡単に操作できます) の間に何らかの中間層を追加することをお勧めします。

于 2012-04-19T12:23:18.213 に答える