2010-12-06 7 views
0

Nous avons 10 tables dénormalisées qui contiennent de grandes quantités de données (11 000 000) dans beaucoup d'entre elles. Le client veut que l'utilisateur puisse télécharger jusqu'à 100K d'enregistrements à la fois. Ce que je me demande, c'est la conception d'un processus d'arrière-plan pour gérer cela. Je pensais à éventuellement mettre en place une file d'attente pour chacune des tables et avoir plusieurs threads pour gérer les requêtes. Je ne suis définitivement pas un expert en conception de composants multi-thread. Est-ce que vous pensez que je suis sur la bonne voie ici? Des suggestions sur la mise en œuvre?Conception de composants multithreadés Question

Merci!

+0

Quand vous dites « télécharger jusqu'à 100K des dossiers à la fois », est que pour l'exportation (ou quelque chose de similaire où toutes les données sont nécessaires)? Ou pour voir à l'écran (où vous pourriez paginer et donner l'illusion de toutes les données étant là)? – w69rdy

+0

Que ferait la file d'attente? –

+0

Correct, une exportation vers Excel (ou csv). Les utilisateurs auront une interface web, donc je devrais déposer une demande dans un type de file d'attente. La file d'attente stockerait simplement le type de rapport et les paramètres de recherche. – Marco

Répondre

1

scénario de conception

1- Depuis cela est un applicaion Asp.Net, le nombre d'utilisateurs simultanés télécharge les données?

2- Pensez-vous à intégrer la fonction de téléchargement de données dans votre application, avez-vous réfléchi au recyclage des processus?

3- Que faire si la session de l'utilisateur expire mais que le téléchargement est toujours en cours?

4- Vous vous déplacez probablement vers un serveur de streaming. Je pense que vous devriez penser à ces scénarios avant de décider quel type d'application est réellement nécessaire.

dans mes pensées

je pense, vous devriez penser à créer une fenêtre de solution à base qui sera téléchargé sur l'ordinateur client et utilisation des ressources client (fils etc.) pour se connecter au serveur et votre serveur doit soutenir le streaming.

+0

Il sera dans des milliers, c'est pourquoi un processus d'arrière-plan est nécessaire. – Marco

0

Les utilisateurs vont-ils faire des requêtes personnalisées ou simplement télécharger des "morceaux" de la table?

Si ce dernier alors pourquoi ne pas simplement générer le CSV pour chaque morceau à l'avance? Vous n'aurez besoin que de 110 blocs si chaque bloc contient 100 000 enregistrements et que la table ne contient que 11 000 000 enregistrements au total.

+0

Chaque rapport comportera jusqu'à 15 champs de recherche. – Marco