Question

Microsoft propose de nombreuses options pour l’accès aux données. Lequel est le meilleur pour les applications évolutives?

Linq

Devrions-nous utiliser Linq? Cela semble certes facile, mais si vous connaissez votre code SQL, cela vous aidera vraiment. De plus, j'entends dire que vous ne pouvez pas exécuter de requêtes asynchrones dans ASP.NET avec Linq. Donc je me demande si c'est vraiment évolutif? Existe-t-il de très gros sites utilisant Linq (à l’exception possible de stackoverflow).

Entity Framework

N'entendez pas trop de rumeurs sur Entity Framework. Semble plus proche du modèle Object que je connais bien.

Astoria / Dynamic Data

Devrions-nous exposer nos données en tant que service?

Je suis plutôt confus et cela avant d’entrer dans les autres produits ORM comme NHibernate. Des idées ou de la sagesse sur lesquelles est le meilleur?

Était-ce utile?

La solution

Je recommanderais NHibernate ou Entity Framework. Pour les grands sites, j'utiliserais ADO.NET Data Services. Je ne ferais rien de grand avec LINQ to SQL. Je pense que Stack Overflow risque de poser des problèmes d'échelle intéressants, car il s'agit d'un système à deux niveaux plutôt que d'un système à trois. Il sera également difficile de procéder à une refactorisation au fur et à mesure que les aspects physiques de la base de données changent et que ces modifications se répercutent dans le code. Juste une pensée.

Autres conseils

Je pense qu'ADO.Net Data Services (anciennement Astoria) a un rôle énorme à jouer. Cela correspond bien à l'architecture de style REST du Web.

Puisque le Web est évolutif, je suppose que tout ce qui suit son architecture le sera aussi. En outre, vous souhaiterez peut-être garder un œil sur SQL Server Data Services.

Si vous parlez de bases de données relationnelles, mon vote est favorable à l'encapsulation de toutes vos opérations de données dans des procédures stockées, quelle que soit la façon dont vous y accédez depuis les autres couches.

Si vous désactivez tous les accès en lecture / écriture à la base de données, à l'exception des procédures stockées, vous pouvez masquer votre modèle de données derrière des contrats bien définis. Le modèle de données est libre de changer, pour que les procédures stockées respectent toujours leurs entrées et leurs sorties.

Cela donne aux administrateurs de base de données une totale liberté pour ajuster votre application et la faire évoluer. C’est une tâche très difficile lorsque SQL est généré par un outil extérieur à la base de données.

L’enfermement dans les procédures stockées semble être une façon de penser décroissante de nos jours, du moins ce sont mes observations actuelles. Cette façon de penser se prête bien au monde ORM car ils sont généralement plus affectifs et vont directement contre les tables, mais tout ORM digne de ce nom autorisera également l’utilisation de procs - parfois vous n’avez pas le choix.

Il y a beaucoup d’opinions autour de EF et quels que soient les propos de chacun, bons ou mauvais, il s’agit d’un produit V1 et avec la règle générale qui veut que MS prenne environ 3 tours pour bien faire les choses, il serait prudent d’attendre le prochain tour au moins.

Il semble que NHibernate soit le principal acteur dans cet espace et la communauté bénéficie d’un soutien important à cet égard. Linq, la fonctionnalité linguistique, ne devrait pas être trop éloigné pour se frayer un chemin vers la pile NHibernate.

Utilisez tout ce qui vous convient. Celles-ci sont toutes plus faciles à configurer si vous avez déjà une base de données assez normalisée (c'est-à-dire une bonne définition des clés primaires et des clés étrangères). Toutefois, si vous avez des données difficiles à normaliser, Entity Framework est plus flexible que LINQ to SQL, mais sa configuration nécessite davantage de travail.

Nous avons expérimenté LINQ dans un environnement en cluster et il semble bien évoluer sur les machines individuelles et à travers le cluster. Parmi les 3 options que vous avez fournies, je dirais que LINQ est le meilleur choix bien que chaque option ait un public cible légèrement différent. Vous devez donc définir ce que vous ferez avec les données avant de décider du paradigme d'accès.

Je suggérerais linq. Il évolue bien sur notre site et est assez simple à utiliser.

utilisez des procédures stockées avec LINQ ... mais ne laissez pas les sprocs se transformer en couche d'accès aux données!

Cet article date de 2008 avant que le cloud ne décolle vraiment. Il semble qu'une mise à jour de la réponse soit nécessaire. Je vais juste fournir quelques liens et un aperçu. Je suis sûr que ce site contient plus de messages à jour sur ce sujet, et si je les trouve, je vais ajouter les liens ici.

S'agissant de l'évolutivité des données et du traitement des transactions, nous devons parler en 2017 du nuage et des fournisseurs de services en nuage.

Je pense que les trois principaux fournisseurs de cloud computing sont:

Coût

L’un des avantages de l’utilisation des services cloud est qu’il n’existe aucun coût initial, aucun frais de résiliation et que vous ne payez que ce que vous utilisez. (Citation de l'article de 2016 de M. Alba Comparaison côte à côte d’AWS, de Google Cloud et d’Azure ")

Nous utilisons AWS nous-mêmes. Nous ne payons que lorsque les ordinateurs virtuels sont installés et en fonctionnement, ce qui peut être un moyen peu coûteux de démarrer. Généralement, les fournisseurs de services facturent à la minute ou à l'heure, mais vous êtes assuré de l'avoir pendant tout ce temps.

Une tarification moins coûteuse est la tarification au comptant au meilleur effort. Le prix au comptant représente le prix au-dessus duquel vous devez enchérir pour garantir qu'une seule demande au comptant est satisfaite. Lorsque le prix de votre offre est supérieur au prix au comptant, Amazon EC2 lance votre instance Spot et, lorsque le prix au comptant dépasse ce prix, Amazon EC2 met fin à votre instance Spot. (Citant sans vergogne le Guide de l'utilisateur d'Amazon ici )

Une comparaison côte à côte d’AWS, de Google Cloud et d’Azure est un bon article qui compare côte à côte ces trois fournisseurs de services disponibles ici .

Pour un aperçu plus académique des services cloud, lisez le document de 2010 de Yu, Wang, Ren et Lou " Obtenir un contrôle d’accès aux données sécurisé, évolutif et détaillé dans le cloud computing " dans la base de données INFOCOM 2010 disponible ici , mais vous devrez peut-être être membre de l'IEEE pour pouvoir y accéder. Bien qu’il soit un peu démodé, il est excellent et vous pouvez vous en servir comme point de départ.

La mise à l'échelle dans le nuage a explosé. Jusqu'à récemment, cette mise à l'échelle était effectuée en démarrant de nouvelles machines virtuelles, ce qui prenait quelques secondes. Toutefois, avec les conteneurs, il est possible de créer de nouvelles instances en quelques millisecondes. Pour plus d'informations à ce sujet, consultez les conteneurs de Docker et Docker ici.

Je m'excuse pour cette réponse, ce n'est qu'un tas de liens pour plus d'informations, mais je pensais que la réponse à cette question devrait avoir une mise à jour. J'espère que cela inspire quelqu'un à fournir plus de détails de première main. Si vous avez déjà publié des informations connexes, veuillez envisager de fournir des liens vers vos propres messages. Merci!

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