2012-08-14 7 views
1

Comment créer une application Web (Java, C# ou JavaScript), qui utiliserait la base de données NoSQL en tant que backend, mais avec une certaine flexibilité pour changer le backend (par exemple de couchDB en mongoDB), sans réécrire beaucoup de code. Je suppose qu'il serait préférable d'utiliser un framework, comme Spring pour Java et Wakanda pour JavaScript. Si c'est la voie à suivre, veuillez nommer quelques cadres.Architecture d'application indépendante NoSQL

Je sais qu'il y a de grandes différences entre les différents types de bases de données NoSQL et je sais aussi que cela dépend du problème que l'on doit résoudre. Mais ceci est une question théorique, donc j'aimerais avoir beaucoup d'options différentes que l'on pourrait utiliser pour résoudre différents problèmes tout en ayant une application avec NoSQL "indépendant" (à un certain point, par exemple seulement entre les graphes).

Merci pour vos réponses et votre temps.

+0

* "s'il vous plaît nommer quelques cadres" * - Ce n'est pas le bon endroit pour cela. Les questions qui demandent des listes ou des opinions, des questions d'interrogation, etc. ne sont pas sur le sujet pour Stack Overflow. Pour le reste de votre question, vous n'avez pas nécessairement à utiliser un cadre. L'analyse d'une base de données NoSQL revient à abstraire toute couche de persistance des données. En général, vous séparez votre logique de présentation, votre logique métier et votre logique de persistance. Dans ce cas, votre logique de persistance utiliserait quelque chose comme Mongo, mais vous pouvez le changer pour utiliser Couch à la place sans changer l'autre logique. – David

+0

Oui, je sais. Mais encore si vous avez beaucoup de requêtes, même si vous avez une logique séparée, vous devrez toujours réécrire beaucoup de code. Si vous utilisez SQL, la migration de MySQL vers PostgreSQL ne sera pas un gros problème, mais la migration d'un db NoSQL vers un autre signifie la réécriture de beaucoup de code. Je voudrais juste savoir quelles options les gens ont pour faciliter la migration possible. – Ben

Répondre

0

Si vous voulez vraiment être indépendant de la base de données, vous devez faire abstraction de toutes les entités et de l'accès à la base de données. La manière la plus courante de le faire consiste à implémenter le modèle de référentiel. Notez que les clients OR/Ms (et NoSQL) exigent généralement que vous ne respectiez pas l'encapsulation (setters publics ou utilisez List<T> au lieu de IEnumerable<T> pour les propriétés de collection).

Si c'est un sacrifice que vous êtes prêt à prendre, vous pouvez probablement utiliser vos entités de domaine en tant qu'entités de base de données aussi. (imho bien dans un petit projet, mais pas dans moyen/grand)