如今,每个人都在关注保护用户隐私及其数据。能够对数据进行统计分析而无需实际保存数据样本超过必要时间,这是朝着正确方向迈出的坚实一步。
boost 库中累加器的概念看起来非常适合实现它。
累积框架是执行增量的框架 计算。框架的使用遵循以下模式:
用户将数据推送到
accumulator_set<>
个对象中的一个样本 时间。
accumulator_set<>
计算所请求的数量 最有效的方法,解决之间的依赖关系 请求计算,可能缓存中间结果。
只有一个大问题。我不知道如何序列化累加器实例,以便我可以持久化它而无需在应用程序启动之间保留样本数据。
如何创建实例并恢复应用新样本所需的所有必要参数,继续增量计算?我不想从头开始,也不想保留以前的样品。
答案 0 :(得分:2)
我认为你误解了accumulator_set如何在内部工作。
它不保留样品。实际上,如果您只是为'min'和'max'统计信息设置了参数,那么将保留的唯一状态是结果类型的2个值。
其他一些统计数据会保持更多状态(例如直方图,百分位数等)。
由于accumulator_set<>
首先支持序列化¹,因此样本保留应该没问题。
¹我没有检查过
<强>更新强>
好。我现在看了大约一个小时的事情,我认为没有理由认为序列化得到支持或易于实现。
我见过的最多的是功能是可复制的。
但是没有可以从外部调整的分配器,所以你也不能利用说内存映射文件。
这使我得出结论,你想要的是不是库的功能。那么,文档介绍的地方:
Boost.Accumulators既是增量统计计算的库,也是增量计算的可扩展 框架 。
然后显然我们应该将其视为“在accumulator_set的生命周期内的增量操作”,而不是“可恢复/可持续的”增量操作。
这似乎是一个很好的功能请求,图书馆作者想要帮助吗?