C#(.NET)アプリケーションで使用するデータベースをお勧めしますか?
質問
私は少しのプロジェクト計画を開発しており、どのローカルデータベースシステムを使用するかを決める必要が出てきました。
入力データはWebサーバーに保存されます(ホスティング-MySQL DB)。アイデアは、すべての必要なデータをダウンロードするプロセス(たとえば深夜)を構築し、それらを処理することです。ただし、多くの入力と処理の段階があるので、何らかの種類のローカルデータベースを使用してアプリケーションの半製品を保存する必要があります
C#(.NET)アプリケーションを使用するのにどのローカルデータベースシステムをお勧めしますか?
編集:最終製品(情報)は、MySQL DBのホスティングに簡単にエクスポートして戻す必要があります。
彼の答えで述べたように-はい、私はパフォーマンスと使いやすさを求めています。
解決
Microsoft Sql 2005 Expressは、.NETで開発する際に(ほぼ)明白な選択肢となるためです。
しかし、それはあなたが持っている以前のdbスキルに依存します。すでにMySqlを知っていて、すでに述べたように、データをエクスポートしてMySqlに戻す必要があります。 MySqlをすべて使用しないのはなぜですか?
他のヒント
手っ取り早くするために、 Sql Server Compact Editionを使用します。 Sql Serverのインプロセス実装であるため、他のアプリケーションをインストールする必要はありません。
昔、この種のことにはAccessデータベースを使用していました。しかし、Accessデータベースはちょっと打撃です。
完成したデータを本番サーバーにアップロードするのにそれほど時間はかかりません。そのプロセスを自動化するソリューションを探している場合、MySqlのインスタンスをローカルでホストし、それが提供するレプリケーションサービスを使用する必要があるでしょう。
SQL Server Compact Editionを使用します。本格的なバージョンのSQL Serverとほぼ同じであり、VS2008にはテーブルの設計やクエリなどのサポートが組み込まれています(Management Studio 2008でもサポートされています)。最大の欠点は、ストアドプロシージャを失うことですが、ローカルユーザーのマシンに何もインストールする必要がないため、データを選択するのに非常に高速です。さらにクールなのは、SQL Metalを使用すると、SQL Serverの場合と同じようにDBMLファイルを作成してLINQを使用できることです。
db4oの使用はどうですか?これは、アプリケーションに埋め込むことができるOODBです。 レプリケーションもサポートしています。 編集:サイドノートとして-db4oを使用して私の現在のペットプロジェクトでは、私は行を持っています(C#3.5):
IList<Users> list = Persistence.Database.Query<Users>(u => u.Name == "Admin");
厳密な型指定のラムダ式を使用して、データベースから(遅延)オブジェクトのリストを取得します。また、インデックスを使用してリストをすばやく取得します。
MS SQL Serverのサポートは、他のドライバーやセットアップを必要とせずにすぐに使用できます。また、MS SQL Server Expressは無料です。
MySQLとの間でデータをエクスポートするスクリプトを生成できます。
「明白な」選択肢はMS SQL Server Expressです。 VSと.netはどちらもネイティブにサポートしていますが、既に(メインDBで)経験しているなら、私は確かにそれ(またはその高速バージョン)に固執したくなるでしょう。
しかし、それは確かにあなたのオプションの終わりではありません。クロスプラットフォームアプリケーションとWebアプリにはSQLiteをよく使用します。それは目を見張るほど高速で、 System.Data.SQLite を介して非常によく統合されます。 MS SQL Serverとしてしっかりと。
SQLiteに非常によく匹敵するSQL Serverのコンパクト版もあります。
利用可能なものは何でも選択しますが、インターフェースに対してのみコードを使用すれば、簡単に切り替えることができます。
本番の場合、大規模プロジェクトの場合はMS SQL(または中レベルの場合はexpress)のどちらかと言えますが、それは単に小規模プロジェクトの場合のVSおよびSqliteとの密接な統合によるものです。
説明を考えると、Sqliteは最も単純/最も低いオーバーヘッドなので、良い選択だと思います。
MySQLと完全に構文および型の互換性がある優れたインプロセスデータベースを知りません。それを念頭に置いて、次の3つのオプションがあります。
- SQLlite、Access、またはSQL Server Compactなどを選択します。問題は、それらのいずれかで複雑な変換ロジックを書くことになり、すべてのクエリを2回書く必要があることです。
- MySQLをローカルにインストールします。次に、ローカルシステムでフルデータベースサーバーを実行することに我慢する必要があります。顧客に出荷するものについては、これを絶対に避けたいが、自分で使用する場合は大丈夫かもしれない。幸いなことに、MySQLは他の最新のデータベースサーバーほど多くのリソースを使用しませんが、これはまだ理想的ではありません。
- サーバーでSQL Server Expressエディションに切り替え、クライアントでSQL Server Compactを使用します。 MySQLと同じくらい安いです(商用利用のためにMySQLを購入することになっているので、もっと安いかもしれません)。クライアント側でC#を使用していることを考慮すると、サーバー側でもASP.Netで使用することをお勧めします。また、ASP.Netサーバー側を使用している場合、SQL Server Expressを提供するホストを見つけることは難しくありません。これで、データベースは型互換性があり、クライアント用に作成したクエリは、サーバーでも機能することが保証されます。
MSOスタック(アクセスを除く)の大きな強みの1つであるIMOは、デスクトップから複数のデータセンタークラスターに至るまで、あらゆる作業に対応するソリューションを備えていることです。アプリのスケールが変更された場合、またはアプリの2つの異なるクラス間でデータを送信する必要がある場合は、データベースレイヤーが処理されます。
私は最近いくつかのテストを行ってきましたが、SQL Server 2008は新しく、RTMになりましたが、すぐに動作するため、SQL Server 2005(必要に応じてExpress)もお勧めします。
ほとんどの人が言及したSQL Server ...私の理由は、C#からデータベースにテストケースを統合するためにソース管理を使用できるからです。
Team Foundation(TFS)は、MicrosoftのGUIを使用したものです...
これはすでに回答済みです。 CLR言語を使用する場合、CLR / .NET Framework IntegrationがMS SQL Server 2005/2008を他のものと区別していることに言及する必要があります。 こちらからの抜粋。
>ビジュアルなどの言語を使用する 基本的な.NETおよびC#、大文字にすることができます コードを書くためのCLR統合について より複雑なロジックを持ち、 計算タスクに適しています。 さらに、Visual Basic .NETおよびC# オブジェクト指向機能を提供する カプセル化、継承、 および多型。簡単にできます 関連するコードをクラスに整理し、 名前空間 より簡単に整理し、維持します 作業中のコード投資 大量のコードで。の 論理的および物理的に能力 コードをアセンブリに整理し、 名前空間は大きな利点です より良い発見と関連付けが可能になります 大規模なコードの異なる部分 データベースの実装。
説明したとおり、間違いなくMS SQL Server。優れたパフォーマンス、優れたツール。無料。