java et les bases de données

38
Java et les bases de données Etat de l’art 14 juin 2012

Upload: guillaume-harry

Post on 19-Jun-2015

1.726 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Java et les bases de données

Java et les bases de donnéesEtat de l’art

14 juin 2012

Page 2: Java et les bases de données

P. 2

Guillaume HARRY l ARESU

ARESU (Architectures, réseaux, Expertise & Support aux unités) Appui et accompagnement des projets Veille technologique Capitalisation des compétences techniques Participation aux communautés informatique

Guillaume HARRY 11 ans d’expérience en tant que DBA 7 ans d’expérience en J2E

Expertise accès aux données

Responsable des cellules « Bases de données » et « Gestion des identités »

Participation à la cellule « Développement » Étude sur les failles de sécurité des applications Web

https://aresu.dsi.cnrs.fr/IMG/pdf/failles_de_securite_v1-3.pdf

Page 3: Java et les bases de données

P. 3

Guillaume HARRY l ARESU

SOMMAIRE

1. Introduction

2. Bases de données relationnelles

3. La mouvance NoSQL

4. Conclusion

Page 4: Java et les bases de données

P. 4

Guillaume HARRY l ARESU

1. INTRODUCTIONJava et la sérialisation

Page 5: Java et les bases de données

P. 5

Guillaume HARRY l ARESU

1. Introduction : Java et la sérialisation

Modèle en couche L’interface graphique ne doit pas manipuler directement

les données stockées La couche d’accès aux données doit être la seule

responsable de la sérialisation des objets métiers

Qu’est-ce que la sérialisation ? Rendre les objets persistants Ecrire des données présentes en mémoire vers un flux

de données binaires

Page 6: Java et les bases de données

P. 6

Guillaume HARRY l ARESU

1. Introduction : Java et la sérialisation

Développement spécifique

XML Structure le contenu Pas de véritable outil de gestion des données

SGBDOO Outil idéal mais ne s’est pas imposé

NoSQL Outil idéal pour un besoin bien défini Pas de standards (langage, interface d’accès)

Conclusion SGBD Relationnel reste un standard

Page 7: Java et les bases de données

P. 7

Guillaume HARRY l ARESU

1. Introduction : Java et la sérialisation

Pour les bases de données relationnelles Standard d’accès : JDBC Langage SQL largement répandu

Maintenance couteuse SQL propre à chaque SGBDR Besoin de redévelopper les frameworks de gestion des

accès Développement spécifique au SGBDR utilisé

Page 8: Java et les bases de données

P. 8

Guillaume HARRY l ARESU

1. Introduction : Java et la sérialisation

JDO (JSR243) Interface standard pour la sérialisation Indépendance vis-à-vis de la solution de stockage Trop complexe à mettre en œuvre Peu d’implémentations

Page 9: Java et les bases de données

P. 9

Guillaume HARRY l ARESU

2. BASES DE DONNÉES RELATIONNELLES

1. Besoins

2. ORM

3. JPA

4. Les limites

Page 10: Java et les bases de données

P. 10

Guillaume HARRY l ARESU

2.1 Bases de données relationnelles : Besoins

Faciliter le développement de la couche DAO

Ne pas gérer les accès à la base de données

Automatiser la corrélation Objet ↔ Base de données

Page 11: Java et les bases de données

P. 11

Guillaume HARRY l ARESU

2. BASES DE DONNÉES RELATIONNELLES

1. Besoins

2. ORM1. Modèle

2. Exemple avec Hibernate

3. JPA

4. Limites

Page 12: Java et les bases de données

P. 12

Guillaume HARRY l ARESU

2.2 Bases de données relationnelles : ORM

Objectifs Faciliter Ne pas gérer Automatiser

Modèle

Implémentations Java Hibernate (Jboss) TopLink (Oracle) MyBatis (mapping par requête et non par table)

Page 13: Java et les bases de données

P. 13

Guillaume HARRY l ARESU

2.2 Bases de données relationnelles : ORM

