Meilleure façon de supprimer tous les nœuds et les relations dans le Chiffre
Quelle est la meilleure façon de nettoyer le graphique à partir de tous les nœuds et les relations par Cypher?
À http://neo4j.com/docs/stable/query-delete.html#delete-delete-a-node-and-connected-relationships l'exemple
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
a la note:
Cette requête n'est pas pour la suppression de grandes quantités de données
Donc, est la suivante mieux?
MATCH ()-[r]-() DELETE r
et
MATCH (n) DELETE n
Ou est-il autre que de la meilleure façon pour les grands graphes?
stackoverflow.com/questions/14690522/... ils suggèrent la suppression de la base de données de répertoire, mais je suis intéressé dans le cas d'une distance GUI qui a besoin de fournir à l'utilisateur une action pour effacer le graphique (réinitialisation de l'état par défaut)
OriginalL'auteur George Birbilis | 2015-04-18
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez mentionné le plus simple est d'arrêter de Neo4j, baisse de la
data/graph.db
dossier et de le redémarrer.Suppression d'un grand graphique via Monogramme sera toujours plus lent mais reste faisable si vous utilisez une bonne opération de la taille pour éviter les problèmes de mémoire (souvenir de transaction sont construits dans la mémoire avant de s'engager). Généralement 50-100k opérations atomiques est une bonne idée. Vous pouvez ajouter une limite à la suppression de votre déclaration de contrôle tx de tailles et de rapport nombre de nœuds ont été supprimés. Exécutez à nouveau cette instruction, jusqu'à une valeur de 0 est retourné:
Cette question a été soulevée sur Zoomicon du site: "Dans votre dernière requête que vous créez une immense croix du produit. Tous les nœuds fois toutes les relations. Probablement cleaner puis de le découper en deux, supprimer rels d'abord, puis les nœuds"
déposer le dossier:
rm -rf data/graph.db
cette question faisait référence à mon original de faire CORRESPONDRE (n), ()-[r]-() SUPPRIMER les n,r, ce qui n'est pas efficace, car c'est la croix du produit et de l'optimiseur de requête n'est pas assez intelligent, il semble pour l'optimiser. À mon avis, il a pu vérifier que n et r ne sont pas liées dans la façon dont ils sont utilisés après le MATCH et donc partagé en interne dans les deux requêtes distinctes qui sont exécutés ensemble en une seule étape, mais peut-être que je demande trop
concernant l'abandon de données/graphique.sous-dossier db (c'est un sous-dossier avec une extension de son nom de dossier, pas un fichier), évidemment neo4j recrée. Cependant, je suppose que vous aurez besoin d'arrêter la neo4j du premier serveur et de le redémarrer. Sur Windows utiliser RMDIR /S/Q chemin pour supprimer une arborescence (/S) sans demande de confirmation (/Q)
OriginalL'auteur Stefan Armbruster
Selon le document officiel ici:
mais il a aussi dit
This query isn’t for deleting large amounts of data
. il est donc préférable de l'utiliser avec limite.btw, si vous LIMITE d'utilisation (pour des raisons de performances), suppose que vous devez également utiliser RETURN count(n) comme deletedNodesCount et l'exécuter à plusieurs reprises jusqu'à ce qu'elle retourne 0, comme l'a suggéré à d'autres réponse ci-dessus
OriginalL'auteur ShaneX
Écrit ce petit script, a ajouté ça à mon NEO/bin.
Testé sur v3.0.6 communauté
Je l'utilise quand ma CHARGE CSV importations de merde.
Espère que cela aide
OriginalL'auteur Jerome_B
En essai, supprimé 50000 relations, après avoir terminé 589 ms.
en fait, le temps pour l'achèvement de l'info n'est pas très utile si elle n'est pas la comparaison avec le temps, il a eu d'autres alternatives pour terminer sur la même machine (avec base de données initiale étant la même à chaque fois)
aussi :owner_real_estate_relation ne pas aller avec le "tous" les relations dans la question
OriginalL'auteur BazSTR