Je suis en train de créer une application métier qui va contenir entre 50 000 et 150 000 entreprises. Chaque entreprise (ligne db) est représentée avec 4-5 propriétés/colonnes (titre, emplacement, ...). ORM est LINQ2SQL.RAM disponible sur le fournisseur d'hébergement partagé
Je dois faire un peu de calcul, et pour cela j'ai beaucoup de requêtes pour une société spécifique. Maintenant, je vais à DB chaque fois que j'ai besoin de quelque chose, et il produit 50-200 requêtes, en fonction du calcul complexe. J'ai essayé de mettre toutes les entreprises en cache, et pour 10 000 lignes (entreprises) en db, cela prend environ 5,5 Mo de cache. Dans ce scénario, j'ai une seule requête.
Cette application sera sur le serveur d'hébergement partagé, donc mes ressources sont limitées. Je suis intéressé, que se passera-t-il si j'essaie de charger, disons 100 000 entreprises (lignes, objets)? Ou mettre cela dans la cache?
Existe-t-il une limite de RAM que la société d'hébergement moyenne attribue à l'application ASP.NET? Cela dépend-il du pool d'applications dédié (je peux mettre une application dans un pool dédié)?
Les options sont:
- table entière de charge à des objets C#. Id a fait du profilage de la mémoire, 10 000 objets ont besoin de 5 Mo de RAM
- interroger db pour obtenir des objets référencés en cas de besoin.
La tâche est: pour la société A donnée, construisez l'arborescence des entreprises connectées.
Table et colonnes:
Société: IdCompany, Titre, Adresse, Contact
CompanyConnection: IdParentCompany, IdChildCompany
Pourquoi prendrait-il 50 à 200 requêtes, tho? Si vous paressez en chargeant d'énormes quantités de données, vous devriez pré-charger les lignes enfants. – JustLoren
Chaque société a des références à une ou plusieurs autres sociétés (relation plusieurs-à-plusieurs). J'ai une fonction récursive dans C# qui traverse l'arborescence des entreprises (du parent à chaque enfant, et ainsi de suite) et cherche des trucs. Je dois interroger DB quand je veux avoir des entreprises pour enfants. Peut-être que tout cela peut être fait dans la procédure de magasin, mais je ne suis pas très bon en SQL, et je suis triyng pour garder ma logique d'affaires en C# (app style DDD) –