Partage
  • Partager sur Facebook
  • Partager sur Twitter

Choisir le type de base de donnees

    30 juillet 2010 à 14:57:56

    Bonjour,

    Je travaille sur un projet qui manipule d'importantes quantites de donnees routieres ( openstreetmap )
    Jusqu'a 300 Mo par departement francais et 6-7 Go au niveau national.

    Je voudrais votre avis pernosel sur quel type de base do donnees je dois utiliser pour etre perfomant au maximum ?

    Je suis entre PostreSQL, SQLite et MySQL. Mais je sens que je doi ecarter MySQL qui semble etre faible face a de grosses donnees.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2010 à 15:28:25

      à mon stage on a importé une base avec des tables contenants chacune environs 10k/20k d'entrées, c'est passé comme une lettre à la poste et tout ça sous MySql.

      Par contre on vais tous parier que ça passerai pas. On a bien été surpris.

      Après niveau rapidité, je ne serai pas te dire laquel est la meilleure.
      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2010 à 16:21:32

        Déjà tu peux virer SQLite qui est plus approprié pour les petites applications en stockant les données dans un fichier en local.
        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2010 à 16:44:54

          SQLite, pas fait pour.

          Comme tu as des données géométriques et que le support géométrique est :
          - excellent sous postgres
          - nul sous MySQL

          Le choix est vite fait !...
          • Partager sur Facebook
          • Partager sur Twitter
            30 juillet 2010 à 19:31:09

            Oui certe ce sont des donnes geometriques mais je n'utilise aucune fonction geometrique. Je vous uniquement d'un point de vue performance et non fonctionel..
            • Partager sur Facebook
            • Partager sur Twitter
              30 juillet 2010 à 19:32:49

              T'as quand même l'intention de demander à la BDD les formes géométriques qui se trouvent par exemple dans un rectangle donné, non ? Ou tu comptes récupérer la table entière à chaque fois ?
              • Partager sur Facebook
              • Partager sur Twitter
                30 juillet 2010 à 20:20:29

                Non je demande pas les formes geometriques. C'est pour en effet recuperer la table entiere pour creer le graphe en memoire et calculcer des itineraires.
                • Partager sur Facebook
                • Partager sur Twitter
                  30 juillet 2010 à 20:48:00

                  Dans ce cas je me demande pourquoi tu utilises une BDD...

                  Quel langage le programme ?

                  Je suppose que tu charges les données en RAM une fois au démarrage du programme et que tu t'en sers pour répondre à plusieurs requêtes non ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 juillet 2010 à 21:25:15

                    J'utilise une BDD car j'importe egalement des donnes de transport publiques ( GTFS :Google Transit Feed Specification ), et des donnes retournees par des API pour les stations velib. C'est un calculateur d'itineraires mutli-modales et multi-objectifs
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 juillet 2010 à 23:12:09

                      Ah c'est tout à fait excellent comme projet ça ! Je fais du vélo et j'utilise tout le temps le GPS, c'est très pratique. Si tu pouvais faire un calcul d'itinéraire moins con que garmin qui m'envoie sur l'autoroute quand je suis en vélo et dans la rivière quand je suis en voiture, ce serait tip top.

                      Même si tu dis que tu ne vas pas trop utiliser la BDD, je te conseille quand même postgres, pour les raisons suivantes :

                      - c'est quand même beaucoup plus pratique et puissant que mysql
                      - il me semble que OSM utilise pas mal python et python s'interface beaucoup mieux avec postgres (psycopg2)
                      - même si tu dis que tu le feras pas, à un moment donné tu auras quand même besoin d'un index sur des coordonnées, ne serait-ce que pour afficher des marqueurs dans une carte google maps


                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 juillet 2010 à 23:41:59

                        Effectivement mon interface est en python (mais plus exactement, python s'interface lui-meme avec ma librairie, developpee en c++ qui fait reelement les calculs de graphes, grace a swig ).
                        En python j'utilise un outil d'abstraction de la base de donne et qui fait ORM a la fois. Donc je peux l'tuliser sur n'importe quelle base. Meme avec Oracle..

                        SQLiTE gere egalement les index il me semble.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 juillet 2010 à 0:25:16

                          Quand je parlais d'index, c'est d'index 2D sur des opérations genre "intersection géométrique" (très pratique avec postgres, pour obtenir les points qui sont dans une box par exemple).
                          • Partager sur Facebook
                          • Partager sur Twitter
                            31 juillet 2010 à 14:31:34

                            Voici un test de performance :
                            L'analyse des donnees d'un fichier OSM, le traitement ( ignore des donnees inutiles telle que le countour des maisons etc.. ) et l'ajout des donnees utiles dans la base.
                            Sur un serveur ubuntu avec un Intel Core Duo 1.67 Ghz et 2 Go de Ram voici les resultats pour un fichier OSM de 50 Mo
                            PostgreSQL: 05m51s
                            SQLite: 02m37

                            :)

                            • Partager sur Facebook
                            • Partager sur Twitter
                              31 juillet 2010 à 15:40:34

                              En gros dans ton benchmark y'a que des INSERT ? (d'ailleurs, combien ?)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                1 août 2010 à 1:51:26

                                Oui que des Insert.
                                Environ 50000 insertions
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 août 2010 à 3:00:09

                                  50.000 pour 6 minutes, c'est très lent dis donc, aurais-tu oublié de grouper les insert dans la même transaction ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Choisir le type de base de donnees

                                  × 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