2017-07-12 80 views
-1

我正在使用neo4j版本3.1.0。我創建了2000萬圖。每個圖包含9個節點及其各自的屬性。我正在使用嵌入模式(api 3.1.0)。我試圖更改節點的屬性。在運行時,我更改了節點的屬性但它不反映在數據庫中,當我試圖使用neo4j外殼獲取節點屬性。圖表數據庫未更新Neo4j

數據庫大小差不多是20GB。我正在服務器上運行它。我猜這些更改是在緩存中發生的,但它並不反映在圖形數據庫中。我應該在圖形數據庫中更新哪些更改?試圖通過按CNTRL + C.Hence來處理這種情況下,該段添加到您的代碼停止代碼時

try(Transaction tx=GraphCreation.getInstance().dbService.beginTx()){ 
      Node n= GraphCreation.getInstance().dbService.findNode(MyLabels.IMSI,"IMSI" ,"A"+0); 
      n.setProperty("MSISDN", "Z"+0); 


      tx.success(); // commit 


     } catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     try(Transaction tx=GraphCreation.getInstance().dbService.beginTx()) 
     { 
     String cql ="match(a:IMSI{IMSI : 'A0'}) return a.MSISDN";    
      Result result= GraphCreation.getInstance().dbService.execute(cql); 
      while (result.hasNext()) 
      { 
       Map<String, Object> row = result.next(); 
       for (String key : result.columns()) 
       { 
        System.out.printf("%s = %s%n", key, row.get(key)); 
       } 
      } 
      tx.success(); 
      timerContext.close(); 

     } catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
+0

我已經使用了tx.success()也 – vinay

+0

你可以分享相關的代碼片段(你在做更新)嗎?當你說neo4j shell ...你的意思是你在服務器模式下啓動嵌入式數據庫並連接到它?你確定(只是檢查)你連接到同一個數據庫嗎? –

+0

我相信3.1.0版本也具有嵌入式Cypher功能。您可以在第二個事務中的嵌入式數據庫上運行graphdb.execute(cypherquery)以驗證您的更改是否已經過? –

回答

0

這個問題已經解決了.Graph DB一直沒有正常關機。

private static void registerShutdownHook(final GraphDatabaseService graphDb) 
{ 
    // Registers a shutdown hook for the Neo4j instance so that it 
    // shuts down nicely when the VM exits (even if you "Ctrl-C" the 
    // running application). 
    Runtime.getRuntime().addShutdownHook(new Thread() 
    { 
     @Override 
     public void run() 
     { 
      graphDb.shutdown(); 
     } 
    }); 
}