2010-06-28 36 views
5

我正在尋找一個通用數據訪問框架,它將提供跨SimpleDB,Azure表,Cassandra,CouchDB,MongoDb等各種nosql數據庫的可移植性。我正在構建一個應用程序,並希望我的客戶能夠使用哪個nosql商店他們想要的。是否有.NET的數據庫不可知的nosql框架?

在更相關的情況下,我會使用Linq over nHibernate或Entity Framework,但是我還沒有找到與nosql數據庫等效的框架。我發現的所有數據庫都是特定於API的,儘管似乎存在顯着的共性。有一個存在嗎?最好有一個LINQ。

回答

4

沒有這些東西太不一樣了,太具體的(至少現在)。如果你想要一些簡單的,就像只能通過ID訪問的對象的包裝一樣,那麼你可能會有希望。事實上,如果你看看NoRM,有可能使它適應不同的提供商。

然而,除了一小部分核心功能之外,這些「NoSQL」數據庫在許多方面都有很大不同。我的意思是,你如何無法實現各種map/reduce功能?當他們支持不同的原子操作時,你如何實現原子操作?無論哪種方式,在NoSQL生命週期中,我們都過早地擁有一個不可知論的框架。 Azure基本上放棄了他們的NoSQL產品,轉而使用「託管SQL服務器」。 MongoDB可能20個月大,CouchDB仍然在0.11.x版本,SimpleDB不到24個月大,Cassandra版本是0.6.2,並且可能已經在幾年內正常使用。

我們還沒有到位。

+0

那麼現在的核心共同特徵是什麼?它真的只是一個通過它的對象ID訪問的對象嗎? BTW。 Azure沒有刪除Tables,他們只提供了Relational和NoSQL。亞馬遜與RDS一樣。 – 2010-06-29 17:43:09

+1

在這一點上,我認爲你會得到基本的CRUD操作。即使在Couch和Mongo之間,Map/Reduce也有很大不同(它們相對相似)。一些列出的產品支持版本控制,但Mongo不支持。 Couch具有「視圖」的概念,這對於縮小地圖非常重要,但Mongo只是將map-reduce輸出轉換爲新的集合。所以有可能你可以「抽象出」這個,但是它有很多抽象,B/C他們做着不同的事情。 – 2010-06-30 01:18:48

1

有MongoDB的LINQ提供程序,但我不認爲有一個通用的.net LINQ提供程序'all'nosql db。

有些人預期的約一個通用的NoSQL的查詢語言:http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

+1

因此,結構化的「無結構化查詢語言」查詢語言?嗯......有點錯過了,不是嗎? :-) – 2010-06-28 04:23:48

+0

@沃倫,這非常具有諷刺意味 – Mocky 2010-06-28 14:25:00

0

如果您只有基本的持久性持久性要求,我會爲Memcached,Redis,InMemory和FileSystem緩存提供一個common caching API供應商。

它只支持Redis,但我有一個C# Redis Client,它有一個非常熟悉的C#API。它本地支持持久化的POCO類型,並將所有Redis的高級服務器端數據結構作爲本機.NET IList,ICollection數據結構公開,以便它們可以輕鬆用於現有的C#API(如LINQ等)。

相關問題