2010-06-05 13 views
2

J'ai une base de données avec des tables ayant des milliards de lignes dans un seul tableau pendant un mois et j'ai des données pour les 5 dernières années. J'ai essayé d'optimiser les données de toutes les façons possibles, mais la latence ne diminue pas. Je sais qu'il existe des solutions comme l'utilisation de la stratification horizontale et de la stratification verticale. Mais je ne suis pas sûr de toutes les implémentations open source et le temps de développement nécessaire pour faire le changement. Est-ce que quelqu'un a de l'expérience avec l'utilisation de tels systèmes?Alternative à une grande base de données

Merci. Personne ne peut rien suggérer sans un cas d'utilisation

+0

Pourriez-vous décrire le type de données dont vous disposez (quelle est la taille d'une seule ligne) et le nombre de valeurs différentes que chacune des colonnes que vous souhaitez utiliser comme clé peut prendre. –

Répondre

5

Lorsque vous avez des données de type "Sagan-esque", le cas d'utilisation est important car, comme vous l'avez probablement découvert, il n'existe aucune technique "générale" qui fonctionne. Les chiffres sont simplement trop grands. Par conséquent, vous devez être clair sur ce que vous voulez faire avec ces données. Si la réponse est "tout" alors, vous obtenez une performance lente, car vous ne pouvez pas optimiser "tout".

Éditer:

Eh bien, c'est quoi? 2 ou 3? Quelle est la taille des ensembles de résultats? Avez-vous besoin d'accéder à tous les 5 ans ou seulement au dernier mois? Avez-vous vraiment besoin de tous ces détails ou peut-on les résumer? Avez-vous besoin de le trier? Les clés sont-elles suffisantes? À quelle fréquence les données sont-elles mises à jour? À quelle vitesse les données doivent-elles être en ligne une fois qu'elles sont mises à jour? Quel type de niveau de service les données doivent-elles avoir? 24x7x7? 9-5x5? Les données d'un jour sont OK? Qui utilise les données? utilisateurs interactifs? Rapports de lots? Les exportations vers des entités extérieures?

+0

Je souhaite optimiser les performances de lecture en fonction de deux ou trois clés dans la table. – Boolean

+0

"Sagan-esque". Je pense que je devrais utiliser celui-là. –

1

Postgress prend en charge les tables partioning. Si rien d'autre ne lit leur documentation. Réponse Les questions de Hartung aideront-elles beaucoup à trouver une solution.

3

Lire sur l'entreposage de données ...

  1. données de capture dans les fichiers plats. Ne pas charger une base de données.

  2. Concevoir un bon Star Schema architecture.

  3. Écrire des programmes pour faire la conformité dimensionnelle; ces programmes chargeront les changements de dimension uniquement dans une base de données.

  4. Écrire des programmes pour charger des enregistrements de fichiers plats sélectionnés dans un datamart avec une copie des dimensions.

Est-ce pas charge une base de données avec des données brutes. Déjà.

0

Combien de Go de données est-ce? Cela me rappelle l'histoire de LinkIn et comment calculer le réseau social assez rapidement, ils devaient tout gérer en mémoire. StackOver lui-même fonctionne sur un serveur avec beaucoup de mémoire et a la plupart de la base de données en mémoire à tout moment, selon le podcast SO.

Aussi me rappelle le problème de google, qui nécessitait un logiciel personnalisé et des tonnes de machines bon marché travaillant en tandem.