2011-06-08 5 views
2

Je viens de commencer à découvrir le monde de Neo4j et j'ai trébuché sur un problème, j'ai des problèmes à saisir.Le serveur Neo4j verrouille la base de données. Pourquoi?

J'ai installé Neo4j et l'ai démarré via bin/neo4j start. Dans les prochaines étapes, j'ai écrit un script ruby ​​qui crée de nouveaux nœuds, après l'installation de jruby et de la gemme neo4j. Tout va bien jusqu'à ici.

Comment commencer est decribed ici: http://wiki.neo4j.org/content/Getting_Started_With_Ruby

Mon problème: Lorsque le serveur est démarré et j'essaie de crée des noeuds, Neo4j répond que la base de données est verrouillée. Lorsque j'arrête le serveur, les nœuds sont créés.

Je suis habitué aux bases de données relationnelles, donc je ne comprends pas ce comportement.

Lorsque je vérifie les informations sur le serveur via l'outil Webadmin Neo4j (http://localhost:7474/webadmin), l'indicateur ReadOnly est défini sur false.

Il me semble que l'approche Neo4j est peut-être différente de la db relationnelle, ce qui signifie que le serveur pourrait avoir un autre but qu'un serveur db.

Merci pour tous les conseils, Tobias

Répondre

3

Les fixations JRuby commencera son propre exemple Neo4j, ce qui signifie que vous finirez par avoir deux instances de base de données en essayant d'utiliser les mêmes fichiers.

L'approche est quelque peu différente, mais les bases de données relationnelles l'utilisent également, par exemple Apache Derby. Comme avec Neo4j, vous pouvez soit l'intégrer dans votre application (c'est ce que les bindings JRuby font dans votre cas), soit l'exécuter en tant que serveur autonome.

Donc, ne démarrez pas vous-même un serveur, cela devrait résoudre le problème.

+0

Merci pour votre réponse. Donc, cette instance de Neo4j est-elle seulement vivante tant qu'une transaction ou peut-être que le script fonctionne? – auralbee

+2

Tant que le script est en cours d'exécution. Donc, pour un usage réel, vous devriez le démarrer à partir de quelque part dans votre application de manière à ce qu'il fonctionne, car démarrer et arrêter un serveur de base de données sont des opérations assez coûteuses. – nawroth

+2

Pour quoi utilisez-vous le serveur Neo4j? Si vous voulez juste interagir avec le graphdb de ruby, vous n'avez pas besoin d'avoir le serveur en cours d'exécution. Seulement si vous voulez exposer votre graphdb à d'autres clients via REST vous avez réellement besoin du serveur. –

Questions connexes