每个测点每隔5秒一条,如何为每100个测点每个测点35万条记录产生一批模拟数据
在DolphinDB database中分布式数据库按时间和测点两个维度进行组合分区,时间维度是按天值分区,测点维度是每100个测点范围分区。现在想插入3500亿条数据(100万个测点,每个测点5秒一条共35万条数据),要求每批产生100个测点的所有记录并插入数据库,产生每批数据的代码如下:
id_int=800000;
id=array(int,0);
j=100;
M=350000;
N_max=1799999;
time=array(DATETIME, 0);
ts=2019.03.22 15:43:13;
h=M;
id_par=array(int,0);
do{time.append!(ts);ts+=5;h-=1}while(ts<=2019.04.11 22:07:58 and h>=1)
tt=take(time,M*j);
b=id_int;
do{id.append!(take(id_int,M));id_int+=1;}while(id_int-b<j)
tmp=table(id as id,tt as time,take(1.0, M*j) as v,take(2.0, M*j) as q)
//todo:insert tmp into dfsTable
do {
b=id_int;
id2=array(int,0);
do{id2.append!(take(id_int,M));id_int+=1;}while(id_int-b<j)
tmp=table(id2 as id,tt as time,take(1.0, M*j) as v,take(2.0, M*j) as q)
//todo:insert tmp into dfsTable
}while(id_int<=N_max)
感觉代码的效率比较低,请问有什么优化的办法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
下面的代码中,prepareData函数可为每批100个测点产生所有记录,writeData把数据批量写入分布式表,loopWrite是把100万个测点用cut函数分割后用loop循环执行。