Exemple avec Hibernate Configuration

1 fichier de configuration Hibernate (hibernate.cfg.xml)

Déclaration de l’entité

Page 14: Java et les bases de données

P. 14

Guillaume HARRY l ARESU

2.2 Bases de données relationnelles : ORM

Exemple avec hibernate Mapping

1 fichier de description XML (classe.hbm.xml) par classe

Page 15: Java et les bases de données

P. 15

Guillaume HARRY l ARESU

2.2 Bases de données relationnelles : ORM

Exemple avec Hibernate Outil

Hibernate Tools pour faciliter la génération JavaXML et SGBDRJava

Gestion des accès au SGBDR

Page 16: Java et les bases de données

P. 16

Guillaume HARRY l ARESU

2.2 Bases de données relationnelles : ORM

Exemple avec Hibernate Gestion des accès au SGBDR

• 1 classe HibernateUtil pour obtenir une session dans la base de données

• Génération automatique des ordres SQL

Page 17: Java et les bases de données

P. 17

Guillaume HARRY l ARESU

2. SÉRIALISER DANS UN SGBDR

1. Besoins

2. ORM

3. JPA1. Modèle

2. Exemple

4. Limites

Page 18: Java et les bases de données

P. 18

Guillaume HARRY l ARESU

2.3 Bases de données relationnelles : JPA

Objectifs Bénéficier des avantages des frameworks ORM Indépendance du framework utilisé Langage standard JP-QL (inspiré de HQL)

Modèle

Implémentations Java Hibernate (Jboss) TopLink (Oracle) EclipseLink (Fondation Eclipse) DataNucleus Access Platform

Page 19: Java et les bases de données

P. 19

Guillaume HARRY l ARESU

2.3 Bases de données relationnelles : JPA

Exemple Configuration

1 fichier de description • Contexte de persistance• Déclarations des classes

Permet de faciliter la gestion des contextes de test

Déclaration de l’entité

Page 20: Java et les bases de données

P. 20

Guillaume HARRY l ARESU

2.3 Bases de données relationnelles : JPA

Exemple Mapping

Déclaration de l’entité

Déclaration de l’identifant

Page 21: Java et les bases de données

P. 21

Guillaume HARRY l ARESU

2.2 Bases de données relationnelles : JPA

Exemple Outil

Plugin Eclipse inclus dans Eclipse WTP

Gestion des accès au SGBDRAvec Hibernate

Page 22: Java et les bases de données

P. 22

Guillaume HARRY l ARESU

2.2 Bases de données relationnelles : JPA

Exemple avec Hibernate Gestion des accès au SGBDR

• Avec Hibernate• Génération automatique des ordres SQL

Page 23: Java et les bases de données

P. 23

Guillaume HARRY l ARESU

2. SÉRIALISER DANS UN SGBDR

1. Besoins

2. ORM

3. JPA

4. Limites

Page 24: Java et les bases de données

P. 24

Guillaume HARRY l ARESU

2.4 Bases de données relationnelles : Limites

Complexité du modèle Implémentation des associations Implémentation de l’héritage

• 1seule table, somme de tous les attributs des classes filles (par défaut)• 1 table par classe

Persistance par transitivité

Performances

Comment faire avec des données non structurées ?

Page 25: Java et les bases de données

P. 25

Guillaume HARRY l ARESU

3. LA MOUVANCE NOSQL

1. Technologies

2. Limites

3. Et JPA alors?

Page 26: Java et les bases de données

P. 26

Guillaume HARRY l ARESU

3.1 NoSQL : Technologies

Not Only SQL

Répondre aux besoins Explosion du volume de données (Big Data) Données non structurées Gestion des relations entre les données

Page 27: Java et les bases de données

P. 27

Guillaume HARRY l ARESU

3.1 La mouvance NoSQL : Technologies

Clé-valeur Données représentée par couple clé/valeur Accès rapides Type de données simples Exemple :

stockage de résultats d’expérience, statistiquesSystème de cache

