links
This commit is contained in:
46
scripts/db/sql/clickhouse/create_shorturl_table.sql
Normal file
46
scripts/db/sql/clickhouse/create_shorturl_table.sql
Normal file
@@ -0,0 +1,46 @@
|
||||
-- 使用shorturl_analytics数据库
|
||||
USE shorturl_analytics;
|
||||
|
||||
-- 删除已存在的shorturl表
|
||||
DROP TABLE IF EXISTS shorturl_analytics.shorturl;
|
||||
|
||||
-- 创建shorturl表
|
||||
CREATE TABLE IF NOT EXISTS shorturl_analytics.shorturl (
|
||||
-- 短链接基本信息(来源于resources表)
|
||||
id String COMMENT '资源ID (resources.id)',
|
||||
external_id String COMMENT '外部ID (resources.external_id)',
|
||||
type String COMMENT '类型,值为shorturl',
|
||||
slug String COMMENT '短链接slug (存储在attributes中)',
|
||||
original_url String COMMENT '原始URL (存储在attributes中)',
|
||||
title String COMMENT '标题 (存储在attributes中)',
|
||||
description String COMMENT '描述 (存储在attributes中)',
|
||||
attributes String DEFAULT '{}' COMMENT '资源属性JSON',
|
||||
schema_version Int32 COMMENT 'Schema版本',
|
||||
-- 创建者信息
|
||||
creator_id String COMMENT '创建者ID (resources.creator_id)',
|
||||
creator_email String COMMENT '创建者邮箱 (来自users表)',
|
||||
creator_name String COMMENT '创建者名称 (来自users表)',
|
||||
-- 时间信息
|
||||
created_at DateTime64(3) COMMENT '创建时间 (resources.created_at)',
|
||||
updated_at DateTime64(3) COMMENT '更新时间 (resources.updated_at)',
|
||||
deleted_at Nullable(DateTime64(3)) COMMENT '删除时间 (resources.deleted_at)',
|
||||
-- 项目关联 (project_resources表)
|
||||
projects String DEFAULT '[]' COMMENT '项目关联信息数组。结构: [{project_id: String, project_name: String, project_description: String, assigned_at: DateTime64}]',
|
||||
-- 团队关联 (通过项目关联到团队)
|
||||
teams String DEFAULT '[]' COMMENT '团队关联信息数组。结构: [{team_id: String, team_name: String, team_description: String, via_project_id: String}]',
|
||||
-- 标签关联 (resource_tags表)
|
||||
tags String DEFAULT '[]' COMMENT '标签关联信息数组。结构: [{tag_id: String, tag_name: String, tag_type: String, created_at: DateTime64}]',
|
||||
-- QR码关联 (qr_code表)
|
||||
qr_codes String DEFAULT '[]' COMMENT 'QR码信息数组。结构: [{qr_id: String, scan_count: Int32, url: String, template_name: String, created_at: DateTime64}]',
|
||||
-- 渠道关联 (channel表)
|
||||
channels String DEFAULT '[]' COMMENT '渠道信息数组。结构: [{channel_id: String, channel_name: String, channel_path: String, is_user_created: Boolean}]',
|
||||
-- 收藏关联 (favorite表)
|
||||
favorites String DEFAULT '[]' COMMENT '收藏信息数组。结构: [{favorite_id: String, user_id: String, user_name: String, created_at: DateTime64}]',
|
||||
-- 自定义过期时间 (存储在attributes中)
|
||||
expires_at Nullable(DateTime64(3)) COMMENT '过期时间',
|
||||
-- 统计信息 (分析时聚合计算)
|
||||
click_count UInt32 DEFAULT 0 COMMENT '点击次数',
|
||||
unique_visitors UInt32 DEFAULT 0 COMMENT '唯一访问者数'
|
||||
) ENGINE = MergeTree() PARTITION BY toYYYYMM(created_at)
|
||||
ORDER BY
|
||||
(id, created_at) SETTINGS index_granularity = 8192 COMMENT '用于存储所有shorturl类型资源的统一表,集成了相关联的项目、团队、标签、QR码、渠道和收藏信息';
|
||||
Reference in New Issue
Block a user