Archives de Tag: DATABASE

Oracle, mais ou sont mes données?

Voici le fruit d’une réflexion personnelle fort instructive. Pour certains, un SGBD permet de stocker des données et la manière n’est pas intéressante. Pour moi, tant que je ne comprends pas, j’ai l’impression de ne pas maîtriser.

Ainsi, je me propose de répondre à une question de base : ‘C’est quoi cette ligne?‘. Chaque ligne est identifiée par un ROWID, donnée unique pour l’ensemble de la base de données. On peut le lire ainsi:

select ROWIDTOCHAR(rowid), t.*
from table_perso t
where rownum < 100;

Le résultat est aussi moche qu’indigeste. Essayons plutôt de le faire décoder par le moteur:

select DBMS_ROWID.ROWID_OBJECT(rowid) « DB OBJECT »,
DBMS_ROWID.ROWID_RELATIVE_FNO(rowid) « DB FILE »,
DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) « DB BLOCK »,
DBMS_ROWID.ROWID_ROW_NUMBER(rowid) « DB ROW »,
t.*
from table_perso t
where rownum < 100;

La c’est bien plus instructif, le résultat désigne la table et le fichier de stockage. On sait donc tout sur cette ligne: comment y accéder et ou elle se trouve. On peut rendre le résultat plus sympa encore; pour obtenir la table, on essaiera :

select *
from user_objects
where DATA_OBJECT_ID=
(
select DBMS_ROWID.ROWID_OBJECT(rowid) « DB OBJECT »
from table_perso t
where rownum = 1
);

On peut faire de même sur le fichier de données; on saura exactement où la ligne est stockée sur le serveur; incroyable, non? Pour ceci, voici la requête:

SELECT *
FROM DBA_DATA_FILES
where FILE_ID in
(
select DBMS_ROWID.ROWID_RELATIVE_FNO(rowid) « DB FILE »
from table_perso t
where rownum = 1
);

Maintenant, on peut imaginer le travail du SGBD. Il transforme l’information contenue dans un gros fichier indigeste en table tout en conservant le lien direct vers chaque ligne d’information. Quand j’exécute une requête, je ne peux qu’admirer le travail du moteur…

Publicités

1 commentaire

Classé dans DATA

Optimisez, bon dieu, optimisez!!!

En surfant sur la toile, j’ai trouvé un petit document concernant l’optimisation de requêtes SQL.

Ce n’est pas une bible, mais il décrit, pour de nombreuses commandes les processus mis en oeuvre, et j’ai bien apprécié.

http://www.cocktail.org/gedfs/courrier/34703/SQL_optimizer.pdf

Poster un commentaire

Classé dans DATA

Mais à quoi peuvent bien servir les normes SQL?

De temps en temps, on entend parler des normes SQL, mais dans la réalité, ces normes paraissent bien théorique voire inutiles.
Néanmoins, voici un exemple ou l’emploi des normes SQL peut permettre d’éviter des situations délicates.

Lors de l’utilisation des ETL, une pléthore de fonctions SQL peut être proposée. Ces fonctions lors de créations de mappings et de transfromations sont très utiles. Néanmoins, un grand nombre de celles-ci sont propriétaires.

En premier lieu, les fonctions propres à l’ETL, seront souvent implémentées par le serveur ETL et ne pourront en aucun cas être confiées au serveur de BDD. D’autres, seront traduites en fonctions BDD, les choix de traduction peuvent être corrects, mais aussi surprenants, voire pénalisants. Ils resteront propres à l’ETL et vous ne serez pas maitre de ceux-ci.

Ensuite, les fonctions propres à la BDD, peuvent être mises en oeuvre directement sur le serveur BDD; l’ETL soumettra une requête optimisée et efficace pour votre base. Ainsi, une commande peut récupérer des données agrégées depuis la base de données, alors que l’utilisation de fonctions d’agrégation preopres à l’ETL forcerait le rapatriment de toutes les données avant de faire l’agrégation.

Par contre, dans le cas de l’utilisation de fonctions SQL standards, un avantage supplémentaire peut être tiré. En cas de migration de base de données, l’ETL propose surement des drivers ODBC adaptés. Les fonctions utilisables sans opérations de maintenance sot les foctions propriétaire ETL et les fonctions standard SQL. Les fonctions propriétaires BDD sont à migrer.

Ainsi, le choix du type de fonction utilisées lors de l’implémentation sera déterminant pour les futures optimisations et migrations. Le plus maléable est de se conformer aux normes SQL.
Donc l’utilisation des normes peut être un atout lors de l’implémentation d’un process d’alimentation.

Poster un commentaire

Classé dans DATA, ETL