2010-10-27 6 views
0

Imaginez que vous réunissiez tous les mois les notes des lycéens du monde entier dans un seul tableau et dans le dossier de chaque étudiant, vous devez inclure les moyennes finales du sujet à travers la classe, la ville et le pays de l'élève. Cela peut être fait dans un post-processus, mais votre patron dit que cela doit être fait pendant la collecte des données. Contrainte: les lignes sont écrites dans un fichier plat puis insérées en bloc dans la nouvelle table. Quelle serait une bonne stratégie ou un motif de conception pour s'accrocher à plusieurs centaines de milliers de moyennes jusqu'à ce que la table soit faite sans ajouter de surcharge de mémoire/traitement à la JVM ou au SGBDR? Toutes les idées seront utiles.Vous avez besoin d'une stratégie pour gérer les données agrégées lors de la création de grandes tables de base de données

Remarque: Étant donné que la table est utilisée en lecture seule, nous lui ajoutons un index cluster à la fin.

+1

Nous pourrions probablement répondre plus précisément si vous avez posté vos requêtes et structure de table et expliqué les champs avec quelque chose de plus descriptif que 'FQty'. – Quassnoi

+0

J'ai réécrit la question. – belwood

Répondre

2

Je dirais à mon patron d'arrêter la microgestion. Mais sérieusement, triez les données par classe, par ville et par pays. Puis calculez la moyenne mobile pour chacun en gardant un total cumulé et comptez pour la classe, la ville et le pays. Lorsque vous rencontrez une classe différente, écrivez le nom de la classe et la moyenne dans un fichier. Faites de même pour les villes et les pays n'utilisez que des fichiers différents pour chacun. Ensuite, vous pouvez ouvrir le fichier de données trié et les fichiers moyens et insérer des lignes dans la base de données une par une.

Si vous voulez utiliser un framework qui gérera toute l'écriture sur disque, je chercherais à utiliser Hadoop pour le traitement.

+0

Bonne réponse, mais j'ai oublié une contrainte importante - le problème de chargement de fichier plat/en vrac. J'ai mis à jour ma question. – belwood

+0

@belwood J'ai modifié ma réponse pour inclure cette contrainte –

+0

Hadoop a l'air très intéressant - merci pour le conseil. – belwood