我期待编写一个需要时间序列内存数据库的分发应用程序(也需要持久化)。 我需要对此时间序列数据进行各种分析,如聚合,过滤等。 理想情况下,我想分开这些。
类似的含义可以说有一个进程附加到这些时间序列数据,然后将这些数据公开给一组应用程序(用于各种分析的进程),比如说共享内存句柄。 为了计算分析,应用程序需要主要以只读方式查看时间序列。因此,曾经可以将其视为一个将要编写的过程(添加/修改时间序列)。以及其他应用程序将访问这些时间序列数据作为只读以评估分析。
此外,如果可能的话,我需要时间序列数据是持久的,并且最好是持久性和分布式缓存(可能基于redis)。
我想探索一下我的选择。
答案 0 :(得分:0)
Redis似乎是您用例的好选择。只需一个主服务器,没有从服务器即可开始简单。如果您使用非事务性pipelining,redis-server将处理并发性,因此客户端可以读入它们。
使用ZADD
和ZRANGEBYSCORE
获取您的时间序列数据。
您可能还想看看here。
稍后添加几个从属服务器时,可以将这些服务器保留为只读模式,并让只读客户端从这些服务器中收集数据。您甚至可以在服务器上的Lua中进行一些预聚合。真正的数据分析应该在客户端进程中完成。
如果它包含大量数据,您可能希望以msgpack格式对其进行序列化。服务器端Lua脚本可以序列化/反序列化。这种格式非常有效。
希望这有帮助,TW
答案 1 :(得分:0)
时间序列数据的处理似乎适合Druid引擎。 Druid对OLAP数据引擎提供了对时间序列数据的快速响应。 此外,Metatron Discovery是一个基于Druid的分析平台。看看!!