MongoDB作为时间序列数据库:在现有时间之间插入“旧”数据

时间:2014-02-24 04:14:24

标签: mongodb time insert series

我正在考虑将MongoDB用作时间序列数据库。一旦我知道,我的应用程序将需要能够及时返回并填补时间序列数据中的空白。例如,我可能有1,2,3,6的数据。在报告时间10之后,我可能需要插入数据4,5,6。将插入数据是否实用或将遭受需要使用慢/复杂操作会对性能造成重大影响?使用相同(或可能是新的)值更新时间6是否简单,或者是否需要不同的操作来插入新数据然后更新现有数据?

1 个答案:

答案 0 :(得分:0)

使用更新和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")