我有很多分析数据,我希望每隔一段时间(例如一分钟)进行汇总。数据被发送到将其存储在ETS表中的过程中,并且每隔一段时间,计时器就会向其发送一条消息处理表并删除旧数据。
问题在于传入的数据量千差万别,我基本上需要对它做两件事:
如果保持这两个条件,我基本上可以假设该表的大小恒定,并且其中的所有内容都比X更新。
问题是我还没有找到一种有效的方法来将这两件事合在一起。我知道我可以使用匹配规范来删除所有早于X的整数,如果索引是时间戳记,这应该相当快。尽管我不确定这是否是定期整理桌子的最佳方法。
第二个问题是将表的总大小保持在一定限制内,我不太确定该怎么做。我想到的一种解决方案是使用一个自动增量字段,该字段将在每次插入时使用,并且在修剪表时,查看第一个和最后一个索引,计算差异,然后再次使用匹配规范删除阈值以下的所有内容。
说了这么多之后,感觉到我可能正在将ETS表用于并非旨在做的事情。有没有更好的方法来存储这样的数据,还是我正确地解决了这个问题?
我还没有使用 ETS 来做这样的事情,但在其他 NoSQL DB (DynamoDB) 中,一个简单的解决方案是使用多个表:如果您要保留 24 小时的数据,则保留 24 个表,一天中的每一小时一个表。当您想要删除数据时,请删除整个表。
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |