我正在开发一个软件来监视networkingstream量,我需要一个数据库服务器,这将非常快速地存储和查询包头字段。 我知道有一个.pcap文件格式,但它不适合我,因为我每天要存储大约10 TB的stream量。 是否存在某种专门用于networking通信的数据库服务器?
在这一卷,你问错误的问题。 您应该问的问题是:我需要回答哪些问题以及我捕获的信息?
从那里你可以回答存储引擎的问题。 你真的需要每个字节吗? 你是否需要结构化来回答特定的问题,或者回答一些非常结构化的具体问题?
你可以把它分成多个机器,还是只限于一个系统?
你是否需要同时读写?这将会使你的IOPS增加一倍以上?还是在不同的时间完成? 你需要实时索引,还是可以分别构build这些索引? 你需要索引吗? 什么?
你说的是超过100MB / s的数据存储在这里,但反映了负载? 你有一个突发stream,或稳态? 如果您在接收和存储之间有延迟,这是否重要? 您是否必须按顺序进行提交,或者您能否将查询方面的数据无序可见性?
无论如何,尽可能回答具体的问题,去看看那里的各种NetFlow存储和分析工具。 这些与你可能得到这个问题的一个通用答案是一样的。
鉴于您所谈论的捕获数据量,数据的来源几乎完全不相关。
首先,您需要考虑如何将100MB / s的数据通过networking传输到收集点(或者更好的方面,因为分布式系统可能需要处理负载)。
然后,您需要考虑如何构build数据库来处理许多传入logging。 你将如何分散负载跨多个磁盘? 如果多个服务器一次尝试提交数据,你将如何避免争用? 在写入数据的过程中,为了解释磁盘故障,您需要多less冗余,以及如何确保系统能够从这种故障中恢复,而不会丢失任何数据?
那么你需要考虑如何查询数据。 在忙于尝试将100MB / s数据附加到其表的同一数据库上运行查询可能会导致争用问题。 你打算在第二天做批处理吗? 如果您需要实时分析,您将如何处理其造成的额外负载,而不会中断正在进入的写入操作?
您不需要“专用数据库服务器进行networking通信”,您需要一个专门的高写入量的数据库系统。 一旦挑出了这些挑战,找出存储所需数据所需的确切模式几乎是事后才想到的