我希望编写一个分发应用程序,它需要内存数据库中的时间序列(也需要持久化)。
我需要对这个时间序列数据进行各种分析,比如聚合、过滤等。
理想情况下,我想把它们分开。
意思是说,有一个进程附加到这些时间序列数据,然后将这些数据公开给一组应用程序(用于各种分析的进程),比如说共享内存句柄。
为了计算分析,应用程序将需要以只读的方式浏览时间序列。因此,一旦可以将其视为一个将要编写的进程(添加/修改时间序列)。以及其他将作为只读访问这些时间序列数据以评估分析的应用程序。
此外,我还需要将timeseries数据发送给persistent,如果可能的话,最好使用持久的分布式缓存(可能是基于redis的缓存)。
我想探索我有什么选择。

最佳答案

redis对于您的用例来说似乎是一个不错的选择。你可以从一个主人而不是奴隶开始。如果使用非事务性pipelining,redis服务器将处理并发性,因此客户端可以在两者之间进行读取。
对TimeSeries数据使用ZADDZRANGEBYSCORE
您可能还想看看here
稍后添加几个从机时,可以将它们保留为只读模式,并让只读客户端从这些从机收集数据。您甚至可以在服务器上的lua中进行一些预聚合。真正的数据分析应该在客户流程中完成。
如果是大量数据,您可能需要以msgpack格式序列化它。服务器端lua脚本可以对其进行序列化/反序列化。这种格式非常节省内存。
希望能帮上忙,tw

关于redis - 开源内存和持久性和分布式时间序列数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22486205/

10-12 22:15
查看更多