Mes chers amis DBA, le temps est venu pour nous de nous réconcilier avec nos amis développeurs !
Combien de fois avons-nous eu des mails ou des appels de développeurs nous indiquant qu’il y avait un problème avec l’auto-incrémentation d’une table qui ne fonctionnait pas ?
Combien de tragédies grecques autour du bien-fondé des séquences ?
Et bien grâce à la 12c, plus de problèmes, tout le monde sera heureux !
Séquences ou colonnes IDENTITY, tout est possible !
Comment l’implémenter ?
Et bien de la façon la plus « simple » du monde :
GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] AS IDENTITY [ ( identity_options ) ]
Mais qu’est-ce que c’est que tout ça ?
Tout simplement, l’implémentation de l’auto-incrément par Oracle.
Mettons-nous en situation, créons une table, une colonne ID, sa séquence et insérons-y des lignes :
CREATE TABLE test_pgr (ID NUMBER(4)); CREATE SEQUENCE test_pgr_seq; BEGIN FOR i IN 1..2000 LOOP INSERT INTO test_pgr VALUES (test_pgr_seq.nextval); END LOOP; commit; END; /
Nous voici donc avec une table remplie de nos différentes valeurs, générées par une séquence… tellement Oracle 11g R2 tout ça…
Faisons pareil en Oracle 12c :
CREATE TABLE test_pgr_identity (id NUMBER GENERATED BY DEFAULT AS IDENTITY, chaine VARCHAR2(30)); BEGIN FOR i IN 1..2000 LOOP INSERT INTO test_pgr_identity (description) VALUES ('Ligne : ' || i); END LOOP; commit; END; / DROP TABLE test_pgr_identity PURGE; DROP TABLE test_pgr PURGE;
L’utilisation est extrêmement simple et devra convenir à tous.
En revanche, si l’on regarde sous le capot, on s’aperçoit qu’en réalité, le moteur Oracle ne fait que créer une séquence sous-jacente et l’appel via trigger lors d’une insertion.
Mais, comment peut-on générer des tests d’insertion en masse ?
Je vous propose justement de regarder Gatling ! Non, ce n’est pas une arme… quoi que…
Cet outil, opensource, va nous permettre de créer des appels à des WebServices de façon très simple.
Etant donné le rapprochement que j’ai pu effectuer avec mes amis développeurs grâce aux colonnes en auto-incrément, je vous proposerai sous peu un article vous permettant de faire des tirs de performances sur une base de données Oracle à travers un WebService Java.
Le script SCALA, utilisé par Gatling, nous permettra de faire des appels rapides et efficaces.
A très bientôt !