J'écris une application rails avec un modèle de personne qui ressemble à ceci:Meilleur méthode pour dédupliquer dossiers personnes dans Rails
create_table "people", :force => true do |t|
t.string "first_name"
t.string "last_name"
t.string "email"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
J'ai un processus en deux étapes comme suit:
- Fill sur les dossiers des personnes, avec les noms des personnes. Les noms des personnes peuvent avoir des doublons inconnus, dus à des surnoms, etc. Par exemple, "tim smith" et "timothy smith"
- Demander une API pour obtenir des correspondances d'adresses électroniques potentielles pour ces personnes.
Après avoir fait que le traitement, je pourrais avoir des données comme:
fiche 1: prenom: tim last_name: smith email: [email protected]
fiche 2: first_name: timothy last_name: smith email: [email protected]
Quelle est la meilleure façon de modéliser les rails? Cates?
MISE À JOUR: CLARIFICATION
Après l'étape 2, je sais comment savoir que ces deux enregistrements sont doubles (à savoir la même personne), ma question est de savoir comment représenter que dans le modèle? Dois-je ajouter un champ de type "duplicate_of_person_id" et mettre l'identifiant du premier enregistrement dans ce champ dans le second enregistrement? Y a-t-il un meilleur moyen?
des contrôles d'unicité doivent être effectués sur la base de données pour éviter les problèmes de threading et de dérive, supprimer le code compliqué pour gérer ces problèmes et avoir plus d'efficacité. – scones
Problèmes de filetage et de dérive? – Sasha
** Filetage **: deux instances de l'application envoyant les mêmes données en même temps. Les contrôles d'application ne seront pas en mesure d'attraper cela (peut également être appelé une «condition de course», je suppose).** Drifting **: configuration du serveur de base de données maître esclave, où l'esclave n'a pas reçu le nouvel ensemble de données, est interrogé si les données existent et répond franchement non. l'ensemble de données sera dupliqué ensuite. – scones