Bases de données persistantes

Voila mon problème : j’aurais besoin d’inclure une librairie de BDD dans une appli (pas de serveur MySQL ou de trucs dans le genre) et je tombe sur certaines bases de données persistantes et d’autre non…

Alors la question : c’est quoi la différence, exactement ?
La non persistante va quand même me sauver mes donnés, hein ?

Merci

Comme ça, à chaud: Je pense que la “non persistante” garde tes données tant que l’appli tourne, quand l’appli finit, au revoir les données.

Dans le monde Java, il y a HsqlDB qui est une base de donnée mémoire (= ca tourne dans le même process que ton application, partage le meme espace mémoire, et donc meurt quand ton application meurt). Elle a 2 modes de fonctionnement :

  • non persistant (par défaut) : qd ton process meurt, les données sont perdues
  • persistant : sauvegarde la base de données dans un fichier à la fin du process

[quote=“molyss, post:1, topic: 30006”]Voila mon problème : j’aurais besoin d’inclure une librairie de BDD dans une appli (pas de serveur MySQL ou de trucs dans le genre) et je tombe sur certaines bases de données persistantes et d’autre non…

Alors la question : c’est quoi la différence, exactement ?
La non persistante va quand même me sauver mes donnés, hein ?

Merci[/quote]

En très gros (énorme même) : une connection persistante ne se déconnecte pas à la fin d’un script, donc au prochain appel à la BDD la même connection est utilisée. Voir par exemple.

Edit : hum, ma réponse ne doit pas correspondre pour des BDD en librairies en fait …

Je pense que le sujet est bien sur les bases de données persistantes, pas sur les connections persistantes. Menfin je me gourre peut-être

merci darkhy, mais je pense aussi que ca marche pas pour les DB en librairie…
En plus, ici ils parlent d’objets persistants…

Sinon, en ce qui concerne les BDD qui ne sont pas marqué comme étant persistantes, certaines demandent un accès en écriture a la BDD…
Alors je vous avoue que je suis royal largué…

Cite nous les BDD en question, on pourra peut-être t’éclairer.

En ce qui concerne les frameworks de persistance dont tu parles, il permettent de persister des objets Java dans une base de donnée ; au sens J2EE ca signifie envoyer des requêtes SQL à un driver JDBC. Donc, peu importe ce qui se passe sous la couche JDBC : que la base soit persistante ou non, il s’agit toujours de persister des objets.

Je suis pas sûr d’avoir été clair ^^

je pense que tu brule, viewww…

en fait, je cherche quelle base de données utilser dans un programme java, et je suis tout naturellement tombé sur Java Sources. Et la, je trouve les “Database Engine”.
Heureux je suis, mais pas pour longtemps… jusqu’à ce que j’atteigne le bas de la page, en fait. Parce que là se trouve un lien vers des “persistent framework”… Alors je me dis qu’il y a des bases de données persistantes et d’autres qui le sont pas.
Et ensuite vient mon message
Et toute l’incompréhension qui va avec…

Donc ma question devient : c’est quoi, les “persistent framework” ? C’est qoui des objets persistants ?A quoi ca sert et tout ca…
Et accessoirement si vous avez desbenchmark sur les BDD java, je suis carrément preneur (mais là, c’est tout a fait facultatif…)

Merci d’avance

Persister = sauvegarder en base (en fait on peut élargir ça à sauvegarder tout court, mais restons sur les bases de données pour l’instant)
Un objet persistant c’est un objet qui va être sauvegardé dans une base de donnée par le biais d’une requête SQL.
Grosso modo, tu as 2 facon de faire dans le monde Java :

  • à la mano : tu exécutes une requete SQL à l’aide de ton driver JDBC
  • avec un ORM

un persistence framework ou ORM (object/relational mapping framework) est un framework capable de générer automatiquement les requêtes SQL pour un objet donné. Par exemple pour Hibernate (le standard en matière d’ORM), tu décris tes « mapping » dans des fichiers XML (tu dis pour chaque attribut de chaque objet, quel est la colonne et la table correspondante) et ensuite tu peux faire un truc du genre hibernateSession.save(monObjet) et hop ton objet est persisté !

Pour répondre à ta question d’origine (quelle base choisir) : je te conseille de partir sur mysql par défaut (pour une application standard, disons). Si vraiment tu n’as que 3 données à persister (genre 2 ou 3 ptites tables) tu peux envisager d’utiliser hsqldb en mode persistant

Apres pour le mode de persistance, si tu as peu d’objets a persister fais ca à la main (ou utilise Spring JdbcTemplate, une classe qui s’implifie l’exécution de requetes SQL à la main). Sinon, pars sur du Hibernate, mais le coût d’apprentissage est plutôt élevé !

Nop j’ai pas ça, désolé …

Bon courage !

Ah bah c’est tout de suite plus clair…
merci viewww pour tes lumières éclairées.
Je pense que comme tu l’qs dit, je vais commencer avec mysql, et après j’essaierais de ma passer de cette dépendance

Tu peux utiliser sql server express en mode desktop (cad sans serveur, avec juste le engine a installer comme dependance) et qui marche directement sur un fichier .db, ca a pas besoin de serveur. En C# je ferais ca sans soucis. Maintenant en Java… ca peut marcher aussi remarque B). Ou alors serializer mes propres objets a la main avec BinarySerializer ou un XmlSerializer tout con si c’est juste quelques objets en read/write.

Comme BD sous forme de librairie plutôt que serveur séparé, il me semble que SQLite pourrait correspondre à ce que tu cherches ;
http://www.sqlite.org/