时间序列插入

时间:2017-07-29 03:35:21

标签: orientdb orientdb2.2

这是之前删除的帖子的缩小版本。我已经阅读了其他帖子和orientdb wiki以及linkedin演示文稿。没有超越我目前的进展。

我的问题是2折。

1)将数据链接到时间序列类的正确方法和最佳做法是什么。

2)这可以在插入时用钩子完成吗?

您将在下面找到源数据模型,时间序列类和图表。

数据模型不断更新,每天记录数百万条记录。

源数据模型

        {
            "@type": "d",
            "@rid": "#507:788457",
            "@version": 2,
            "@class": "Live",
            "MarketName": "BTC-OMNI",
            "High": 0.01398825,
            "Low": 0.0117,
            "Volume": 1121.38384722,
            "Last": 0.01254396,
            "Bid": 0.01219709,
            "Ask": 0.01254377,
            "BaseVolume": 14.52156426,
            "TimeStamp": "2017-07-28T16:51:07.853",
            "year": 2017,
            "month": 7,
            "day": 28,
            "hour": 16,
            "minute": 51
            "@fieldTypes": "High=d,Low=d,Volume=d,Last=d,Bid=d,Ask=d,BaseVolume=d,Year=d,Month=d,Day=d,Hour=d,Minute=d"
        }

时间序列类

CREATE CLASS Year
CREATE CLASS Month
CREATE CLASS Day
CREATE CLASS Hour
CREATE CLASS Minute

我想要实现的图表

enter image description here

1 个答案:

答案 0 :(得分:0)

使用orientjs livequery找到解决方案。

有人可以确认这是否是一种合理的方法吗?

有一个实时查询侦听插入到您的源类中,更新插入时的时间序列表。

所有时间序列类都会在插入时使用源记录进行更新。

db.liveQuery('LIVE SELECT FROM live ')

   .on('live-insert', function(data){
        var r = data.cluster;
        var id = data.position;
        var rid = '#'+r+':'+id;


        var umin = 'update Year set month[' + data.content.month + '].day[' + data.content.day + '].hour[' + shour + '].minute[' + data.content.minute + '].live = ' + rid + ' where year = ' + data.content.year
        var uhour = 'update Year set month[' + data.content.month + '].day[' + data.content.day + '].hour[' + shour + '].live = ' + rid + ' where year = ' + data.content.year
        var uday = 'update Year set month[' + data.content.month + '].day[' + data.content.day + '].live = ' + rid + ' where year = ' + data.content.year
        var umon = 'update Year set month[' + data.content.month + '].live = ' + rid + ' where year = ' + data.content.year  

        db.query(umin)
            .then((updatedmin) => {console.log('updated minutes')})
        db.query(uhour)
            .then((updatedhour) => {console.log('updated hours')})
        db.query(uday)
            .then((updateday) => {console.log('updated day')})
        db.query(umon)
            .then((updatedmon) => {console.log('updated month')})



   });