2010-08-10 3 views
3

Nous avons des millions et des millions d'enregistrements dans une table SQL, et nous exécutons des analyses très complexes sur ces données pour générer des rapports. Au fur et à mesure que la table s'agrandit et que des enregistrements supplémentaires sont ajoutés, le temps de calcul augmente et l'utilisateur doit attendre longtemps avant que la page Web ne se charge.Techniques de mise en cache de données/Astuces/AppFabric

Nous envisagions d'utiliser un cache distribué comme AppFabric pour charger les données en mémoire lorsque l'application se charge, puis en exécutant nos rapports à partir de ces données en mémoire. Cela devrait améliorer un peu le temps de réponse puisque maintenant les données sont en mémoire par rapport au disque. Avant que nous prenions le plundge et implémenter cela, je voulais vérifier et découvrir ce que les autres font et quelles sont certaines des meilleures techniques et pratiques pour charger les données en mémoire, en cache, etc. Vous ne devez pas simplement charger le table entière avec des centaines de millions d'enregistrements en mémoire ... ?? Je m'intéressais aussi à l'archivage OLAP/Data, ce qui pourrait nous donner de meilleures performances plutôt que de mettre en cache.

+0

indices? ........ –

+0

une approche d'index seulement ne résout pas notre problème, nous avons déjà des index définis et affinés pour nos requêtes. – ace

Répondre

-3

Nous avons millions et des millions d'enregistrements dans une table SQL,

politique Bad. Les fichiers plats sont meilleurs.

et nous exécutons des analyses très complexes sur ces données pour générer des rapports.

Dans certains cas, vous seriez plus heureux chargé des sous-ensembles pertinents dans SQL.

Comme la table est de plus en plus et les dossiers supplémentaires sont ajoutées, le temps de calcul augmente

C'est la conséquence de l'utilisation d'une base de données trop. Utilisez-le pour moins.

Nous avons pensé à l'aide d'un cache distribué comme AppFabric ...

Peut-être. Les fichiers plats, cependant, sont rapides et plus évolutifs que les SGBDR.

était également à la recherche dans le stockage OLAP/données

de bon plan. Achetez le livre de Kimball immédiatement. Vous n'avez pas besoin de plus de technologie. Vous avez seulement besoin de faire un meilleur usage des fichiers plats en tant que primaire et SQL comme un endroit pour les requêtes ad-hoc (contre des sous-ensembles) pour les utilisateurs.

+3

Je pense que "mauvaise politique, les fichiers plats sont meilleurs." est un peu une déclaration radicale. Pourriez-vous elborate? Il est assez courant de voir 100 millions de lignes dans une table RDBMS, et de le faire fonctionner correctement: les index, le partitionnement, les vues indexées viennent à l'esprit ... –

+1

@Mitch Wheat. Les fichiers plats sont plus simples (et donc plus rapides) que n'importe quel SGBDR. Si les données sont simplement accumulées et ensuite analysées, c'est ce que les fichiers plats sont les meilleurs pour. S'il vous plaît acheter le livre de Kimball. DW est fait plus simplement avec des fichiers plats pour le bulk et SQL pour des requêtes ad-hoc. –

+0

@ S.Lott: J'ai déjà le livre de Kimball. Plusieurs en fait ... –

3

La solution pour les rapports complexes est de pré-calculer, de sorte que vous êtes sur la bonne voie si vous regardez OLAP.

0

Avez-vous envisagé de partitionner votre base de données? Nous faisons cela pour nos plus grandes bases de données. Cela dit, l'utilisation correcte du cache de l'application améliore considérablement les performances de la plupart des applications qui sont lourdes.