J'ai un ensemble de données de 60000 éléments dans mysql et j'essaie de l'insérer dans neo4j. L'insertion a lieu mais cela prend beaucoup de temps (environ 10-15 par 3 sec). Y a-t-il un moyen de l'accélérer? aussi est-il possible de donner quelque chose comme une clé unique dans neo4j afin que les index de duplication ne soient pas indexés? Je suis nouveau à neo4j. J'utilise neo4j 1.8 avec le pilote PHP Everyman.comment accélérer l'insertion de mysql dans neo4j?
Répondre
Il y a une belle présentation de Max De Marzi, à propos d'ETL dans Neo4j.
Voir: http://www.slideshare.net/maxdemarzi/etl-into-neo4j
Cela dépend de la langue que vous voulez utiliser, beaucoup d'options de java embarqué via JRuby et à distance via Ruby, PHP, python.
Vous souhaitez regrouper vos demandes dans des transactions de taille appropriée (par exemple, 10 000 articles par transaction).
Il est possible d'importer des fichiers CSV directement dans un fichier de base de données en utilisant le batch-importer ou via le BATCH REST API du serveur Neo4j.
vous me donnez un exemple où les données sont transférées de mysql à neo4j en PHP? Cela m'aiderait vraiment. – hablema
Neo4j est toujours lent pendant l'insertion. Le maximum que je pouvais atteindre était de 100 nœuds par seconde avec l'insertion par lots. Y at-il un moyen de l'insérer, j'ai environ 2M nœuds à faire à partir de ma base de données MySQL et ensuite les relier. – hablema
cela ne semble pas être directement lié à neo4j. Je n'ai jamais de temps d'insertion aussi lent, et j'ai fait beaucoup d'importation de psql-> neo4j. Je suppose que vous interrogez les données depuis le mysql sur la route - essayez d'abord interroger les données et les insérer dans un format graphML ou geoff xml. puis utilisez simplement une fonction in-build, comme gremlins g.loadGraphML ('mysqlexport.xml') - http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html#rest-api-load-a -sample-graph – ulkas
Comme mentionné ci-dessus, l'option préférée est l'importateur par lots.
Si vous avez besoin de passer par le client PHP, ici je l'ai mis en place un exemple qui utilise le api batch REST: http://phpfiddle.org/main/code/mu3-sgk
Vous pouvez tester les lignes/lot ce qui fonctionne le mieux pour votre système. Pour mon portable c'est 750, pour mon serveur de test c'est 1250. Le code json_decode qui arrive est lourd sur le CPU.
- 1. Comment accélérer l'analyse de l'ensemble Neo4j ExecutionResult?
- 2. Accélérer insérer dans MySQL
- 3. Comment accélérer le filtrage collaboratif dans Neo4j Cypher?
- 4. Accélérer MySQL?
- 5. Comment accélérer MySQL INSERTs/UPDATEs?
- 6. MySQL - comment accélérer SELECT SUM
- 7. Comment accélérer cette requête MySQL?
- 8. Étiquettes Neo4j et comment accélérer le comptage des nœuds étiquetés?
- 9. accélérer l'opération sur mysql
- 10. Accélérer cette déclaration MySQL
- 11. Comment accélérer l'insertion MySQL de sélectionner?
- 12. Accélérer MySQL Query + PHP
- 13. MYSQL accélérer les requêtes
- 14. Accélérer la requête mysql
- 15. Accélérer une requête mysql?
- 16. Accélérer mysql select query
- 17. accélérer MySQL requête
- 18. accélérer la requête mysql
- 19. Comment accélérer ma requête mysql JOIN?
- 20. Comment accélérer (ou rompre) cette requête MySQL?
- 21. Comment accélérer une requête MYSQL complexe?
- 22. Comment puis-je accélérer la requête mysql
- 23. comment accélérer ce code php/mysql
- 24. Neo4j Index dans une migration pouvoir d'appréciation Mysql à Neo4j
- 25. Perl avec mysql, terriblement lent, comment accélérer
- 26. Comment puis-je accélérer cette requête MySQL?
- 27. comment accélérer la requête mysql regex
- 28. pour accélérer la requête mysql
- 29. Accélérer MySQL Update/Insert Statement
- 30. Accélérer une auto-jointure dans MYSQL
Pouvez-vous être plus précis au sujet de cette opération? Pour autant que je sache, vous ne pouvez pas créer des fichiers MySQL Neo4j 'parse-in'; cela signifie que vous devez d'abord extraire les données de MySQL et les stocker dans Neo4j, ensuite: la performance dépend de ces deux étapes. Utilisez-vous BatchInserter? – raina77ow
Les données ont été extraites de mysql en utilisant une requête de sélection et je n'utilise pas un batchinserter pour cela. Comme je suis nouveau à cela, je suis l'exemple de jadell (https://github.com/jadell/neo4jphp/blob/master/examples/bacon.php). Y a-t-il une meilleure façon de le faire? – hablema
le code php que vous avez référencé fait une seule opération http pour chaque création de noeud et paramétrage de propriété, ceci doit être au moins reposé, mieux fait en chiffrement (également en batch), ou en utilisant l'un des outils importateur –