IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Décisions SGBD Discussion :

Base de données optimisée pour coordonnées GPS


Sujet :

Décisions SGBD

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Base de données optimisée pour coordonnées GPS
    Bonjour à tous,

    Je souhaiterai savoir si quelqu'un connaitrais une base de donnée optimisée pour le stockage et la recherche par coordonnées GPS.
    Je souhaiterai que les utilisateurs d'un site puissent connaitre les autres utilisateurs dans leur zone géographique. Pour cela il s'agira pour moi de les géolocaliser et de regarder dans la base de données quels sont les utilisateurs dont les coordonnées sont proches.

    Je souhaiterai donc savoir s'il existe des bases de données pratiques pour ce type de recherche, et si possible en cache.
    SQL ou NoSQL, pas d'importance.

    Merci d'avance.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Des coordonnées GPS, ce sont juste deux données, donc deux colonnes dans une table. N'importe quel SGBDR est capable de stocker ces données.
    Après c'est juste une question de performance s'il y a :
    - des millions d'utilisateurs ;
    - une mise à jour en temps réel des utilisateurs connectés et qui se déplacent.
    Ça veut dire un modèle de données optimisé et un serveur suffisamment dimensionné pour traiter potentiellement des millions de requêtes par minute.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Le mieux est d'utilisé un SGBDR doté d'un SIG intégré; Cela permet d'utiliser des types spécialisés et donc :
    1) d'éviter des erreurs de saisie
    2) d'être performant sur des requêtes "spatiales" (recherche de proximité par exemple).

    Vous pouvez utiliser SQL Server pour de petits (édition Express gratuite) ou gros volume (édition Standard ou Entreprise) et postGreSQL + postGis si volume moyen...

    A me lire : http://blog.developpez.com/sqlpro/p9...on_geographiqu

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Merci pour vos réponses.

    L'une des contraintes est effectivement de pouvoir mettre à jour les données lorsque les coordonnées des utilisateurs changent, et donc potentiellement pas mal de requêtes en vu.

    J'étais assez tenté par une base NoSQL tout en cache de type Redis, réputé pour être rapide. En même temps c'est vrai que PostgreSQL avec le plugin SIG répond bien au besoin (possibilité d'avoir des tables SIG uniquement en RAM également?).

    Quel système permettrai de faire une requête du type :
    "Trouve moi tous les utilisateurs dans un rayon de 20 km autour de ce point" de manière rapide sur plusieurs milliers d'utilisateurs ET permettrai de mettre à jour régulièrement les coordonnées des utilisateurs dans la base de données?

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    SQL Server 2014 propose des tables de type "In Memory".

    Pas testé ce que ça donne, mais c'est assez alléchant, puisque cela permet de gérer les données 100% en mémoire avec possibilité cependant d'instaurer un minimum de sécurité (journalisation à intervalle régulier par exemple, sans pour autant que ce soit obligatoire : ici, les coordonnées GPS des gens ont peu de chance d'avoir une quelconque utilité après un reboot du serveur par exemple).

    L'avantage, c'est qu'on peut faire de vraies requêtes SQL dessus, avec des types spaciaux et toutes les fonctions associées (calculer une distance entre deux points GPS est assez chiant si on n'a pas la formule sous la main), mais aussi la possibilité de faire des transactions dessus, des jointures avec le reste des données qui sont dans des tables "classiques".

    Bref, sans aucun doute une piste à étudier !

    https://msdn.microsoft.com/fr-fr/library/dn133079.aspx

    Bon, le truc (un peu) ballo, c'est qu'il faut une version Entreprise (grmpf)
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Au fait : s'il y a "plusieurs milliers" (et non "plusieurs millions") alors aucun problème pour coller ça dans une base SQL Server Express sans notion de in Memory : aujourd'hui "plusieurs milliers", c'est peanuts même pour un pauvre PC portable. Aucun souci à te faire, à condition d'utiliser un outil qui gère nativement les types spaciaux et les calculs de distance (car c'est là que le bas blesse, à faire des multiplications de sinus par des tangeantes dans tous les sens).
    On ne jouit bien que de ce qu’on partage.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Simvetanylen Voir le message
    Quel système permettrai de faire une requête du type :
    "Trouve moi tous les utilisateurs dans un rayon de 20 km autour de ce point" de manière rapide sur plusieurs milliers d'utilisateurs ET permettrai de mettre à jour régulièrement les coordonnées des utilisateurs dans la base de données?
    les SGBDR que je vous ais donné. Ce type de requête SQL est par exemple le suivant (pour MS SQL Server) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM  MesPointsGPS
    WHERE MaColonneGPS.STDistance('POINT (12.4587 45.8512), 4326') < 50000
    Ce qui signifie, renvoie-moi toutes les lignes de la table, pour lesquelles le point GPS est situé dans un rayon de 50 000 mètres (50 km) en tenant compte de la courbure de la terre en fonction de la référence spatiale 4326 (courbe générique du globe).

    Parfaitement indexée (avec un index spatial https://technet.microsoft.com/en-us/...ql.105%29.aspx), ce genre de requête devrait être très rapide (quelque milliseconde tout au plus) avec plusieurs dizaines de millions de lignes.

    A +

    PS : lisez la référence que je vous ais indiqué dans mon post précédent. Vous y trouverez de nombreuses réponses, y compris à des questions que vous ne vous posez pas encore !!!!
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Messieurs, merci pour vos réponses, je crois qu'avec ça j'ai de quoi faire :-)

    Bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Structure de base de donnée (optimisation?)
    Par juJuv51 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 23/02/2007, 21h05
  2. Réponses: 4
    Dernier message: 20/02/2007, 11h07
  3. Base de données Mysql pour forum
    Par t-die dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 17/11/2006, 09h25
  4. Base de donnée matériel pour linux
    Par joker vb dans le forum Matériel
    Réponses: 9
    Dernier message: 25/09/2006, 15h59
  5. Bases de données utilisées pour ICQ/MSN/PALTALK & Co ?
    Par Mr.KisS dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 01/08/2005, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo