小编How*_*ame的帖子

用户活动记录的架构设计

我正在设计一个模式来支持用户活动的日志记录,用户必须能够搜索:

  • 跨所有事件(任何类型的事件),具有日期时间范围,按用户名;
  • 跨一种类型的事件,与上述相同,另外还有该模块的参数。

我创建了这个架构:

在此处输入图片说明

并设计查询以进行搜索:

  • 在所有事件中:

    SELECT extract(epoch from log_time) * 1000,
      u.username,
      CASE WHEN l.event_type IN (0, 2) THEN e.template
        WHEN l.event_type = 1 THEN format(e.template, ecs.field)
        WHEN l.event_type = 3 THEN format(e.template, ess.field)
        WHEN l.event_type = 4 THEN format(e.template, ect.ip, ect.port)
      END
    FROM logs l
    JOIN users u ON u.id = l.user_id
    JOIN event_def e ON e.id = l.event_type
    LEFT JOIN event_client_search ecs ON ecs.log_id = l.id
    LEFT JOIN event_switch_search ess ON ess.log_id = l.id
    LEFT JOIN event_cable_test …
    Run Code Online (Sandbox Code Playgroud)

postgresql database-design

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

database-design ×1

postgresql ×1