一、Tigase数据库有很多张表,其中最主要的是3张表:tig_users,tig_nodes和tig_pairs。 #tig_users
tig_users存储用户信息,有uid(主键,用户ID),user_id(用户名),usr_pw(用户密码)等字段。 1.1 tig_users表 这个表定义了基本的用户信息,包括:
uid 唯一主键
user_id Jid
sha1_user_id=sha1(user_id)
user_pw =ALG(pass) 只有使用默认AUTH才有用,ALT=MD5(pass|userid+pass)..
acc_create_time 创建时间
last_login 最后登录时间
online_status 在线状态(默认0)
failed_logins 登录失败次数
account_status 必须>0有效
二、tig_nodes
tig_nodes是存储节点信息(用于把数据以层次的形式表现),有nid(主键,节点ID),parent_nid(父节点ID),uid(用户ID),node(节点类型)5个字段。每个uid对应5个节点:root,offline,privacy,invisible和msgoffline,以下是uid为14的用户对应的5个节点。
其结构层次如下:
root--privacy--offline
| |
invisible msgoffline
默认用户有一个root节点。 数据库是一个“递归格式的”标准树形表,有一个parent_nid指向父节点。 主要属性: 节点:nid 用户:uid 父类节点:parent_nid 节点名称:node
三、tig_pairs
tig_pairs没有主键,以(key,value)的形式存储节点的具体数据。uid为14的用户在tig_pairs中的数据如下: pval字段以XML格式存储,各行的含义如下:
(1)第1行是privacy-list,对应tig_nodes中的invisible节点,暂时不清楚什么意思;
(2)第2行是roster,对应tig_nodes中的root节点,存储该用户的好友列表;
(3)第3-5行是messages,对应tig_nodes中的msgoffline节点,即离线信息,表明当前该用户有3条未接收的离线信息。
msg_history 这个表用来存放用户离线时需要送到的消息。 属性: 消息标识 msg_id 时间 ts 发送者id sender_uid 接收者id receiver_uid 消息类型 msg_type 消息内容 message
StanzaType
error, // Common type
get, set, result, // iq types
available, unavailable, probe, subscribe, // presence types
subscribed, unsubscribe, unsubscribed, // presence types
chat, groupchat, headline, normal, // message types
valid, invalid, // Dialback verification packets
terminate, // Bosh - session termination stanza
invisible; // Other unknown types...
订阅发布(pubsub)Schema
tig_pubsub_service_jids 描述了订阅发布服务,这种设计允许支持多个订阅发布服务。 属性: 服务id 服务jid 服务jid sha1
tig_pubsub_nodes
节点是一个订阅发布消息的“主题”,支持树形结构,也就是高层节点发布,下层的节点也会收到。 消息订阅者订阅某个“节点”,消息发布这把消息发布发布某个节点,从而实现了双向透明的消息交换。 属性: 节点标识 node_id 服务id service_id 节点名称 name 名称sha1 name_sha1 节点类型: 0|1 节点标题 title 节点描述 description 创建者id creator_id 创建时间 creation_date 配置(xml) configuration collection_id
tig_pubsub_jids 存储订阅用户信息,属性: id jid 用户id
节点/用户关系(tig_pubsub_affiliations)