¿Existe un marco nosql agnóstico base de datos para .NET?
-
01-10-2019 - |
Pregunta
Estoy en busca de un marco de acceso de datos común que proporcionará portabilidad a través de diversas bases de datos NoSQL como SimpleDB, Tablas Azure, Cassandra, CouchDB, MongoDB, etc que estoy construyendo una aplicación y le gustaría que mis clientes sean capaces de Sea cual sea el uso nosql almacenan que quieren.
En un escenario más relacional, que haría uso de LINQ sobre NHibernate o Entity Framework, pero no he encontrado un marco equivalente para las bases de datos NoSQL. Todo lo que he encontrado es la API de base de datos específica es a pesar de que parece que hay coincidencia significativa. ¿Uno existe? Preferiblemente, uno con LINQ.
Solución
Sin estas cosas son demasiado diferentes y demasiado específico (al menos por ahora). Si quería algo realmente simple, como sólo un envoltorio sobre un objeto que sólo se accede por ID, entonces usted puede tener una esperanza. De hecho, si nos fijamos en norma, puede ser posible adaptar eso a diversos proveedores.
Sin embargo, fuera de un pequeño conjunto básico de características, estas bases de datos NoSQL "" son muy diferentes en muchos aspectos. Es decir, ¿cómo aplicar los diversos map / reduce funciones agnóstico? ¿Cómo se implementa operaciones atómicas cuando apoyan diferentes operaciones atómicas?
De cualquier manera, estamos demasiado temprano en el ciclo de vida NoSQL para tener un marco agnóstico de todo esto. Azure básicamente dejó caer su oferta NoSQL a favor de "servidor SQL hospedado". MongoDB es quizás 20 meses de edad, CouchDB todavía está en versión 0.11.x, SimpleDB es inferior a 24 meses de edad, Cassandra es la versión 0.6.2 y tal vez ha estado en uso regular durante un par de años.
Simplemente no estamos allí todavía.
Otros consejos
Se está desarrollando un lenguaje de consulta común (llamado UnQL): http: //www.unqlspec. org / pantalla / UnQL / Inicio
Hay proveedores LINQ para MongoDB, pero no creo que hay un proveedor de LINQ .net genérica a 'todos' db nosql de.
Algunas personas han contemplado sobre un lenguaje de consulta nosql genérica: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language
Si sólo tiene persistencia básica persistencia requisitos, que mantener un almacenamiento en caché común API con los proveedores para Memcached, Redis, InMemory y almacenamiento en caché de sistema de archivos.
Sólo es compatible con Redis, pero tengo una C # Redis cliente que tiene un C # API muy familiar. Se admite de forma nativa persistente tipos POCO y expone todos avanzadas de servidor de datos de estructuras de Redis como .NET IList, estructuras de datos nativas ICollection por lo que fácilmente se pueden utilizar en las API de C # como LINQ existente, etc.