我编写了一个实质上嗅探以太网设备并研究某些模式的应用程序.我正在使用Python和Scapy捕获数据.由于需要将数据捕获到数据库中以进行后代和模式研究,因此我们正在考虑以下策略.
1)我们想使用高性能的键值存储来捕获基本数据.从根本上讲,这将是一个大约200个键的key:value存储.
2)每隔一小时,我们将汇总密钥存储区,并根据某些条件和模式,将根据存储在K:V存储区中的值填充一个Postgres数据库.
我们计划将Redis用于K:V.我们曾经考虑过其他解决方案,包括数据库,基于文件的缓存等,但是存在性能瓶颈.例如,每分钟有数千个数据包被处理,而从数据库来回的SQL调用会使程序变慢.
我从未使用过Redis.但是我被告知这是最快,最高效的K:V No SQL数据存储. redis python APi非常具有Python风格,基本上数据库存储将具有200个奇数键和一个与80%的键相关联的long int值,或者在某些情况下少于200个字符的char字段.
问题
1)这是正确的方法吗?
2)还需要考虑其他哪些参数?
3)内存容量多少?我应该怎么做才能确保优化内存大小以提高性能?
4)如何计算内存大小?
Python是我们所知道的唯一语言.因此,诸如C/C++之类的任何建议都可能没有吸引力.
我们可以偶尔丢失一些数据包,因为我们的想法是研究模式而不是获得绝对准确的结果.键的数量将保持不变,并且其值可以上下移动.
我们需要最终计算出的数据存储在RDBMS中,因为将来的维护工作将占用大量SQL.