日志(操作)数据库设计

日志管理模块升级方案

1.      背景

由于现阶段的日志管理,记录的数据比较简单,不够具体,不能适应系统日益庞大的需求。需要对此功能进行升级。

       希望增加的功能有:

l         方便地区分操作类型

l         尽可能详细的记录用户的操作

2.      现状

2.1  日志类型

       操作类型和查询类型。

2.2  数据存储

       数据库。所有类型全放在同一张表中。

 

2.3  记录方式

         登录相应页面,执行相应动作时,简单记录想要的值,写入数据库相应字段。

3.      升级方案

4.1  日志类型

分成三种类型:登录、查询、修改参数和用户管理。

4.2  数据存储

还是采用数据库的存储方式。数据表的结构做了一些调整:

日志表(D_Logs

序号

列名

数据类型

允许空

默认值

主键

说明

1

LogID

int

 

 

标识(自增)

2

UserCode

varchar(50)

 

 

 

用户代码

3

UserName

varchar(100)

 

 

 

用户名

4

LoginIP

varchar(20)

 

 

 

登录IP

5

Type

int

 

 

 

操作类型

6

Operation

varchar(1000)

 

 

操作内容

7

CreateDate

datetime

 

getdate()

 

操作时间

8

Remark

varchar(500)

 

 

备注


由于
4种类型的操作都记录在同一张表中,加上这4种类型所需要记录的内容各不相同。所以有以上表结构的调整。共同的信息都记录在除Operation字段外的其它字段中。而Operation字段则是用来记录这4种类型具体的操作内容。

为了方便存储和读取,我们采用Json字符串的形式记录具体的操作内容。

Json字符串的形式为:

{“para1”:”value1”, “para2”:”value2”, “para3”:”value3”, “para...n”:”value…n”}

其中:para为参数,value为值。

由此,如果用户进行了一个查询的操作,我们可以记录为:

{“查询类型”:“”, “查询名称”:“”, “公司”:“,……….}

又如,进行用户管理时:

{“姓名”:“新值”, “状态”:“新值”, “旧角色”:“角色1,角色2”, “新角色”:“角色1,角色2”,……….}

这样,我们就可以记录任意我们想记录的信息了(只要存储字段设得足够大)。

4.      实现方式

4.1  所要做的调整

l         数据库表

l         日志管理底层代码

l         程序中的存取

4.2  程序实现

数据表的调整由于只是修改一下数据结构而已,在此就略过了。主要讲第23个调整。

底层代码。主要是一些对日志表所进行的增、删、查、改操作及相应的调用接口。但需要注意的一点是:日志主要是记录事实,所以就不需要修改的操作,加上对Json字符串的修改也需要编写额外的代码。查询方面,我们一般会针对时间,操作类型,用户等进行查询,很少会对具体的操作内容进行查询的。因为对Json字符串进行查询是比较复杂和费时的一项操作来的,所以只需要对除“操作内容”外的其它字段进行查询即可。

存取。存,我们需要按照Json字符串的格式拼接字符串,然后调用底层的插入数据接口,将数据存入数据表中的Operation字段即可。取,我们可以将Json字符串的键值以表格的形式显示出来即可。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
每天都有着大量的用户关注各类新闻,特别是随着各种网络通信技术的发展,网络应用的普及使得每时每刻都有着大量的人们通过网络进行各类新闻的搜索,产生海量的日志数据。过去使用单机的方式通过 MySQL数据库对这些数据进行存储,但是积累下来的用户日志数据量达到了一定的级别,当一台电脑无法存储这么庞大的数据时,就产生了海量数据的存储问题。如果使用网络文件系统对数据进行分开存储,那么就无法对大量的实时和离线数据进行分析处理,处理结果也无法以一种更加直观的方式进行展示。 为了解决海量新闻日志数据的存储问题,在新闻业务中得到实时的用户搜索内容的排行并进行可视化显示,得到公众关注的重点,从而达到针对用户关注的重点进行推送、广告的投放、及时消除不良的用户等目的。本文在对以上需求进行调研后,通过Flume日志收集系统对各个服务器中的日志文件进行读取合并,并将数据划分成离线流数据和实时流数据两条路线。离线数据通过Hadoop集群处理、存储,通过Hive完成离线数据处理和分析,并最终通过Hue实现对用户的可视化展示。实时流数据通过Kafka消息队列临时存储,并通过Spark流处理,最终将结果存放在 MySQL数据库中,通过Java程序获取,最终通过Echarts插件在前端对实时数据进行展示。 本文讲述了系统研究的背景、目的和意义。对系统所使用到的相关技术的原理进行了介绍;对系统进行了总体的需求分析并且按照系统实现的功能划分了相关模块;在进行了需求分析后,对系统进行了具体的硬件平台构建以及各个功能模块设计实现,最终完成对用户搜索日志数据的结构化处理和可视化展示。 最后对课题工作进行了总结,并分析了未来系统中可改进的地方。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值