2015-07-23 5 views
1

С новой версией Spring Data Neo4j я не могу использовать Neo4jHelper.cleanDb (db);Очистить Neo4j Встроенная база данных

Итак, что является самым эффективным способом полностью очистить встроенную базу данных Neo4j в моем приложении?

Я выполнил свой собственный метод UTIL для этой цели, но этот метод является медленным:

public static void cleanDb(Neo4jTemplate template) { 
    template.query("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r", null); 
} 

Как правильно очистить/удалить базу данных?

ОБНОВЛЕНО

Это аналогичный вопрос How to reset/clear/delete neo4j database?, но я не знаю, как программно отключение встроенного Neo4j и как запустить его после удаления.

Я использую Spring Data Neo4j и по запросу пользователя хочу очистить/удалить существующую базу данных и воссоздать ее новыми данными. Как запустить новую встроенную базу данных после предлагаемого вызова метода shutdown?

использования:

На рабочем приложении я настроен встроенную базу данных:

GraphDatabaseService graphDb = new GraphDatabaseFactory() 
       .newEmbeddedDatabaseBuilder(environment.getProperty(NEO4J_EMBEDDED_DATABASE_PATH_PROPERTY)) 
       .setConfig(GraphDatabaseSettings.node_keys_indexable, "name,description") 
       .setConfig(GraphDatabaseSettings.node_auto_indexing, "true") 
       .newGraphDatabase(); 

Кроме того, я предварительно заполнить эту базу данных с узлами 1000000. По запросу пользователя мне нужно очистить эту базу данных и заполнить ее новыми данными. Как правильно и быстро очистить существующую базу данных?

Можно ли вызвать API базы данных Neo4j для создания новых узлов после database.shutdown() или мне нужно инициализировать новую базу данных до этого?

+0

возможный дубликат [Как сбросить базу данных neo4j?] (http://stackoverflow.com/questions/23310114/how-to-reset-neo4j-database) – FrobberOfBits

ответ

2

См. Другой ответ на соответствующий вопрос. Внутри java вы можете закрыть встроенную базу данных с помощью метода GraphDatabaseService#shutdown().

Оттуда есть куча разных способов удалить базовый каталог, see this other answer.

Так общий ответ еще может быть такой же:

  1. Shutdown базы данных с помощью Neo4j Java API
  2. Удалить содержимое базы данных от диска
+0

Спасибо! Еще один вопрос - если мне нужно несколько раз удалять/очищать базу данных в рабочем приложении, нужно ли мне выполнить некоторые дополнительные шаги, чтобы начать использовать новую встроенную базу данных сразу после удаления? – alexanoid

+0

Нет; встроенные базы данных привязаны к каталогам на диске. Просто создайте новую базу данных, и она будет автоматически создавать любые каталоги. – FrobberOfBits

+0

Перед добавлением новых данных необходимо создать новую базу данных. Если вы попытаетесь вставить данные после завершения работы, это не удастся. Пожалуйста, отметьте этот вопрос завершенным и продолжайте - если у вас есть дополнительные вопросы, открывайте новые темы. – FrobberOfBits

Смежные вопросы