我正在考虑使用MongoDB作为时间序列数据库。我的问题是,我的应用程序需要时间倒退的能力,并填补时间序列数据中的空白。例如,我可能有时间1,2,3,6的数据。在报告时间10之后,我可能需要插入时间4,5,6的数据。插入数据是否实用,或者我是否会因为需要使用缓慢/复杂的操作而遭受巨大的性能影响?使用相同(或可能是新的)值更新时间6会很简单,还是需要不同的操作来插入新数据,然后更新现有数据?
发布于 2014-02-26 13:48:31
使用更新和upsert标志很容易做到这一点(MongoDB太棒了!)下面是一些示例python代码,可以实现这一点。
import time
import datetime
import random
import csv
import os
import zipfile
import json
import pymongo
from pymongo import Connection
client = Connection('localhost')
db = client.pan2
collection = db.well1
maxloop = 10000
x = 1
y = random.randint(100,999)/random.randint(1,10)
v1 = 'value'+str(random.randint(1,10))
v2 = 'value'+str(random.randint(1,10))
v3 = 'value'+str(random.randint(1,10))
elaptime = time.clock()
while maxloop > 0:
collection.update({'timestamp': x}, {'$set': {'value1':y, v1 : y/2, v2 : y/4}}, upsert=True)
maxloop = maxloop - 1
x = x + 1
elaptime=elaptime-time.clock()*-1
print("Processing time was", elaptime, "seconds")https://stackoverflow.com/questions/21978760
复制相似问题