Sql server 用于存储IIS日志的数据库架构

Sql server 用于存储IIS日志的数据库架构,sql-server,database,iis,database-design,database-schema,Sql Server,Database,Iis,Database Design,Database Schema,我一直试图提出一个数据库模式来存储IIS日志文件信息,但没有成功。我们的日志目前正在记录 日期 时间 客户端用户名 客户端IP 客户端用户代理 服务器IP 服务器站点名 地位 子状态 双赢地位 请求方法类型 URI茎 URI查询 港口 什么是好的数据库设计,允许我解析日志文件并将其插入SQL Server数据库以供以后查询?我想将它插入到多个巨大的表中,以帮助保持数据库的大小不会快速增长 您可以为字符串列创建查找表: Client Username Client IP Client User

我一直试图提出一个数据库模式来存储IIS日志文件信息,但没有成功。我们的日志目前正在记录

  • 日期
  • 时间
  • 客户端用户名
  • 客户端IP
  • 客户端用户代理
  • 服务器IP
  • 服务器站点名
  • 地位
  • 子状态
  • 双赢地位
  • 请求方法类型
  • URI茎
  • URI查询
  • 港口

什么是好的数据库设计,允许我解析日志文件并将其插入SQL Server数据库以供以后查询?我想将它插入到多个巨大的表中,以帮助保持数据库的大小不会快速增长

您可以为字符串列创建查找表:

Client Username
Client IP
Client User Agent
Server IP
Server sitename
Request method type
URI-Stem
URI-query
我会将每个查找表设置为相同的。例如clientusername

ClientUsername
ID - int unique
VALUE - VARCHAR(100)
然后,当您处理一行时,获取用户名值并查看它是否在ClientUsername表中,如果是,则在Client username列中添加具有该ID号的行。如果没有,则将新用户名添加到查找表中,并使用新ID

对要引用查找表的每列重复此操作


从表中选择时,您只需连接到查找表以获得值列。

有了这些小信息:只需将其放在一个表中?请详细说明您的需求!编辑的问题。它不必在一个表中,实际上最好不要:)除了日期和时间以及那些已经是代码(例如状态)的列之外的每一列都可以在查找表中。您没有指定一件真正重要的事情:如何查询此数据?如果您不打算查询它,就不要存储它。如果要查询它,请指定要运行的查询,因为这将是设计的主要驱动因素。@Hogan,那么每一列都是它自己的表吗?然后只需从这些表中选择ID,或者插入一条新记录,然后将它们加入日期和时间?好的。至于状态,你会怎么做?让它们远离查找表?@michael_clarke-它们是整数。。。存储一个整数来查找一个整数是没有好处的。。。只需存储原始整数。对于其中一些,您可以通过使用small-intOk获得一些字节,我将尝试一下,并报告结果。谢谢你的指导。@michael_clarke-玩得开心