Tigase 数据库结构

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_*表示归档组件使用的表,主要:

Tigase 数据库结构插图

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(消息历史表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1idvarchar(128)NY用户JID
2expireddatetimeN过期时间
3msgvarchar(4096)N消息内容

2. broadcast_msgs_recipients(历史消息与接收人关系表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1msg_idvarchar(128)NY消息ID
2jid_idbigint(20)NY用户JID

3. cluster_nodes(集群节点表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1hostnamevarchar(255)NY节点的主机名称
2passwordvarchar(255)N节点密码
3last_updatetimestampN节点数据更新时间
4portint(11)Y节点端口
5cpu_usagedoubleN节点CPU使用量
6mem_usagedoubleN节点内存使用量

4. his_muc_history(聊天室历史消息表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1room_namechar(128)N房间ID
2event_typeint(11)Y节点密码
3timestampbigint(20)Y消息时间
4sender_jidvarchar(2049)Y消息发送者JID
5sender_nicknamechar(128)Y消息发送者昵称
6bodytextY消息内容
7public_eventtinyint(1)Y发送结果?
8msgtextY消息报文

5. his_tig_muc_members(聊天室历史成员表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1idbigint(20)NY
2jidvarchar(30)N成员JID
3room_jidvarchar(250)N房间ID
4update_timetimestampY成员加入时间

6. his_tig_nodes(IM属性节点树历史表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1nidbigint(20)N节点ID
2parent_nidbigint(20)Y父节点ID
3uidbigint(20)N用户UID
4nodevarchar(255)N属性名称

7. his_tig_pairs(IM属性数据历史表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1nidbigint(20)YIM属性节点ID
2uidbigint(20)N用户UID
3pkeyvarchar(255)N属性键
4pvalmediumtextY属性值

8. mm_ma_msgs_tags(用来存储用户收发消息所拥有的标签表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1msg_idbigint(20)N消息表ID
2tagvarchar(36)N元素标签

9. msg_history(离线消息表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1msg_idbigint(20)N消息ID
2tstimestampN消息时间
3expireddatetimeY过期时间
4sender_uidbigint(20)Y消息发送者UID
5receiver_uidbigint(20)N消息接收者UID
6msg_typeint(11)N类型:1,message;2,presence
7messagevarchar(4096)N消息报文

10. muc_history(聊天室消息表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1room_namechar(128)N房间ID
2event_typeint(11)Y
3timestampbigint(20)Y消息时间
4sender_jidvarchar(2049)Y消息发送者JID
5sender_nicknamechar(128)Y消息发送者昵称
6bodytextY消息内容
7public_eventtinyint(1)Y发送结果?
8msgtextY消息报文

11. short_news(短消息表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1snidbigint(20)NY消息ID
2publishing_timetimestampN发布时间
3news_typevarchar(10)Y消息类型
4authorvarchar(128)N消息作者
5subjectvarchar(128)N消息主题
6bodyvarchar(1024)N消息内容

12. tig_ma_jids(IM消息与IM用户JID关系表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1jid_idbigint(20)NY用户JID_ID
2jidvarchar(2049)Y用户JID

13. tig_ma_msgs(IM消息表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1msg_idbigint(20)NY消息ID
2owner_idbigint(20)Y所有者JID_ID,对应tig_ma_jids的ID
3buddy_idbigint(20)Y对方的JID_ID,对应tig_ma_jids的ID
4tstimestampN消息时间
5directionsmallint(6)Y消息传递方向。 0/1 发/收
6typevarchar(20)Y消息类型
7bodytextY消息内容
8msgtextY消息报文
9stanza_hashvarchar(50)Y消息标识
10buddy_resvarchar(1024)Y消息接收(发送)方JID资源

14. tig_ma_msgs_tags(IM消息与用户元素标签关系表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1msg_idbigint(20)N消息表ID
2tag_idbigint(20)N元素标签表ID

15. tig_ma_tags(存储用户拥有的元素标签表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1tag_idbigint(20)NY自增ID
2tagvarchar(255)Y元素标签
3owner_idbigint(20)N对应tig_ma_jids的jid_id

16. tig_muc_members(聊天室成员表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1idbigint(20)NY
2jidvarchar(30)N成员JID
3room_jidvarchar(250)N房间ID
4update_timetimestamp成员加入时间

17. tig_nodes(IM属性节点树表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1nidbigint(20)NY节点ID
2parent_nidbigint(20)Y父节点ID
3uidbigint(20)N用户UID
4nodevarchar(255)N属性名称

18. tig_pairs(IM属性数据表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1nidbigint(20)YIM属性节点ID
2uidbigint(20)N用户UID
3pkeyvarchar(255)N属性键
4pvalmediumtextY属性值

19. tig_pubsub_affiliations(订阅节点用户关系表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1node_idbigint(20)NY节点ID
2jid_idbigint(20)NY用户JID_ID,对应tig_pubsub_jids的JID_ID
3affiliationvarchar(20)N关系类型

20. tig_pubsub_items(订阅消息表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1node_idbigint(20)NY订阅节点ID
2idvarchar(1024)N
3id_sha1char(40)NY系统消息标识
4creation_datedatetime发布时间
5publisher_idbigint(20)发布者JID_ID,对应tig_pubsub_jids的JID_ID
6update_datedatetime更新时间
7datamediumtext订阅消息数据

21. tig_pubsub_jids(IM订阅消息与IM订阅用户关系表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1jid_idbigint(20)NY关系JID_ID
2jidvarchar(1024)N用户JID
3jid_sha1char(40)N关系标识

22. tig_pubsub_nodes(订阅节点表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1node_idbigint(20)YY节点ID
2service_idbigint(20)Y订阅服务ID
3namevarchar(1024)Y订阅节点
4name_sha1char(40)Y订阅节点标识
5typeint(11)Y节点类型。0/1,根节点/子节点?
6titlevarchar(1000)节点标题
7descriptionmediumtext节点描述
8creator_idbigint(20)创建者JID_ID,对应tig_pubsub_jids的JID_ID
9creation_datedatetime创建时间
10configurationmediumtext订阅节点属性
11collection_idbigint(20)

23. tig_pubsub_service_jids(订阅服务表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1service_idbigint(20)NY订阅服务ID
2service_jidvarchar(1024)N订阅服务JID
3service_jid_sha1char(40)N订阅服务标识

24. tig_pubsub_subscriptions(用户订阅节点表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1node_idbigint(20)NY订阅节点ID
2jid_idbigint(20)NY用户JID_ID,对应tig_pubsub_jids的JID_ID
3subscriptionchar(20)N订阅与否
4subscription_idchar(40)N订阅标识

25. tig_users(IM用户表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1uidbigint(20)NY用户UID
2user_idvarchar(2049)N用户JID
3sha1_user_idchar(128)N用户标识
4user_pwvarchar(255)用户密码
5acc_create_timetimestampN帐户创建时间
6last_logintimestampN最近登录时间
7last_logouttimestampN最近登出时间
8online_statusint(11)在线状态(不准确)?
9failed_loginsint(11)
10account_statusint(11)

26. user_jid(IM用户与JID关系表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1jid_idbigint(20)NY用户JID_ID
2jid_shachar(128)N关系标识
3jidvarchar(2049)N用户JID
4history_enabledint(11)

27. xmpp_stanza(临时消息表)

*序号**字段名称**类型(长度)**是否为空**主键**注释**备注*
1idbigint(20)NY
2stanzatextN报文内容

作者:被禁言文章转简书了
链接:https://juejin.cn/post/6844904194588016653
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
Tigase
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论