数据库 – 时间序列数据的键值存储?
我一直在使用SQL Server存储几十万个对象的历史时间序列数据,每天观察约100次.我发现查询(给我在时间t1和时间t2之间的对象XYZ的所有值)太慢了(因为我的需要,慢一秒钟).我按时间戳记和对象ID进行索引.
我喜欢使用某些键值仓库(如MongoDB)的想法,但我不知道这是否是这种“适当”的使用,我找不到任何使用这样的东西数据库用于时间序列数据.理想情况下,我可以执行以下查询: >在时间t1和时间t2之间检索对象XYZ的所有数据 应该对数据进行排序,理想情况下应该是快速写入新数据以及更新现有数据. 似乎我希望通过对象ID以及时间戳进行查询可能需要以不同的方式索引数据库的两个副本以获得最佳性能…任何人都可以构建像这样的系统,使用键值存储,还是HDF5?或者这是完全可以在SQL Server中,我只是不做正确吗? 解决方法听起来像MongoDB是一个很好的合适.更新和插入速度非常快,因此您可能需要为每个事件创建一个文档,例如:{ object: XYZ,ts : new Date() } 那么你可以索引ts字段,查询也会很快. (顺便说一下,您可以在单个数据库上创建多个索引.) 如何做三个查询:
db.data.find({object : XYZ,ts : {$gt : t1,$lt : t2}})
// first db.data.find({object : XYZ,ts : {$gt : new Date(/* start of day */)}}).sort({ts : 1}).limit(1) // last db.data.find({object : XYZ,ts : {$lt : new Date(/* end of day */)}}).sort({ts : -1}).limit(1) 最接近一段时间,您可能需要一个自定义的JavaScript函数,但它是可行的.
db.data.find({ts : timestamp}) 如果您有任何问题,请随时询问user list,否则其他人可能会想到更简单的获得最近一次性活动的方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SqlServer用select查询遇到Null值字段的处理替换方法(实例
- 查看SQLServer2008数据表占用硬盘的空间大小
- 备份 – 设备上的媒体系列格式不正确. SQL Server无法处理此
- data.table分别对数字和文本变量进行分组
- 动态给表添加删除字段并同时修改它的插入更新存储过程
- MSSQL高可用性和扩展性
- Mac系统下MySql下载MySQL5.7及详细安装图解
- sql-server – [ADO.NET错误]:数据库’master’中的CREATE
- sql-server – 如何将sql server express 2005升级到2008R2
- update关联更新在sqlserver和oracle中的实现