我编写了一个应用程序,它本质上是嗅探以太网设备,并研究某些模式。我正在使用 Python 和 Scapy 来捕获数据。由于需要在数据库中捕获数据以供后代使用,并且用于模式研究,我们正在考虑以下策略。
1)我们希望使用高性能的键值存储来捕获基本数据。这基本上是一个 key:value 存储,大约有 200 个键。2)每隔一小时,我们将汇集密钥存储,并根据某些条件和模式,我们将根据存储在 K:V 存储中的值填充 Postgres 数据库。
我们计划将 Redis 用于 K:V。我们曾考虑过其他解决方案,包括数据库、基于文件的缓存等,但存在性能瓶颈。一方面,每分钟要处理数千个数据包,并且从数据库来回调用 SQL 会减慢程序的速度。
我从未使用过 Redis。但有人告诉我它是最快和最有效的 K:V No SQL 数据存储。并且 redis python APi 使它非常 Pythonic。基本上数据库存储将有 200 个奇数键和一个长整数值,与 80% 的键相关联,或者在某些情况下,字符字段少于 200 个字符。
问题
1)这是正确的方法吗?2) 需要考虑的其他参数是什么?3) 内存可以扩展多少?我应该怎么做才能确保优化内存大小以获得更快的性能?4)如何计算内存大小?
Python 是我们唯一知道的语言。因此,任何像 C/C++ 这样的建议都可能不会吸引人。
我们可以偶尔丢失一些数据包,因为我们的想法是研究模式而不是获得绝对准确的结果。键的数量将保持不变,并且它们的值可以上下浮动..
我们最终需要将计算的数据存储在 RDBMS 中,因为未来的主运算是 SQL 密集型的。