Как быстрее получать последние данные в реальном времени в базе данных DolphinDB - PullRequest
2 голосов
/ 28 февраля 2020

Сценарий нашего приложения - собирать данные с 1000 устройств каждые 600 миллисекунд, а затем записывать их в распределенную базу данных. Существует требование для запроса данных в реальном времени для запроса последних данных о состоянии каждого устройства. Схема выглядит следующим образом:

def createDatabase(dbName){
    tableSchema = table(100:0,`id`ts`tag01`tag02`tag03 ,[INT,TIMESTAMP, FLOAT,DOUBLE,LONG])
    db1 = database("",VALUE,2019.01.01..2020.12.31)
    db2 = database("",RANGE,0..30*10)
    db = database(dbName,COMPO,[db1,db2])
    dfsTable = db.createPartitionedTable(tableSchema,"readings",`ts`id)
}
createDatabase("dfs://devDB")

Я использую следующий оператор для запроса,

select  last(ts),last(tag0001),last(tag0002),last(tag0003)
from loadTable('dfs://devDB', 'readings') where ts >datetimeAdd(now(),-1,`h)  group by id

Здесь можно найти самые последние данные, но я обнаружил, что, поскольку в таблице появляется все больше и больше данных, время, затрачиваемое на каждый запрос, будет постепенно увеличиваться. Есть ли способ ускорить запрос?

...