C#(.NET)アプリケーションで使用するデータベースをお勧めしますか?

StackOverflow https://stackoverflow.com/questions/174059

  •  05-07-2019
  •  | 
  •  

質問

私は少しのプロジェクト計画を開発しており、どのローカルデータベースシステムを使用するかを決める必要が出てきました。

入力データは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つのオプションがあります。

  1. SQLlite、Access、またはSQL Server Compactなどを選択します。問題は、それらのいずれかで複雑な変換ロジックを書くことになり、すべてのクエリを2回書く必要があることです。
  2. MySQLをローカルにインストールします。次に、ローカルシステムでフルデータベースサーバーを実行することに我慢する必要があります。顧客に出荷するものについては、これを絶対に避けたいが、自分で使用する場合は大丈夫かもしれない。幸いなことに、MySQLは他の最新のデータベースサーバーほど多くのリソースを使用しませんが、これはまだ理想的ではありません。
  3. サーバーで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。優れたパフォーマンス、優れたツール。無料。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top