首页 > 解决方案 > 用于存储恶意软件的大型二进制文件的数据库

问题描述

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

标签: databasecassandramalware-detection

解决方案


如果您对 cassandra 有心,您可能希望将 blob 文件存储在 cassandra 之外,因为大文件会导致压缩和修复出现问题。理想情况下,您会将 blob 文件存储在 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 来确定文件是否存在。如果这是每秒被击中 1000 次的东西,您可能希望在它前面创建一个缓存层以减少查找时间。对象存储的成本将比 cassandra 集群便宜得多,并且可能会更好地扩展。


推荐阅读