2011-11-25 4 views
0

Nous avons un travail SQL analytique par lots - exécuté une fois par jour - qui lit les données de 2 tables source conservées dans un SGBDR puissant. Les tables source sont énormes (> 100 To) mais ont moins de 10 champs combinés. La question que je me pose est que les 2 tables sources peuvent être conservées dans un fichier plat compressé et indexé, de sorte que toute l'opération peut être beaucoup plus rapide et économiser sur le stockage et peut être exécutée sur un serveur à basse spécification. Aussi, pouvons-nous exécuter des requêtes SQL sur ces fichiers plats compressés et indexés? Toute indication sur la façon de s'y prendre serait extrêmement utile.fichiers à plat indexés

+0

SQLite utilise un seul fichier plat portable pour stocker les objets d'une base de données unique. Il supporte les index et une interface SQL. Mais la taille maximale de la base de données allowd est seulement de 14 To. – Raihan

+0

Vous pouvez utiliser des fichiers texte basés sur JSON ou YAML pour stocker vos tables. La taille maximale du fichier peut être aussi grande que votre système d'exploitation le permet. Il y a Java/Ruby et beaucoup d'autres interfaces de programmation pour JSON et YAML. Mais je ne pense pas que les impements supportent encore l'indexation. Et il n'y a pas d'interface SQL. – Raihan

Répondre

1

La plupart des stratégies d'optimisation optimisent la vitesse ou la taille, et échangent les uns contre les autres. En général, les solutions de SGBDR optimisent la vitesse, au détriment de la taille, par exemple en créant un index, en prenant plus de place et, en retour, en accélérant l'accès aux données.

Il est donc peu probable que vous souhaitiez optimiser à la fois la vitesse et la taille - vous devrez presque certainement échanger les unes contre les autres. Deuxièmement, si vous voulez exécuter des requêtes de type «sql-like», je suis à peu près certain qu'un SGBDR est la meilleure solution, en particulier avec d'énormes ensembles de données. Il se peut que les données sous-jacentes se prêtent à une optimisation spécifique - par exemple, si vous pouvez créer un schéma d'indexation personnalisé basé sur des masques binaires pour créer des entiers et utiliser ces entiers pour accéder aux données à l'aide d'opérateurs booléens, peut être en mesure de battre les performances d'un indice SGBDR.

+0

Merci Neville. Les requêtes "sql like" permettent d'évaluer si nous pouvons réutiliser nos jobs SQL existants par rapport à un fichier plat indexé mais pas trop important. Le point principal est de savoir comment créer de tels fichiers plats indexés et compressés. – user1065024