Partage
  • Partager sur Facebook
  • Partager sur Twitter

Base de données orientée objet

Quel est votre avis ?

    15 juin 2011 à 0:40:50

    Bonjour !
    J’aimerais avoir l’avis des personnes qui ont déjà utilisé des sgbdd orientée objet, s’il vous plaît.
    Comment trouvez-vous cela ?
    Est-ce fiable ?
    Est-ce performant ?

    Avez-vous déjà utiliser db4o ?
    En connaissez-vous un bon, gratuit, utilisable en C++ ?

    Merci d’avance pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      15 juin 2011 à 13:47:56

      Je pense que tu parles des SGBDRO.

      Comment trouvez-vous cela ?
      C'est plutôt pas mal, à savoir qu'on prend un petit peu plus de temps à s'adapter si on vient d'une base de données tel que MySQL ou Access, parce que ces outils ont une apparence plus "pro".

      Est-ce fiable ? / Est-ce performant ?
      Je dirais que oui, vu que ce sont les bdd les plus puissants existants qui font du SGBDRO.

      Avez-vous déjà utiliser db4o ?
      Jamais utilisé db4o.

      En connaissez-vous un bon, gratuit, utilisable en C++ ?
      Un SGBDRO gratuit oui -> PostgreSQL, "bon" en tant que SGBDRO je ne sais pas, bon en tant que BDD gratuit OUI.
      Qu'entends tu par utilisable en C++ ? Si c'est pour créer des fonctions internes dans la base de données non (sauf en C, qui n'est pas du C++ attention, pour PostgreSQL).
      Sinon, si c'est pour programmer des applications EN C++, tu dois aller sur le site de chaque fournisseur pour télécharger l'API C++ qui est spécifique à leur base de données.
      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2011 à 19:05:42

        Je me suis peut-être mal exprimé, mais je voulais parler de SGBDOO et non de SGBDRO.
        Quoi que je suis tout de même intéressé par ce dernier.

        Pour ce qui est de PostgreSQL, étant donné que c’est un SGBDRO, il est possible de stocké les données comme si c’était des objets.
        À quoi ressemble une requête d’objets avec PostgreSQL ?
        Quel langage est utilisé pour faire ce type de requête (à la place de SQL) ?

        J’ai déjà utilisé PostgreSQL de façon relationnelle et je n’ai pas trouvé beaucoup d’informations sur la façon de l’utiliser de façon objet.

        Merci d’avance pour vos réponses.
        • Partager sur Facebook
        • Partager sur Twitter
          15 juin 2011 à 19:44:22

          Et bien je dois peut-être ne pas vraiment savoir ce qu'est une base de données orienté objet alors.

          Es-tu sur que SGBDOO et SGBDRO sont 2 choses différents ?
          As-tu déjà vu une base de données avec des classes ?

          ex:
          CREATE OR REPLACE CLASS ...
          


          Moi je suis quasiment sur qu'on parle de la même chose.
          Pour moi avec une SGBDRO :
          - Une base -> une classe.
          - Une fonction ou procédure -> une méthode.

          Après il faut demander aux pros parce que je n'ai pas le niveau et je ne peux pas te prouver ce que j'avance, désolé.


          Sinon :

          Citation : antoyo

          il est possible de stocké les données comme si c’était des objets.


          Ce que tu dis là semble être une affirmation (tu es sur de ce que tu dis là ? :euh: ).

          Jusqu'à aujourd'hui j'ai juste inséré des données de type entier, texte et date.
          Ensuite insérer un objet c'est comme insérer une multitude d'information (un objet peut contenir plusieurs attributs) dans un champ... est-ce tu penses qu'un objet est une information exploitable ?

          • Partager sur Facebook
          • Partager sur Twitter
            17 juin 2011 à 0:43:59

            Citation : guk92

            Es-tu sur que SGBDOO et SGBDRO sont 2 choses différents ?


            Oui, après des recherches sur Internet, j’ai eu la confirmation que ce sont deux choses différentes.

            Citation : guk92

            As-tu déjà vu une base de données avec des classes ?


            Non, mais j’en ai entendu parler.

            Citation : guk92

            Ce que tu dis là semble être une affirmation (tu es sur de ce que tu dis là ? :euh: ).


            Je crois, donc je ne suis pas sûr, que les SGBDOO utilisent des classes plutôt que des tables.

            J’ai pu trouvé des exemples de l’utilisation de l’OQL :
            Create Type Person (
              Name		char(20),
              Age		integer
              Address	address)
            

            Select Name(p), State(Address(p)
            for each Person p
            where Age(p) > 21
            

            Ça ressemble beaucoup au SQL.
            Est-ce le langage utilisé dans PostgreSQL pour l’utilisation de classes ?

            Je croyais qu’il fallait une bibliothèque pour un langage précis, mais avec le OQL, je n’en suis plus sûr.

            J’ai vu dans un PowerPoint, le tableau suivant :
            OQL SQL
            Object Tuple
            Collection of objects Table


            Je vais essayer db4o en Java pour en savoir plus sur les SGBDOO, car je n’ai pas pu trouver les réponses à mes questions sur Internet.
            De plus, il ne semble pas y avoir beaucoup de SGBDOO qui ne sont pas commerciaux.
            • Partager sur Facebook
            • Partager sur Twitter
              17 juin 2011 à 13:43:53

              L'exemple suivant :
              Create Type Person (
                Name		char(20),
                Age		integer
                Address	address)
              


              Ressemble plus à une structure (en C par exemple) qu'à une classe.

              L'exemple suivant :
              Select Name(p), State(Address(p)
              for each Person p
              where Age(p) > 21
              

              Est du langage structuré (il pourrait appartenir à n'importe quelle base de données où il serait possible de construire une procédure), cet extrait ne prouve pas qu'il s'agit d'un contenu de classe.


              Le tableau suivant :
              OQL                        SQL
              -----------------------------
              Object                         Tuple
              Collection of objects         Table

              Je ne connais pas les tuples, mais voici un descriptif de ce que c'est : lien

              Ce serait une liste d'élément, donc un type de données comparable à une collection d'objet en Java (ou autre langage de programmation) peut-être.

              Dans le tableau ils disent qu'un tuple est un objet et qu'une table est une collection d'objet.
              J'en déduis donc qu'un tuple est l'équivalent d'une table dans une autre table, donc une colonne qui peut contenir un élément contenant plusieurs éléments (et pas forcément du même type), d'où la structure (Create Type) qui contient plusieurs éléments.




              • Partager sur Facebook
              • Partager sur Twitter
                18 juin 2011 à 0:33:28

                J’ai essayé db4o est c’est vraiment tel que je me représentais un SGBDOO.

                On crée une classe Java :
                /**
                 * @brief La classe Pilote représente un pilote de Formule 1.
                 */
                public class Pilote {
                    private String nom;
                    private int points;
                    
                    public Pilote(String nom, int points) {
                        this.nom = nom;
                        this.points = points;
                    }
                    
                    public int getPoints() {
                        return this.points;
                    }
                    
                    public void ajouterPoints(int points) {
                        this.points += points;
                    }
                    
                    public String getNom() {
                        return this.nom;
                    }
                    
                    public String toString() {
                        return this.nom + "/" + this.points;
                    }
                }
                

                Ensuite, on peut ajouter un objet dans la bdd :
                import com.db4o.Db4oEmbedded;
                import com.db4o.ObjectContainer;
                import com.db4o.ObjectSet;
                import java.util.List;
                
                public class Ch2 {
                    public static void main(String[] args) {
                        ObjectContainer bdd = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "pilote.db4o");
                        
                        try {
                            //Création d’un pilote.
                            Pilote pilote1 = new Pilote("Michael Schumacher", 100);
                            //Ajout dans la bdd.
                            bdd.store(pilote1);
                            System.out.println("Le pilote " + pilote1 + " a été enregistré.");
                        }
                        finally {
                            bdd.close();
                        }
                    }
                    
                    public static void listerResultats(List<?> resultats) {
                        System.out.println("Nombre de résultats : " + resultats.size());
                        for(Object o : resultats) {
                            System.out.println(o);
                        }
                    }
                }
                

                On peut obtenir tous les objets de manière simple :
                ObjectSet resultats = bdd.queryByExample(Pilote.class);
                

                On peut sélectionner les pilotes selon certains critères :
                Pilote proto = new Pilote("Michael Schumacher", 0);
                ObjectSet resultat = bdd.queryByExample(proto);
                

                On peut mettre à jour un objet avec la méthode store() (également utilisée pour l’ajout comme vu précedemment).
                Enfin, on peut supprimer un objet avec delete().

                C’est de ce genre de SGBD que je voulais avoir des commentaires.

                Est-il possible d’utiliser un code semblable, sans utiliser un ORM, avec PostgreSQL (ou avec tout autre SGBDRO) ?
                Merci d’avance pour vos réponses.
                • Partager sur Facebook
                • Partager sur Twitter
                  20 juillet 2011 à 10:29:02

                  Bonjour,

                  J'en reviens à ta question initiale sur les SGBDOO : "En connaissez-vous un bon, gratuit, utilisable en C++ ?"

                  J'ai plus ou moins la même problématique, si ce n'est que "pas trop cher" à la place de "gratuit" pourrait me convenir également.

                  Durant mes recherches, j'ai vu :
                  - GOODS : ne semble reposer que sur un développeur, pas adapté à ma problématique ;
                  - MATISSE : est utilisé par de gros industriels, il existe une version gratuite pour les développeurs.
                  - d'autres.

                  As-tu avancé dans tes recherches de ton côté ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 juillet 2011 à 13:05:20

                    Non.
                    Finalement, je n’en ai plus besoin pour mon projet.

                    Peut-être en trouveras-tu une ici.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Base de données orientée objet

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown