论文部分内容阅读
防火墙、IPS/IDS、WEB服务器等大的网络系统实时产生大量日志数据,能高效地存储、处理这些数据是挖掘日志数据的前提。关系数据库因为要进行类型检查、语句分析等操作大大影响了其效率,越来越不适用于处理实时和海量日志数据。而无类型约束、易扩展的键值数据库无疑将大大提高对日志数据的处理效率。随着互联网的发展键值数据库的应用越来越广泛,百度,谷歌,雅虎,阿里巴巴等大的互联网公司都采用键值数据库存取,现在热门的云存储,云计算其数据也用键值技术。本文详细介绍了键值数据库的原理和主要技术,并设计和实现了一个高效的、专门处理网络日志数据的键值数据库,能够支持多维索引和事务处理,并保证进程和线程安全。最后给出完成的键值数据库的测试结果以及和BerkeleyDB数据库的对比情况,指出实现键值数据库的优势与不足,并给出下一步的优化改进措施。本课题主要内容是设计一个实时处理海量网络日志数据的数据库。其主要实现功能包括以下几点:(1)基于键值数据库技术,开发一个网络日志存储系统;(2)保证较高的读写效率,写日志到数据库和从数据库中读日志的速率都达到每秒10万条记录的数量级;(3)实现多维索引,实现从多个域查询日志记录,并支持等值查找,范围查找,遍历操作等;(4)线程安全,读,写进程的同步与互斥,保证数据的完整性;(5)实现C/S分布式存储,利用libevent库来实现主从存储器间的通信。本课题将采用一种从整体到局部的设计思路实现日志存储系统。首先分析日志记录的特点和日志系统需要提供的功能来总体设计键值数据库。然后研究实现数据库的各项技术并进行分析对比,接着从整体到各个模块进行分别设计和优化,最终完整地实现日志存储数据库。所要达到的目标为能实时的存储日志记录到数据库中,同时也能实时的从数据库读日志出来。