2011-04-06 6 views
0

Y at-il un avantage à utiliser une base de données NoSQL plutôt que de simplement conserver un cache d'objets volumineux dans HttpCache et d'utiliser linq pour interroger des objets?NoSQL vs Linq To Objects pour asp.net mvc

Nous avons une liste de 5000 produits qui doivent être servis aux utilisateurs en fonction de la géographie, les préférences de l'utilisateur, etc. Les données de produit canoniques vit dans un db relationnel et nous n'avons pas l'intention de changer cela. Nous avons un sproc qui renvoie une grande liste d'identifiants de produits valides pour un client donné, mais nous ne voulons pas que nous rechargions chaque produit pour chaque client. (Pourquoi envoyer la même description de produit entre le serveur db et le serveur web?)

Par conséquent, nous venons de récupérer les détails du produit à partir du cache pour une liste donnée d'ID de produit. Notre première tentative de mise en cache des produits a entraîné une énorme utilisation de la mémoire, car l'application a effectué plusieurs appels ToList() en raison d'une mauvaise conception de la requête et de la récupération de la mémoire léthargique.

Je cherche à construire une nouvelle version et j'apprécierais toute suggestion quant à savoir si une base de données NoSQL offre de réels avantages par rapport à l'utilisation de linq pour les objets.

Répondre

1

Si votre base de données relationnelle est SQL Server, vous pouvez utiliser les services de notification et stocker la liste des produits à l'aide d'un SqlDataSource avec EnableCaching="True" et CacheDuration="Infinite" L'avantage de cette approche est que vous aurez un aller-retour à la base de données que si le la liste des produits est modifiée.

Jetez un oeil à ce article, il explique comment fonctionne Notification Services.

1

Pour 5000 objets, le HttpRuntime.Cache est un excellent magasin de données NoSQL.