用于存储大型恶意软件二进制文件的数据库

时间:2018-07-12 15:22:32

标签: database cassandra malware-detection

因此,我正在尝试创建一个数据库,该数据库可以存储数千个恶意软件二进制文件,大小从kb到50 mb不等。我目前正在使用blob对cassandra进行测试,但是当然要对大型cassandra无法很好处理的文件进行测试。有没有人有什么好主意,也许想要更好的数据库,或者更好的使用cassandra的方法。我对数据库比较陌生,因此请尽可能详细。 谢谢

1 个答案:

答案 0 :(得分:1)

如果您对cassandra充满信心,您可能希望将blob文件存储在cassandra之外,因为大文件大小会导致压缩和修复问题。理想情况下,您会将blob文件存储在cassandra外部的网络存储中。显然是walmart did do it previously

Cassandra设置:

CREATE TABLE [IF NOT EXISTS] malware_table ( 
   malware_hash varchar,
   filepath varchar,
   date_found timestamp,
   object blob,
   other columns...

   PRIMARY KEY (malware_hash, filepath)

我们在这里所做的是基于恶意软件哈希创建复合密钥。因此,您可以执行SELECT * FROM malware_table WHERE malware_hash = ?。如果发生冲突,则需要查看两个文件。另外,此查找将是超快的,因为它是键值查找。请记住,使用cassandra只能通过主键进行查询。

由于您过去不太可能要更新文件,因此您希望运行基于大小的压缩。从长远来看,可以更快地查找。这将在硬盘驱动器空间上变得更加昂贵,因为您需要在任何给定时间释放50%的硬盘驱动器。

替代解决方案:

我可能会将其存储在s3 / gcs或某些网络存储中。创建一个文件夹来表示该文件夹的哈希,然后将文件存储在每个文件夹中。使用api确定文件是否存在。如果这是每秒被击中数千次的东西,您可能希望在其前面创建一个缓存层以减少查找时间。对象存储的成本将比cassandra集群便宜得多,并且伸缩性可能会更好。