Conservation des données en mémoire centrale
-
Avantages :
- Aisé (gestion automatique de la mémoire : allocation et ramasse-miettes)
- Accès en lecture et écriture rapide
-
Inconvénients :
- Mémoire centrale de taille limitée
- Ne survit pas à l'extinction de la machine virtuelle
Persistance des données
Quelques possibilités pour rendre les données persistantes :
-
Stocker les données dans un fichier
-
En utilisant un format personnalisé :
- Binaire
- Textuel
-
En se basant sur un format existant :
- Format XML ou dérivé binaire
- Format JSON
- Format YAML
- Format properties (utile pour les fichier de configuration)
-
En utilisant un format personnalisé :
-
Stocker les données dans une base selon différets paradigmes :
-
En utilisant une base de données relationnelle (accès avec l'API JDBC)
- De type fichier avec un support limité de la concurrence (SQLite)
- Avec une interface de type serveur pour de multiples connexions concurrentes (depuis des clients)
- En utilisant une base de type objet (Db4O, ObjectDB...)
- En utilisant une base NoSQL de type document ou associative clé-enregistrement (CouchDB, MongoDB...)
- En utilisant une base stockant des graphes d'éléments (Neo4J...)
- ...
-
En utilisant une base de données relationnelle (accès avec l'API JDBC)
-
Stocker les objets persistants en utilisant une API d'abstraction
- Java Persistence API de JavaEE permet de manipuler des objets persistants en utilisant une base de données relationnelle classique
Les données peuvent être localisée dans divers lieux :
- Localement (système de fichier interne) : disque dur, SSD (cellules NAND, mémoire 3D XPoint...), stockage en RAM (volatil), répartition des données sur plusieurs supports (RAID)...
-
À distance : sur un ou plusieurs serveurs externes
- Améliore la disponibilité des données par la redondance...
- ... au prix d'une complexité plus importante pour leur gestion (synchronisation des données, détection d'erreurs...)
Stocker des données en Java
- Utiliser des entrées/sorties pour lire et écrire des fichiers, transférer des données via le réseau (en utilisant des flots TCP)
- Convertir des objets Java en flot binaire ou textuel par la sérialisation
- Accéder à des bases de données relationnelles en utilisant l'API JDBC
- Rendre des objets persistants en les stockant dans une base avec Java Persistence API