.NET用のデータベース不可欠なNOSQLフレームワークはありますか?
-
01-10-2019 - |
質問
SimpledB、Azure Tables、Cassandra、CouchDB、MongoDBなど、さまざまなNOSQLデータベースで移植性を提供する一般的なデータアクセスフレームワークを探しています。アプリを構築していて、顧客がこれまでに使用できるようにしたい彼らが望むnosqlストア。
より関係のシナリオでは、nhibernateまたはエンティティフレームワークよりもlinqを使用しますが、noSQLデータベースの同等のフレームワークは見つかりませんでした。私が見つけたのは、重要な共通性があるように見えても、データベース固有のAPIだけです。存在しますか?できればlinqを持つもの。
解決
これらのことはあまりにも異なっていて、あまりにも具体的すぎます(少なくとも今は)。あなたが何かが欲しかったら 本当 シンプルで、IDによってのみアクセスされるオブジェクトのラッパーのように、希望があるかもしれません。実際、Normを見ると、それをさまざまなプロバイダーに適応させることが可能かもしれません。
ただし、小さなコアセットの外では、これらの「NOSQL」データベースは多くの点でまったく異なります。つまり、さまざまなマップ/削減機能をいじめて実装するにはどうすればよいですか?アトミック動作が異なる原子動作をサポートするとき、どのように実装しますか?
いずれにせよ、私たちはNOSQLライフサイクルの早すぎて、このすべての不可知論的なフレームワークを持っていません。 Azureは基本的に、「ホストされたSQL Server」を支持してNOSQLの提供をドロップしました。 MongoDBは20か月で、CouchDBはまだバージョン0.11.x、SimpleDBは24か月未満、Cassandraはバージョン0.6.2にあり、数年間定期的に使用されている可能性があります。
私たちはまだそこにいません。
他のヒント
一般的なクエリ言語(UNQLと呼ばれる)が開発されています。 http://www.unqlspec.org/display/unql/home
MongoDBにはLINQプロバイダーがありますが、「すべて」NOSQL DBに一般的な.NET LINQプロバイダーがあるとは思いません。
一部の人々は、一般的なNOSQLクエリ言語について考えています。 http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language
基本的な持続性の持続性要件のみがある場合、私は維持します 一般的なキャッシュAPI Memcached、Redis、Inmemory、Files -Systemのキャッシングのプロバイダー。
Redisのみをサポートしますが、私は持っています C#Redisクライアント これは非常に馴染みのあるC#APIを持っています。永続的なPoCoタイプをネイティブにサポートし、Redisのすべての高度なサーバー側のデータ構造をネイティブ.NET ILIST、ICOLLECTIONデータ構造として公開するため、LINQなどの既存のC#APIで簡単に使用できます。