2016-04-08 66 views
2

我想創建一個OrientDB時間系列年 - >月 - >日 - >小時 - >分鐘 - >秒。如何填充OrientDB時間序列?

OrientDB wiki上的示例僅顯示如何創建類以及如何管理搜索。

我試圖使用this code填充我的圖表,但如果時間有限,則此方法需要2分鐘以上,因爲另一用戶說here。以秒爲單位,類似的方法需要大約12個小時。

這是正常的嗎?有更好的方法嗎? 謝謝大家回答我的問題。注:我已經閱讀the Milan 2014 slides,但它只解釋了結構(我已經清楚)和一種檢索數據的方法。

回答

0

你可以試試這段代碼嗎?

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import com.orientechnologies.orient.client.remote.OServerAdmin; 
import com.orientechnologies.orient.core.metadata.schema.OClass; 
import com.orientechnologies.orient.core.metadata.schema.OType; 
import com.tinkerpop.blueprints.impls.orient.OrientGraph; 
import com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx; 
import com.tinkerpop.blueprints.impls.orient.OrientVertex; 

public class TimesSeriesMain { 

    public static void main(String[] args) { 

     OServerAdmin serverAdmin; 
     try { 
      serverAdmin = new OServerAdmin("remote:localhost/myTimeSeries").connect("root", "root"); 
      if(!serverAdmin.existsDatabase()){ 

       serverAdmin.createDatabase("myTimeSeries", "graph", "plocal"); 

       OrientGraphNoTx graph_c=new OrientGraphNoTx("remote:localhost/myTimeSeries"); 

       OClass hour_c=graph_c.createVertexType("Hour", "V"); 
       hour_c.createProperty("value", OType.INTEGER); 

       OClass day_c=graph_c.createVertexType("Day", "V"); 
       day_c.createProperty("hour", OType.LINKSET, hour_c); 

       OClass month_c=graph_c.createVertexType("Month", "V"); 
       month_c.createProperty("day", OType.LINKMAP, day_c); 

       OClass year_c=graph_c.createVertexType("Year", "V"); 
       year_c.createProperty("value", OType.INTEGER); 
       year_c.createProperty("month", OType.LINKMAP, month_c); 

       graph_c.shutdown(); 

       OrientGraph graph=new OrientGraph("remote:localhost/myTimeSeries"); 

       long start = System.currentTimeMillis(); 

       for (int yy = 2015; yy < 2016; yy++){   
        Map<Integer, OrientVertex> months = new HashMap<>(); 
        for (int mm = 0; mm < 12; mm++){ 
         Map<Integer, OrientVertex> days = new HashMap<>(); 
         for (int dd = 1; dd < 32; dd++){ 
          List<OrientVertex> hours = new ArrayList<OrientVertex>(); 
          for (int i = 0; i < 24; i++){ 
           OrientVertex hour=graph.addVertex("class:Hour"); 
           hour.setProperty("value",i); 
           hours.add(hour); 
          } 
          OrientVertex day=graph.addVertex("class:Day"); 
          day.setProperties("hour",hours); 
          days.put(dd,day); 
         } 
         OrientVertex month=graph.addVertex("class:Month"); 
         month.setProperties("day",days); 
         months.put(mm,month); 
        } 
        OrientVertex year=graph.addVertex("class:Year"); 
        year.setProperties("value",yy); 
        year.setProperties("month",months);  
       } 

       long end=System.currentTimeMillis(); 

       System.out.println(((end-start)) + " millisec") ; 

       graph.shutdown(); 
      } 
     }   
     catch(Exception e){ 
      System.out.println(e); 
     } 
    } 
} 

希望它有幫助。

+0

非常感謝您的評論。速度的變化令人印象深刻(262毫秒)。爲什麼它變化如此之大? – Stefano