Nous avons 2 serveurs, dont l'un est client. Notre client nous fournit une URL d'exportation XML/JSON des informations de ses clients depuis son CMS et notre tâche est d'écrire des scripts d'import pour importer des données dans webapp, que nous développons.Synchronisation permanente à distance
J'ai toujours fait ça comme ça:
INSERT INTO customers (name,address) VALUES ('John Doe', 'NY') ON DUPLICATE KEY UPDATE name='John Doe', address='NY'
Cette solution est la manière de permormace, pour autant que je sais ...
Mais cette solution ne résout pas la problème de la suppression des enregistrements. Que se passe-t-il si un client est supprimé de la base de données et n'est pas présent dans l'export - comment dois-je faire cela?
Dois-je d'abord TRUNCER l'ensemble de la table, puis la remplir à nouveau? Ou devrais-je remplir un tableau en PHP avec tous les enregistrements, puis le parcourir à nouveau et supprimer les enregistrements qui ne sont pas en XML/JSON?
Je pense qu'il doit y avoir une meilleure solution.
Je suis intéressé par la meilleure solution de la façon de performace, parce que nous devons importer des milliers de documents et le processus d'importation ensemble peut prendre beaucoup de temps.
Mais il y aura quelques minutes disponibles des données incomplètes dans notre webapp juste après TRUNCATE ... :( Et je ne crois pas, que le remplacement des requêtes SQL normales d'importation de requête SQL peut sauver beaucoup de temps ... Ou peut-être Le processus lui-même peut, mais nous devons appeler beaucoup d'URL et récupérer XML/JSON à partir d'eux et cela prend vraiment beaucoup de temps.Ma priorité est aussi l'intégrité et l'exhaustivité des données –
Tronquer la table à chaque fois signifie que vous risquez de perdre des données - – symcbean
Juste demander, ne pas discuter: comment/où tronque la table à chaque fois risque de perte de données? Je dois croire que l'état «actuel» de l'info du client est toujours autour de quelque part , intacte et complète, chez le client de Radek, et est donc disponible pour reconstituer la table 'client' à tout moment. Merci! –