Java 时间序列数据存储

Java 时间序列数据存储,java,sockets,go,network-programming,time-series,Java,Sockets,Go,Network Programming,Time Series,我正在收集来自同一网络上服务的大量UDP数据包(取决于时间)。这些数据包被反序列化为内存中包含数字(float和int)的结构并进行处理。我们可以说我们正在收集时间序列数据。但是,它不是您从监督服务中获得的时间序列数据(在一段时间内,值基本相同)。这些值不断变化,没错,变化不大。然而,它们各不相同 除此之外,我想将数据发送到云中的服务器,并在该服务器上存储时间序列数据 我的问题是:有什么可能压缩数据,以便通过线路将较小的数据包发送到服务器(我们可以通过TCP批量发送传入的UDP数据包)并存储它们

我正在收集来自同一网络上服务的大量UDP数据包(取决于时间)。这些数据包被反序列化为内存中包含数字(float和int)的结构并进行处理。我们可以说我们正在收集时间序列数据。但是,它不是您从监督服务中获得的时间序列数据(在一段时间内,值基本相同)。这些值不断变化,没错,变化不大。然而,它们各不相同

除此之外,我想将数据发送到云中的服务器,并在该服务器上存储时间序列数据


我的问题是:有什么可能压缩数据,以便通过线路将较小的数据包发送到服务器(我们可以通过TCP批量发送传入的UDP数据包)并存储它们?我特别感兴趣的是不使用连接到服务器的整个存储。一个会话的数据接近32MB,我将同时拥有多个会话。一个会话的数据与另一个会话无关。它们是完全独立的。

您可以使用此库压缩时间序列数据:

这是基于Facebook上的一篇文章:

我们发现大约96%的时间戳 可以压缩到单个位

[……]

大约51%的值被压缩到一个位,因为 当前值和以前的值相同。约30% 使用控制位“10”(情况b)压缩值, 平均压缩大小为26.6位。剩下的 19%用控制位“11”压缩,平均 36.9位的大小,因为需要额外的13位开销 对前导零位和有意义位的长度进行编码

您可以使用诸如bolt(或者更好的方法:支持压缩的rocksdb)之类的键值存储,并为每个键存储多个点。例如,您可以每10分钟存储一个键值对,其中该值将是该10分钟窗口中发生的所有点


这将为您提供良好的性能和高压缩。

您可以使用此库压缩时间序列数据:

这是基于Facebook上的一篇文章:

我们发现大约96%的时间戳 可以压缩到单个位

[……]

大约51%的值被压缩到一个位,因为 当前值和以前的值相同。约30% 使用控制位“10”(情况b)压缩值, 平均压缩大小为26.6位。剩下的 19%用控制位“11”压缩,平均 36.9位的大小,因为需要额外的13位开销 对前导零位和有意义位的长度进行编码

您可以使用诸如bolt(或者更好的方法:支持压缩的rocksdb)之类的键值存储,并为每个键存储多个点。例如,您可以每10分钟存储一个键值对,其中该值将是该10分钟窗口中发生的所有点


这将为您提供良好的性能和高压缩。

您问:“[W]有哪些可能压缩数据[?]”答案显而易见:lzh、zip、gzip、压缩任何内容,选择任何内容。也许你的问题是另一个?所以你基本上是在重新实现statsd和graphite?:)看看XDB。它可能很适合你的用例。我不确定你到底在问什么。存储所有数据的服务器也是由您开发的吗?您的主要目标是压缩用于传输的数据还是存储在服务器上的数据?如果这两个目标都是有效的,那么您可能应该为传输使用不同的模式,为存储使用不同的模式。但这取决于价值观的类型。数值变化是否很快?@Floridiaconeasa
会话持续多长时间?32MB的原始数据是如何转换成时间序列的,即时间+每秒/分钟的浮点采样数。您问:“[W]有哪些可能压缩数据[?]”答案显而易见:lzh、zip、gzip、压缩任何内容、选择任何内容。也许你的问题是另一个?所以你基本上是在重新实现statsd和graphite?:)看看XDB。它可能很适合你的用例。我不确定你到底在问什么。存储所有数据的服务器也是由您开发的吗?您的主要目标是压缩用于传输的数据还是存储在服务器上的数据?如果这两个目标都是有效的,那么您可能应该为传输使用不同的模式,为存储使用不同的模式。但这取决于价值观的类型。数值变化是否很快?@Floridiaconeasa
会话持续多长时间?32MB的原始数据是如何转换为时间序列的,即每秒/分钟的时间+浮动样本数。不幸的是,我不知道这种分布:)我用以下内容更新了这个问题:“我们可以说我们正在收集时间序列数据。但是,这不是您从监督服务中获得的时间序列数据(在一段时间内基本上是相同的值)。这些值不断变化,没错,变化不大。但它们却变化很大。“不幸的是,我不知道这种分布:)我用以下内容更新了这个问题:“我们可以说,我们正在收集时间序列数据。但是,它不是您从监督服务中获得的时间序列数据(在一段时间内,值基本相同)。这些值不断变化,没错,变化不大。不过,它们各不相同。”