web-dev-qa-db-fra.com

Meilleures méthodes pour collecter les entrées d'utilisateurs localisées

Je travaille sur un site Web où les utilisateurs pourront s'inscrire et fournir des informations sur leur emplacement. Afin d'empêcher les utilisateurs de saisir des données incorrectes, nous ne souhaitons pas qu'ils fournissent des informations en texte libre, mais choisissent autant que possible des valeurs prédéfinies. Nous pensons qu'il existe deux manières de fournir ces valeurs: utilisez un API à un fournisseur de services externe ou créez votre propre local database.

Apis

Quelques ressources:
- https://developers.facebook.com/docs/reference/ads-api/get-autocomplete-data/
- http://developer.yahoo.com/geo/geoplanet/

Avantages:
- exactitude et exhaustivité des données.
- pas de maintenance liée à la mise à jour des données, car elle est prise en charge par le fournisseur d'API.
- plus facile/plus rapide à démarrer (nul besoin de créer une base de données locale, il suffit d'implémenter une API).

Inconvénients:
- dégradation des performances en cas de problèmes de disponibilité avec une API externe.
- panne due à des modifications de l'API externe (jusqu'à ce que votre code soit mis à jour pour refléter ces modifications).
- connexion au fournisseur externe.

Base de données locale

Quelques ressources:
- http://developer.yahoo.com/geo/geoplanet/data/
- http://www.maxmind.com/app/geolitecity
- http://download.geonames.org/export/dump/

Avantages:
- pas de dépendance externe: amélioration de la stabilité et des performances.

Inconvénients:
- plus de travail à faire (vous devez créer la base de données et le code pour interagir avec elle).
- risques de données inexactes/incomplètes, initialement ou dans le temps.
- davantage de travaux de maintenance pour maintenir la base de données à jour.

En supposant que les informations de profondeur demandées aux utilisateurs se présentent comme suit:
- pays: intéressé par la valeur. également utilisé pour réduire la liste des régions.
- région (État aux États-Unis, comté au Royaume-Uni ...): pas intéressé par la valeur elle-même, uniquement utilisé pour réduire bas la liste des villes.
- ville: intéressée par la valeur (qui peut être utilisée pour élaborer une région connexe si nous avons besoin de statistiques régionales).
- adresse : intéressé par la valeur bien que FACULTATIF.

Quelle option (que ce soit API ou local database) choisiriez-vous? Quels conseils donneriez-vous pour la mise en œuvre? Quelles autres ressources pouvez-vous partager?

2
Max

Bien que mon adresse IP soit dynamique (DHCP), elle n’est jamais précise dans ma ville. Parfois, la ville peut être distante de 100 km. Si votre application force les utilisateurs vers cette ville, vous aurez un taux de rebond élevé.

Le mieux est d’utiliser la base de données MaxMind IP to Country qui est stockée localement et est plus rapide que les API. Rassembler le pays de l'IP en coulisse ne force pas l'utilisateur à le fournir. Ensuite, rassemblez la région à partir d'une autre base de données, encore une fois pas lorsque les utilisateurs s'enregistrent.

Lorsque vous demandez ce type d'informations à un utilisateur et essayez de le générer automatiquement et de le comparer à une base de données, vous rencontrerez de nombreuses personnes quittant votre site. Que se passe-t-il pour les personnes qui sont derrière des proxies, des VPN ou qui exécutent Tor?

1
Anagio

Je réaffirmerais l'importance de valider les informations que vous collectez. Après tout, s’il est suffisamment important pour le collecter, vous devez vous assurer qu’il est correct par rapport aux autorités/sources appropriées. Si ce n'est pas important , pourquoi le collecter du tout et alourdir l'utilisateur?

Je travaille pour SmartyStreets où nous validons les emplacements des utilisateurs, en particulier leurs adresses, et j'ai donc résolu un certain nombre de problèmes de ce type. Je suggérerais ensuite qu'une API est la solution la plus robuste pour vous apporter de la valeur. En d’autres termes, dans vos listes des avantages et des inconvénients, la différence est claire: la création d’une base de données locale est beaucoup plus coûteuse que les éventuels effets secondaires minimaux de l’utilisation d’une API professionnelle.

L'un des moyens les plus efficaces d'obtenir une géolocalisation précise des utilisateurs consiste à collecter des informations spécifiques correctes . Tandis que beaucoup de gens collectent des adresses, peu s'assurent que c'est une adresse correcte qui existe réellement. Google, Yahoo et des services similaires ne fournissent pas ceci: méfiez-vous qu'ils effectuent une approximation d'adresse non , et leurs résultats sont les meilleures suppositions.

Pour les adresses aux États-Unis, l'USPS CASS - certifie qu'un petit nombre de fournisseurs ont fourni leur adresse faisant autorité et leurs données de localisation à d'autres personnes. Vous pouvez utiliser Google pour ces services vous-même, mais ce que vous recherchez correspond à quelque chose du type LiveAddress API , qui vérifie et géolocalise les adresses américaines.

Je peux vous dire que nous avons investi des ressources considérables pour créer et gérer la base de données, les risques et autres inconvénients mentionnés lors de la création de votre propre base de données. Nous avons également abordé les inconvénients que vous avez énumérés à propos d'une API. Voir SLA pour plus de détails et gardez à l'esprit que nous sommes le seul fournisseur dont l'API est géo-distribuée dans 3 centres de données redondants pour garantir performances et disponibilité. En d'autres termes, la vitesse est rapide et les demandes sont traitées en parallèle.

L'utilisation des fonctionnalités de géolocalisation modernes (HTML5, etc.) est précise dans une certaine mesure, mais même pour le moment, leur compatibilité est limitée aux navigateurs plus modernes dans des environnements idéaux (j'ai grandi dans l'Iowa, où la géolocalisation est très éloignée des zones urbaines). Mais obtenir et vérifier l'adresse d'un utilisateur est un moyen sûr d'obtenir ce dont vous avez besoin, si cela est vraiment nécessaire. C'est ce que je ferais.

1
Matt