1 核心****Schema
主要是3个表:tig_users, tig_nodes,和tig_pairs
这3个表定义了一个可扩展的“用户”数据存储框架。
1、1 tig_users****表
这个表定义了基本的用户信息,包括:
l uid 唯一主键
l user_id Jid
l sha1_user_id=sha1(user_id)
l user_pw =ALG(pass) 只有使用默认AUTH才有用,ALT=MD5(pass|userid+pass)..
l acc_create_time 创建时间
l last_login 最后登录时间
l online_status 在线状态(默认0)
l failed_logins 登录失败次数
l account_status 必须>0有效
1、2 tig_nodes****表
用来定义可扩展属性的树结构,属性必须放在“树形的节点上”,相当于文件系统的路径,访问格式事path1/path2[/…]
默认用户有一个root节点。
数据库是一个“递归格式的”标准树形表,有一个parent_nid指向父节点。
主要属性:
l 节点:nid
l 用户:uid
l 父类节点:parent_nid
l 节点名称:node
1、3 tig_pairs****表
这个表用来存储属性数据,它必须在一个用户和某个节点下,主要属性:
l 节点:nid
l 用户:uid
l 属性键:pkey
l 属性值:pval
2 订阅发布**(pubsub)Schema**
2、1 订阅服务**(tig_pubsub_service_jids)**
描述了订阅发布服务,这种设计允许支持多个订阅发布服务。
属性:
l 服务id
l 服务jid
l 服务jid sha1
2、2 节点**(tig_pubsub_nodes)**
节点是一个订阅发布消息的“主题”,支持树形结构,也就是高层节点发布,下层的节点也会收到。
消息订阅者订阅某个“节点”,消息发布这把消息发布发布某个节点,从而实现了双向透明的消息交换。
属性:
l 节点标识 node_id
l 服务id service_id
l 节点名称 name
l 名称sha1 name_sha1
l 节点类型: 0|1
l 节点标题 title
l 节点描述 description
l 创建者id creator_id
l 创建时间 creation_date
l 配置(xml) configuration
l collection_id
2、3 订阅用户**(tig_pubsub_jids)**
存储订阅用户信息,属性:
l id
l jid 用户id
2、4 节点**/用户关系(tig_pubsub_affiliations)**
定义了的节点哪些用户订阅了,是“节点表”和“用户表”的一个多对多关系表。
属性:
l 节点标识 node_id
l 用户标识 jid_id
l 关系类型:owner|member
2、5 发布项**(tig_pubsub_items)-**即消息
定义发布的消息。
属性:
l 节点标识 node_id
l 消息标识 id
l Id_sha1 id_sha1
l 创建时间 creation_date
l 发布者uid publisher_id
l 更新日期 update_date
l 数据:任意格式的数据,如下:
1329999999900000311奔驰修理厂add_member
2、6 订阅**(tig_pubsub_subscriptions)**
这个表的那些用户订阅了某个节点。(语节点用户关系表有一定重复)。
属性:
l node_id 节点
l jid_id 用户
l subscription 订阅,值为(subscribed|…)
l subscription_id 订阅标识
3 离线消息
3、1 msg_history**(表名有问题)**
这个表用来存放用户离线时需要送到的消息。
属性:
l 消息标识 msg_id
l 时间 ts
l 发送者id sender_uid
l 接收者id receiver_uid
l 消息类型 msg_type
l 消息内容 message
4 消息归档
tig_ma_*表示归档组件使用的表,主要:
4、1 tig_ma_jids
定义了消息归档的用户信息。
存储用户信息,属性:
l jid_id
l jid 用户id
4、2 tig_ma_msgs
用来存储某个用户“收发”的消息。
l msg_id
l owner_id 表tig_ma_jids的jid_id
l buddy_id 表tig_ma_jids的jid_id
l ts 消息产生时间
l direction 0(to)|1(from)
l type 类型
l body 消息内容
l msg 消息报文
l stanza_hash sha-256(peer、id、body)加密计算
l buddy_res 设备
4、3 tig_ma_msgs_tags
表tig_ma_msgs和表tig_ma_tags中间表
属性:
l msg_id 表tig_ma_tags中msg_id
l tag_id 表tig_ma_tags中tag_id
4、4 tig_ma_tags
用来存储用户拥有的元素标签
属性:
l tag_id 自生主键
l tag 元素标签
l owner_id 表tig_ma_jids的jid_id
4、5 mm_ma_msgs_tags
用来存储用户收发消息所拥有的标签
属性:
l msg_id 表tig_ma_msgs中msg_id
l tag 元素标签
5 MUC****消息历史
5、1 muc_history
这个表用来存储MUC消息的历史。
事实上,消息归档也支持MUC消息的归档。
属性:
l room_name roomjid
l event_type 默认1
l timestamp 时间戳
l sender_jid jid
l sender_nickname 昵称
l body 消息内容
l public_event 0
l msg 消息报文
6 消息传送
6、1 broadcast_msgs
这个表用来存储广播消息
属性:
l id 消息唯一表示id
l expired 消息过期时间
l msg 简化处理后的消息报文
6、2 broadcast_msgs_recipients
这个表用来存储已接收该广播消息人,防止重复接收
属性:
l msg_id 消息id(表broadcast_msgs的id)
l jid_id 接收消息jid
7 短消息
7、1 short_news
这个表用来存储短消息
属性:
l snid
l publishing_time 发布时间
l news_type 类型
l author 作者
l subject 主题
l body 内容
8 聊天室成员
8、1 tig_muc_members
这个表用来存储MUC聊天成员。
属性:
l id
l jid jid
l room_jid 聊天室jid
l update_time 最后动态时间
9 链接清单
9、1 ucpaas_bill_list
这个表用来记录连接清单
属性:
l ID
l FROM_CLIENT 来源
l TO_CLIENT 目的地
l START_TIME 开始时间
l END_TIME 结束时间
l TOTAL_TIME 总时长
l FEE 费用
10 记录用户
10.1 user_jid
这个表用来记录用户jid
属性:
l jid_id
l jid_sha sha1(jid)
l jid jid
l history_enabled 默认0
11 消息节点
11.1 xmpp_stanza
这个表用来暂时储存消息节点,用于检测xml消息格式是否正确,并添加xml注释处理、限制每个字符字符数
属性:
l id
l stanza 节点
表字典
1、 broadcast_msgs(消息历史表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | id | varchar(128) | N | Y | 用户JID | |
2 | expired | datetime | N | 过期时间 | ||
3 | msg | varchar(4096) | N | 消息内容 |
2、 broadcast_msgs_recipients(历史消息与接收人关系表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | msg_id | varchar(128) | N | Y | 消息ID | |
2 | jid_id | bigint(20) | N | Y | 用户JID |
3、 cluster_nodes(集群节点表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | hostname | varchar(255) | N | Y | 节点的主机名称 | |
2 | password | varchar(255) | N | 节点密码 | ||
3 | last_update | timestamp | N | 节点数据更新时间 | ||
4 | port | int(11) | Y | 节点端口 | ||
5 | cpu_usage | double | N | 节点CPU使用量 | ||
6 | mem_usage | double | N | 节点内存使用量 |
4、 his_muc_history(聊天室历史消息表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | room_name | char(128) | N | 房间ID | ||
2 | event_type | int(11) | Y | 节点密码 | ||
3 | timestamp | bigint(20) | Y | 消息时间 | ||
4 | sender_jid | varchar(2049) | Y | 消息发送者JID | ||
5 | sender_nickname | char(128) | Y | 消息发送者昵称 | ||
6 | body | text | Y | 消息内容 | ||
7 | public_event | tinyint(1) | Y | 发送结果? | ||
8 | msg | text | Y | 消息报文 |
5、 his_tig_muc_members(聊天室历史成员表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | id | bigint(20) | N | Y | ||
2 | jid | varchar(30) | N | 成员JID | ||
3 | room_jid | varchar(250) | N | 房间ID | ||
4 | update_time | timestamp | Y | 成员加入时间 |
6、 his_tig_nodes(IM属性节点树历史表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | nid | bigint(20) | N | 节点ID | ||
2 | parent_nid | bigint(20) | Y | 父节点ID | ||
3 | uid | bigint(20) | N | 用户UID | ||
4 | node | varchar(255) | N | 属性名称 |
7、 his_tig_pairs(IM属性数据历史表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | nid | bigint(20) | Y | IM属性节点ID | ||
2 | uid | bigint(20) | N | 用户UID | ||
3 | pkey | varchar(255) | N | 属性键 | ||
4 | pval | mediumtext | Y | 属性值 |
8、 mm_ma_msgs_tags(用来存储用户收发消息所拥有的标签表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | msg_id | bigint(20) | N | 消息表ID | ||
2 | tag | varchar(36) | N | 元素标签 |
9、 msg_history(离线消息表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | msg_id | bigint(20) | N | 消息ID | ||
2 | ts | timestamp | N | 消息时间 | ||
3 | expired | datetime | Y | 过期时间 | ||
4 | sender_uid | bigint(20) | Y | 消息发送者UID | ||
5 | receiver_uid | bigint(20) | N | 消息接收者UID | ||
6 | msg_type | int(11) | N | 类型:1,message;2,presence | ||
7 | message | varchar(4096) | N | 消息报文 |
10. muc_history(聊天室消息表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | room_name | char(128) | N | 房间ID | ||
2 | event_type | int(11) | Y | |||
3 | timestamp | bigint(20) | Y | 消息时间 | ||
4 | sender_jid | varchar(2049) | Y | 消息发送者JID | ||
5 | sender_nickname | char(128) | Y | 消息发送者昵称 | ||
6 | body | text | Y | 消息内容 | ||
7 | public_event | tinyint(1) | Y | 发送结果? | ||
8 | msg | text | Y | 消息报文 |
11. short_news(短消息表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | snid | bigint(20) | N | Y | 消息ID | |
2 | publishing_time | timestamp | N | 发布时间 | ||
3 | news_type | varchar(10) | Y | 消息类型 | ||
4 | author | varchar(128) | N | 消息作者 | ||
5 | subject | varchar(128) | N | 消息主题 | ||
6 | body | varchar(1024) | N | 消息内容 |
12. tig_ma_jids(IM消息与IM用户JID关系表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | jid_id | bigint(20) | N | Y | 用户JID_ID | |
2 | jid | varchar(2049) | Y | 用户JID |
13. tig_ma_msgs(IM消息表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | msg_id | bigint(20) | N | Y | 消息ID | |
2 | owner_id | bigint(20) | Y | 所有者JID_ID,对应tig_ma_jids的ID | ||
3 | buddy_id | bigint(20) | Y | 对方的JID_ID,对应tig_ma_jids的ID | ||
4 | ts | timestamp | N | 消息时间 | ||
5 | direction | smallint(6) | Y | 消息传递方向。 0/1 发/收 | ||
6 | type | varchar(20) | Y | 消息类型 | ||
7 | body | text | Y | 消息内容 | ||
8 | msg | text | Y | 消息报文 | ||
9 | stanza_hash | varchar(50) | Y | 消息标识 | ||
10 | buddy_res | varchar(1024) | Y | 消息接收(发送)方JID资源 |
14. tig_ma_msgs_tags(IM消息与用户元素标签关系表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | msg_id | bigint(20) | N | 消息表ID | ||
2 | tag_id | bigint(20) | N | 元素标签表ID |
15. tig_ma_tags(存储用户拥有的元素标签表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | tag_id | bigint(20) | N | Y | 自增ID | |
2 | tag | varchar(255) | Y | 元素标签 | ||
3 | owner_id | bigint(20) | N | 对应tig_ma_jids的jid_id |
16. tig_muc_members(聊天室成员表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | id | bigint(20) | N | Y | ||
2 | jid | varchar(30) | N | 成员JID | ||
3 | room_jid | varchar(250) | N | 房间ID | ||
4 | update_time | timestamp | 成员加入时间 |
17. tig_nodes(IM属性节点树表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | nid | bigint(20) | N | Y | 节点ID | |
2 | parent_nid | bigint(20) | Y | 父节点ID | ||
3 | uid | bigint(20) | N | 用户UID | ||
4 | node | varchar(255) | N | 属性名称 |
18. tig_pairs(IM属性数据表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | nid | bigint(20) | Y | IM属性节点ID | ||
2 | uid | bigint(20) | N | 用户UID | ||
3 | pkey | varchar(255) | N | 属性键 | ||
4 | pval | mediumtext | Y | 属性值 |
19. tig_pubsub_affiliations(订阅节点用户关系表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | node_id | bigint(20) | N | Y | 节点ID | |
2 | jid_id | bigint(20) | N | Y | 用户JID_ID,对应tig_pubsub_jids的JID_ID | |
3 | affiliation | varchar(20) | N | 关系类型 |
20. tig_pubsub_items(订阅消息表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | node_id | bigint(20) | N | Y | 订阅节点ID | |
2 | id | varchar(1024) | N | |||
3 | id_sha1 | char(40) | N | Y | 系统消息标识 | |
4 | creation_date | datetime | 发布时间 | |||
5 | publisher_id | bigint(20) | 发布者JID_ID,对应tig_pubsub_jids的JID_ID | |||
6 | update_date | datetime | 更新时间 | |||
7 | data | mediumtext | 订阅消息数据 |
21. tig_pubsub_jids(IM订阅消息与IM订阅用户关系表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | jid_id | bigint(20) | N | Y | 关系JID_ID | |
2 | jid | varchar(1024) | N | 用户JID | ||
3 | jid_sha1 | char(40) | N | 关系标识 |
22. tig_pubsub_nodes(订阅节点表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | node_id | bigint(20) | Y | Y | 节点ID | |
2 | service_id | bigint(20) | Y | 订阅服务ID | ||
3 | name | varchar(1024) | Y | 订阅节点 | ||
4 | name_sha1 | char(40) | Y | 订阅节点标识 | ||
5 | type | int(11) | Y | 节点类型。0/1,根节点/子节点? | ||
6 | title | varchar(1000) | 节点标题 | |||
7 | description | mediumtext | 节点描述 | |||
8 | creator_id | bigint(20) | 创建者JID_ID,对应tig_pubsub_jids的JID_ID | |||
9 | creation_date | datetime | 创建时间 | |||
10 | configuration | mediumtext | 订阅节点属性 | |||
11 | collection_id | bigint(20) |
23. tig_pubsub_service_jids(订阅服务表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | service_id | bigint(20) | N | Y | 订阅服务ID | |
2 | service_jid | varchar(1024) | N | 订阅服务JID | ||
3 | service_jid_sha1 | char(40) | N | 订阅服务标识 |
24. tig_pubsub_subscriptions(用户订阅节点表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | node_id | bigint(20) | N | Y | 订阅节点ID | |
2 | jid_id | bigint(20) | N | Y | 用户JID_ID,对应tig_pubsub_jids的JID_ID | |
3 | subscription | char(20) | N | 订阅与否 | ||
4 | subscription_id | char(40) | N | 订阅标识 |
25. tig_users(IM用户表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | uid | bigint(20) | N | Y | 用户UID | |
2 | user_id | varchar(2049) | N | 用户JID | ||
3 | sha1_user_id | char(128) | N | 用户标识 | ||
4 | user_pw | varchar(255) | 用户密码 | |||
5 | acc_create_time | timestamp | N | 帐户创建时间 | ||
6 | last_login | timestamp | N | 最近登录时间 | ||
7 | last_logout | timestamp | N | 最近登出时间 | ||
8 | online_status | int(11) | 在线状态(不准确)? | |||
9 | failed_logins | int(11) | ||||
10 | account_status | int(11) |
26. user_jid(IM用户与JID关系表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | jid_id | bigint(20) | N | Y | 用户JID_ID | |
2 | jid_sha | char(128) | N | 关系标识 | ||
3 | jid | varchar(2049) | N | 用户JID | ||
4 | history_enabled | int(11) |
27. xmpp_stanza(临时消息表)
*序号* | *字段名称* | *类型(长度)* | *是否为空* | *主键* | *注释* | *备注* |
---|---|---|---|---|---|---|
1 | id | bigint(20) | N | Y | ||
2 | stanza | text | N | 报文内容 |