3

バックグラウンド

従来のインポート ツールをアップグレード中です。SQL Server に接続された 1 つのデータベースから同じサーバー上の 2 番目のデータベースにデータを移動し、途中で変換とマッピングを実行する別のスキーマを使用します。

何が起こっているのかを説明するのに役立つ例を次に示します

ソース データベースに という 1 つのテーブルがClient_Infoあり、宛先テーブルに と という名前の 2 つのテーブルがあるClientsとします。Cities

Source.dbo.Client_Info

+-----------+----------+----------+-------+
| FirstName | LastName |   City   | State |
+-----------+----------+----------+-------+
| John      | Smith    | Richmond | VA    |
| Jeff      | Walters  | New York | NY    |
+-----------+----------+----------+-------+

Dest.dbo.Clients

+-----------+-------------+--------------------------------------+
| FirstName |  LastName   |               CityGuid               |
+-----------+-------------+--------------------------------------+
| Scott     | Chamberlain | 07d954bf-3214-4df4-b640-48c27db2b1ed |
+-----------+-------------+--------------------------------------+

Dest.dbo.都市

+--------------------------------------+----------+-------+
|               CityGuid               | CityName | State |
+--------------------------------------+----------+-------+
| 07d954bf-3214-4df4-b640-48c27db2b1ed | Richmond | VA    |
+--------------------------------------+----------+-------+

マージ後、宛先は次のようになると思います

Dest.dbo.Clients

+-----------+-------------+--------------------------------------+
| FirstName |  LastName   |               CityGuid               |
+-----------+-------------+--------------------------------------+
| Scott     | Chamberlain | 07d954bf-3214-4df4-b640-48c27db2b1ed |
| John      | Smith       | 07d954bf-3214-4df4-b640-48c27db2b1ed |
| Jeff      | Walters     | 98a75f88-eeaa-49ba-b464-2ac988a7b093 |
+-----------+-------------+--------------------------------------+

Dest.dbo.都市

+--------------------------------------+----------+-------+
|               CityGuid               | CityName | State |
+--------------------------------------+----------+-------+
| 07d954bf-3214-4df4-b640-48c27db2b1ed | Richmond | VA    |
| 98a75f88-eeaa-49ba-b464-2ac988a7b093 | New York | NY    |
+--------------------------------------+----------+-------+

現在、これは VB6 プロジェクトであり、一時的な #t テーブルを使用してレコードをシャッフルするハード コーディングされた SQL ステートメントを使用し、必要に応じて既存または新しい値を GUID 列に入力します。

それ以来、私たちは C# .NET ショップに移行しました。ソフトウェアの新しいバージョンがリリースされたときに宛先データベースが変更されると、インポート ツールを変更するのがますます難しくなるため、インポート ツールを C# に更新する時期であると考えられています。 (Visual Studio 6をインストールしてWindows 8で動作させるためだけに戦います)。

私の質問

NHibernate のような ORM ツールは、その仕事に適したツールですか? これまで ORM を実際に使用したことのある人は誰もいません (また、日常的に使用するために新しいデータベースと対話するソフトウェアを作成する開発チームではありません。古いデータベースを新しいデータベースに移行し、 「実際の開発者」は、各バージョンでスキーマにどのような変更を加えたかを教えてくれます)。CRUDORM は、このようなサーバー データベースの移行ではなく、クライアントへの操作などに使用されると思うので、ORM の使用についてはよくわかりません。

それを行うための「適切な」方法は SSIS を使用することだと思いますが、私の部署には誰も SSIS に精通しておらず、上司はそれを維持するために全員に別の言語を習得させるには時間とリソースがかかりすぎると感じています。 (この移行ツールは、他の質問で話していたステップの後に実行されるものです)。

私が探している主なものは、この移行を次の方法で行う方法です。

  • 大量のデータ
  • 転送中に一部の列を設定できるようにする (外部キー GUID の再利用など)
  • 宛先データベース スキーマの変更に合わせて簡単に変更できます
  • できれば C# または SQL で行います。

これらの種類の要件で、どのようなツールを探す必要がありますか?

ORM は正しいことではないと思うので、この質問をしますが、代わりに何を使用すればよいかわかりません。SSIS (あまりにも異なるためにテーブルから削除されました) 以外は、ハードコーディングされた SQL ステートメントを使用する以外に何をすべきかわかりませんが、それは私の心の中で「変更が容易」という要件を破っています。

4

3 に答える 3

2

本格的な ORM も使用しませんが、Dapper のようなマイクロ ORM は、このようなタスクに最適です (とりわけ)。TSQL と c# に慣れていれば、非常に高速で、金属に近いパフォーマンスと使いやすさを実現できます。(15 分で生産的になることができます)

同様のプロジェクトを完了し、それを使用してサーバーからサーバーにデータを移動すると、チャンピオンのように機能し、実行されました。

https://code.google.com/p/dapper-dot-net/

于 2013-06-17T01:46:24.397 に答える
2

SSIS はこれを行うのに最適なツールです。

ORM は、アプリケーションでの CRUD 操作 (正しく述べたように) のみを対象としており、大規模なデータ転送に対して深刻な問題が発生する可能性が高くなります。ほとんどの ORM は、多数の行を含む CRUD 操作には推奨されません。データベース レベルのデータ移行は忘れてください。ORM は主に、ソフトウェア アプリケーションとデータベース間の永続的なデータ接続のコーディングを容易にするために使用されます。

一方、SSIS は ETL (Extract Transform Load) 用に作成されており、データベース、データ ウェアハウス レベルで安全に使用できます。ストアド プロシージャと比較して、移行も非常に高速に行われます。

私が追加したいもう 1 つの重要なことは、SSIS が非常に簡単であるという事実です (私の経験から)。ほとんどの操作には、Visual Studio デザイナーでの ETL コントロールのドラッグ アンド ドロップと、構成画面でのデータ型の構成が含まれます。コードを書くのが本当に好きでない限り、または非常に複雑なシナリオでない限り、それといくつかのデータ型 Transformation(T) スニペットだけで十分です。

わかりました、上司は現在それを不必要な投資と考えています。ただし、SSIS は、データ ウェアハウスのシーンにおける Microsoft の切り札です。現在の要件を見ると、それはまさに組織が必要としているものです。私たちの組織での経験からすると、Microsoft が生きている限り、その投資はあらゆる価値があることが証明されます。

于 2013-06-16T21:55:02.697 に答える