Python 努力采取下一步如何存储我的数据
我正在努力学习如何存储一些遥测数据流。我玩过很多东西,我发现自己感觉像是在作家的圈子里 问题描述 通过UDP连接,我接收来自不同来源的遥测数据。每个源被分解成一组设备。对于每个设备,我最多要存储5种不同的值类型。它们以每分钟不超过一次的速度进入,并且可能是稀疏的。通过混合边缘/电平触发方案传输值(当值差异足够大或时间足够长时发送数据)。这是一个2级或3级的层次结构,有一个时间序列字典 我最想对数据做的事情是a)访问最新的值,b)枚举时间跨度(begin/end/value)。我真的不在乎数据之间有多少“相关性”。我不想计算平均值,也不想计算它们之间的相关性。通常,我查看给定类型的最新值,跨越所有或某些层次结构派生的子集。或者我专注于一个价值流并列举跨度 我根本不是数据库专家。事实上我知道的很少。我的三个同事也不是。我做python(并且希望我做的任何事情都是python 3)。所以我希望我们所做的一切尽可能平易近人。我目前正在尝试使用MintLinux进行开发。我不太在乎酸之类的东西 到目前为止我做了什么Python 努力采取下一步如何存储我的数据,python,database,python-3.x,nosql,Python,Database,Python 3.x,Nosql,我正在努力学习如何存储一些遥测数据流。我玩过很多东西,我发现自己感觉像是在作家的圈子里 问题描述 通过UDP连接,我接收来自不同来源的遥测数据。每个源被分解成一组设备。对于每个设备,我最多要存储5种不同的值类型。它们以每分钟不超过一次的速度进入,并且可能是稀疏的。通过混合边缘/电平触发方案传输值(当值差异足够大或时间足够长时发送数据)。这是一个2级或3级的层次结构,有一个时间序列字典 我最想对数据做的事情是a)访问最新的值,b)枚举时间跨度(begin/end/value)。我真的不在乎数据之间
ls遥测/*/*/rssi| xargs cat
我发现自己比一开始更困惑和困惑。我可能太天真了,以至于我会找到一些更“火与忘”的东西,并在这一点上超越它。如果您有任何建议和指导,我们将不胜感激。如果有人能给我一个食谱,我可以满足我的需要,而不需要大量的开销/教育/进入,我会把它作为肯定的答案。好的,我要尝试一下 我们对大量非结构化数据使用弹性搜索:。我不是这方面的专家,但在我的日常生活中,我非常依赖指数。基本上,您将JSON对象发布到索引中,该索引位于某个服务器上。您可以通过URL或将JSON对象发布到适当的位置来查询索引。我用它来连接索引——这个包有很好的文档记录,您使用的主要类是线程安全的 查询语言本身非常健壮,但是在发布记录之前,您可以很容易地向索引中的记录添加一个“最新时间”字段
无论如何,我不认为这值得一个复选标记(即使你走这条路线),但它太长了,无法发表评论。我觉得你需要一个磁盘上的、隐式排序的数据结构,比如btree或类似的结构 也许可以看看:
http://liw.fi/larch/
http://www.egenix.com/products/python/mxBase/mxBeeBase/
您的问题不是技术性的,而是糟糕的问题规范 如果你正在用传感器数据做任何事情,那么旧的实验室格言适用于“如果你不把它写下来,它就不会发生”。在实验室,这意味着笔记本和笔,在电脑上,这意味着酸 您似乎还过早地优化了解决方案,这是众所周知的。你不会说数据的大小,但你会说它们“不会超过每分钟一次,而且可能是稀疏的”。假设
id, device_id, valuetype1, valuetype2, valuetype3, ... ,valuetypen, timestamp
INSERT INTO DeviceValueTable (device_id, valuetype1, valuetype2,..., timestamp)
SELECT device_id, valuetype1, @new_value, ...., NOW()
FROM DeviceValueTable
WHERE device_id = @device_id
ORDER BY timestamp DESC
LIMIT 1;
SELECT *
FROM DeviceValueTable
WHERE device_id = @device_id
ORDER BY timestamp DESC
LIMIT 1;
select
DeviceValueTable.*
from
DeviceValueTable a
inner join
(select id, max(timestamp) as newest
from DeviceValueTable group by device_id) as b on
a.id = b.id