Question

Je suis à la recherche d'un cadre d'accès aux données commune qui fournira la portabilité sur différentes bases de données NoSQL comme SimpleDB, tableaux Azure, Cassandra, CouchDB, MongoDB, etc. Je construis une application et voudrais que mes clients soient en mesure de utilisation qui jamais stocker NoSQL qu'ils veulent.

Dans un scénario plus relationnel, j'utiliser LINQ sur NHibernate ou Entity Framework, mais je n'ai pas trouvé un cadre équivalent pour les bases de données NoSQL. Tout ce que j'ai trouvé est API spécifique de base de données est même si il semble y avoir points communs importants. Est-ce que l'un exist? De préférence, une avec LINQ.

Était-ce utile?

La solution

Non ces choses sont trop différents et trop spécifiques (au moins en ce moment). Si vous vouliez quelque chose vraiment simple, comme juste une enveloppe sur un objet qui est accessible uniquement par ID, alors vous pouvez avoir un espoir. En fait, si vous regardez NORM, il peut être possible d'adapter cela à différents fournisseurs.

Cependant, en dehors d'un petit ensemble de base de fonctionnalités, ces bases de données « NoSQL » sont tout à fait différente à bien des égards. Je veux dire, comment voulez-vous mettre en œuvre les différentes map / reduce fonctions agnostically? Comment pouvez-vous mettre en œuvre des opérations atomiques lorsqu'ils prennent en charge différentes opérations atomiques?

Quoi qu'il en soit, nous sommes trop tôt dans le cycle de vie NoSQL d'avoir un cadre agnostique pour tout cela. Azure essentiellement abandonné leur offre NoSQL en faveur de « serveur hébergé SQL ». MongoDB est peut-être 20 mois, CouchDB est encore sur la version 0.11.x, SimpleDB est inférieure à 24 mois, Cassandra est la version 0.6.2 et a peut-être été utilisé régulièrement pendant deux ou trois ans.

Nous sommes tout simplement pas encore là.

Autres conseils

Un langage de requête commune (appelée UnQL) est en cours d'élaboration: http: //www.unqlspec. org / affichage / UnQL / Home

Il y a des fournisseurs de LINQ pour MongoDB mais je ne pense pas qu'il y ait un fournisseur de LINQ générique .net pour « all » NoSQL db de.

Certaines personnes ont envisagé d'une langue NoSQL générique de requête: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

Si vous avez seulement la persistance de base persistance des exigences, je maintenir un API de mise en cache commun avec les fournisseurs pour Memcached, Redis, InMemory et la mise en cache FileSystem.

Il ne supporte que Redis, mais j'ai un C # Redis client a une API C # très familier. Il prend en charge nativement la persistance types de POCO et expose toutes les structures-données côté serveur avancées Redis en tant que structures de données natives .NET IList, ICollection ils peuvent facilement être utilisés dans les API existantes C # comme LINQ, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top