ImplémentationsVoldemort (LinkedIn)RedisRiakMySQL Cluster 7.2

Clé 1

Clé 2

Clé 3

valeur

valeur

valeur

Page 28: Java et les bases de données

P. 28

Guillaume HARRY l ARESU

3.1 La mouvance NoSQL : Technologies

Orientée document Ensemble de clés-valeurs stockées dans un document Données semi-structurées Pas de support des transactions Exemple :

Catalogue de produitsCMS

ImplémentationsMongoDBCouchDBOrientDB

Clé 1

Clé 2

Clé 3

DocumentChamp 1 valeur

Champ 2 valeur

Champ 3 valeur

Champ 4 valeur

Document

Champ 1 valeur

Champ 2 valeur

Document

Champ 1 valeur

Champ 2 valeur

Champ 3 valeur

Page 29: Java et les bases de données

P. 29

Guillaume HARRY l ARESU

3.1 La mouvance NoSQL : Technologies

Orientée colonne Contrairement aux SGBDR,

colonnes différentes pour chaque ligne Ecritures rapides Evite des colonnes à NULL Exemple

Stockage de journaux d’activité

ImplémentationHbaseCassandraBigTable (google)

SuperColonneSuperColonne

Nom CNRS

ValeurColonne

Nom Organisme

Valeur CNRS

Colonne

Nom Secteur

Valeur public

Page 30: Java et les bases de données

P. 30

Guillaume HARRY l ARESU

3.1 La mouvance NoSQL : Technologies

Orientée graphe Information représentée par des nœuds et des relations

entre nœuds Accès aux données par les liaisons Exemple :

Réseaux sociaux

ImplémentationNeo4jHypergraphDBFlockDBOrientDB

Nœud Champ 1 valeur

Champ 2 valeur

Champ 3 valeur

Champ 4 valeur

Nœud

Champ 1 valeur

Champ 2 valeur

Nœud

Champ 1 valeur

Champ 2 valeur

Champ 3 valeur

ArcLibellé : apprend

ArcLibellé : connait

Page 31: Java et les bases de données

P. 31

Guillaume HARRY l ARESU

3.1 La mouvance NoSQL : Technologies

Choix de la technologie dépend du besoin, pas du volume à gérer

Ne sont pas NoSQL Orientées objet Hierarchique Datagrids (hors clé-valeur)

Page 32: Java et les bases de données

P. 32

Guillaume HARRY l ARESU

3. LA MOUVANCE NOSQL

1. Technologies

2. Limites

3. Et JPA alors?

Page 33: Java et les bases de données

P. 33

Guillaume HARRY l ARESU

3.2 La mouvance NoSQL : Limites

NoSQL est encore récent

Pas de solution idéale

Théorème CAP Cohérence Availability Partition tolerance

Chaque client peut toujours lire

et écrire

Chaque client a la même vue de

chaque donnée à tout instant

Le système fonctionne malgré la

partition physique des données

Systèmes CP Systèmes AC

Systèmes AP

Page 34: Java et les bases de données

P. 34

Guillaume HARRY l ARESU

3. LA MOUVANCE NOSQL

1. Technologies

2. Limites

3. Et JPA alors ?

Page 35: Java et les bases de données

P. 35

Guillaume HARRY l ARESU

3.3 La mouvance NoSQL : Et JPA alors?

OrientDB est nativement écrit en JPA

Datanucleus : JPA et JDO pour accès SGBDR, MongoDB, Hbase, LDAP, Excel, XML …

Page 36: Java et les bases de données

P. 36

Guillaume HARRY l ARESU

4. CONCLUSION

Page 37: Java et les bases de données

P. 37

Guillaume HARRY l ARESU

Conclusion

JPA et ORM Orientés CRUD Tuning complexe dépendant du framework Moins performants que des accès bas niveau

NoSQL Ne remplace pas SGBDR Administration/exploitation non triviale

Page 38: Java et les bases de données

Java et les bases de donnéesEtat de l’art

14 juin 2012