2010-06-28 22 views
5

SimpleDB, Azure Tabloları, Cassandra, CouchDB, MongoDb gibi çeşitli nosql veritabanlarında taşınabilirlik sağlayacak ortak bir veri erişim çerçevesi arıyorum. Bir uygulama yapıyorum ve müşterilerimin kullanmasını istiyorum istedikleri nosql mağazası..NET için bir veritabanı agnostik nosql çerçeve var mı?

Daha ilişkisel bir senaryoda, Linq'ı nHibernate veya Entity Framework üzerinden kullanırdım, ancak nosql veritabanları için eşdeğer bir çerçeve bulamadım. Tüm bulduğum, önemli bir ortaklık gibi görünse bile, veritabanına özgü API'ler. Biri var mı? Tercihen LINQ ile bir tane.

cevap

4

Hayır bunlar (en azından şu anda) çok farklı ve çok özeldir. gerçekten gerçekten istediyseniz, sadece ID tarafından erişilen bir nesnede sadece bir sarıcı gibi bir umut olabilir. Aslında, NoRM'ye bakarsanız, bunu çeşitli sağlayıcılara uyarlamak mümkün olabilir. Bununla birlikte, küçük bir çekirdek özellik kümesi dışında, bu "NoSQL" veritabanları pek çok açıdan oldukça farklıdır. Üste | Demek istediğim, çeşitli harita/aplikasyonları agnostik olarak nasıl uygularsınız? Atomik işlemleri farklı atomik işlemleri desteklediklerinde nasıl uygularsınız?

Her iki durumda da, NoSQL yaşam döngüsünde, tüm bunlar için bir agnostik çerçeve olması için çok erkenyiz. Azure temel olarak NoSQL tekliflerini "barındırılan SQL sunucusu" lehine düşürdü. MongoDB belki 20 aylık olabilir, CouchDB hala 0.11.x sürümündedir, SimpleDB 24 aylıktan küçüktür, Cassandra sürüm 0.6.2 üzerindedir ve belki birkaç yıldır düzenli kullanımdadır.

Henüz orada değiliz.

+0

Şu anda ortak özelliklerin temel seti şu anda nedir? Sadece nesne kimliği üzerinden erişilen bir nesne mi? BTW. Azure, Tabloları düşürmedi, sadece hem İlişkisel hem de NoSQL'i teklif ettiler. Amazon'un RDS ile yaptığı aynı şey. –

+1

Bu noktada, temel CRUD operasyonlarını aldığınızı düşünüyorum. Harita/Azaltma sadece Couch ve Mongo arasında (ki nispeten benzer) bile önemli ölçüde farklıdır. Listelenen tekliflerden bazıları sürümleri destekliyor, ancak Mongo yapmıyor. Couch, harita indirgemenin merkezi olan "görünümler" kavramına sahip, ancak Mongo harita azaltma çıktılarını yeni bir koleksiyona taşıyor. Yani bunu "soyutlamak" mümkündür, fakat bu çok fazla soyutlama, farklı şeyler yapıyorlar. –

1

MongoDB için LINQ sağlayıcıları var ama 'all' nosql db'leri için genel bir .net linq sağlayıcısı olduğunu düşünmüyorum.

Bazı insanlar jenerik NoSQL sorgu dili hakkında düşünülen adres: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

+1

Yapılandırılmış bir "yapılandırılmış sorgu dili" sorgu dili? Hmmmm .... noktayı özlüyor, değil mi? :-) –

+0

@Warren bu oldukça ironik – Mocky

0

Yalnızca temel kalıcılık gereksiniminiz varsa, Memcached, Redis, InMemory ve FileSystem önbellekleme için sağlayıcılarla birlikte bir common caching API tutuyorum.

Yalnızca Redis'i destekler, ancak çok tanıdık bir C# API'si olan bir C# Redis Client sahibim. Doğal olarak kalıcı POCO türlerini destekler ve tüm Redis'in gelişmiş sunucu tarafı veri yapılarını yerel .NET IList, ICollection veri yapıları olarak sunar, böylece LINQ gibi mevcut C# API'lerinde kolayca kullanılabilirler.

2

Yaygın bir sorgu dili (UnQL olarak adlandırılır) geliştirilmekte:

İlgili konular