DNA-Framework – Classe d'abstraction de BDD
Lorsque j’ai décidé de réécrire le DNA-Framework, je ne savais pas vraiment par quoi commencer. Au départ j’ai pensé a commencer par le système de sécurité, mais je me suis rendu compte que l’infrastructure de sécurité dépendait enormément d’une base de donnée pour stocker ses informations.
Il fallait donc que je commence par créer le DAL (Database Abstraction Layer) aussi apellé Couche d’abstraction de base de données.
Pour moi le DAL doit respecter quelques règles : simple d’utilisation, cohérent (dans le sens, il ne doit pas y avoir de différence entre les differents SGBD – Système de Gestion de Base de Données) et ne pas posséder de fonctions inutiles.
La première étape a donc consister à créer une classe générique encapsulant tous les aspects n’étant pas spécifiques à un SGBD. Ainsi naquit la classe dna.database.class. Cela m’as aussi permis de definir le principe de base et la structure des classes héritières.
En parlant justement d’héritage, il y a « seulement » quatres classes héritières : MySQL, PostgreSQL, SQLite 2 et Oracle. Effectivement, cela veux bien dire que le DNA-Framework supportera ces quatres systèmes et probablement plus à l’avenir
Donc brièvement, les classes ont été crées entre Lundi et aujourdhui et permettent de faire :
- Executer des requètes SQL (n’importe quelle requète)
- Faire une selection et naviguer parmis les résultats.
- Exporter vers du SQL ou du CSV le résultat d’une requète.
- Importer depuis du SQL ou du CSV
- Vérifier divers états (requètes / sgbd)
Ci dessous, le même code éxécuté sur les 4 différents systèmes :
MySQL
SELECT * FROM MS_User -> anthony@mysql.com -> toto@mysql.com INSERT INTO MS_User (Email) VALUES ('test@MySQL.com') SELECT * FROM MS_User -> anthony@mysql.com -> toto@mysql.com -> test@MySQL.com DELETE FROM MS_User WHERE Email='test@MySQL.com' SELECT * FROM MS_User -> anthony@mysql.com -> toto@mysql.comPostgreSQL
SELECT * FROM "MS_User" -> Anthony@PostgresQL.com -> toto@postgresql.com INSERT INTO "MS_User" ("Email") VALUES ('test@PostgreSQL.com') SELECT * FROM "MS_User" -> Anthony@PostgresQL.com -> toto@postgresql.com -> test@PostgreSQL.com DELETE FROM "MS_User" WHERE "Email"='test@PostgreSQL.com' SELECT * FROM "MS_User" -> Anthony@PostgresQL.com -> toto@postgresql.comSQLite
SELECT * FROM MS_User -> anthony@sqlite.org -> toto@sqlite.org INSERT INTO MS_User (Email) VALUES ('test@SQLite.com') SELECT * FROM MS_User -> anthony@sqlite.org -> toto@sqlite.org -> test@SQLite.com DELETE FROM MS_User WHERE Email='test@SQLite.com' SELECT * FROM MS_User -> anthony@sqlite.org -> toto@sqlite.orgOracle OCI
SELECT * FROM MS_User -> toto@oracle.com -> Anthony@oracle.com INSERT INTO MS_User (EMAIL) VALUES ('test@Oracle OCI.com') SELECT * FROM MS_User -> toto@oracle.com -> Anthony@oracle.com -> test@Oracle OCI.com DELETE FROM MS_User WHERE EMAIL='test@Oracle OCI.com' SELECT * FROM MS_User -> toto@oracle.com -> Anthony@oracle.com
Comments are closed.