IM即时聊天系统-Openfire爬坑之路四 数据库

数据库架构指南

介绍

本文档概述了Openfire数据库架构中的数据类型约定和表。某些信息(例如列索引和外键)被省略。为此,请阅读您感兴趣的数据库的各个架构。

数据类型约定

日期列类型支持在数据库之间差异很大。因此,Openfire特别将日期编码为VARCHAR值。每个日期都是一个Java long值,该值0填充为15个字符。long值是Java Date对象的内部表示形式,可以通过如下代码获得:

long currentDate = new Date().getTime();

布尔值始终表示为一个数值:0表示false,1表示true。

数据库表

以下是Openfire数据库架构中每个表的说明。

| ofGroup (用户组数据) |

Column Name Type Length Description
groupName VARCHAR 50 组名(主键)
description VARCHAR 255 小组介绍

| ofGroupProp (组的名称-值关联) |

Column Name Type Length Description
groupName VARCHAR 50 组名(主键)
name VARCHAR 100 组属性名称(主键)
propValue VARCHAR 4000 组属性值

| ofGroupUser (将用户与组关联) |

Column Name Type Length Description
groupName VARCHAR 50 组名(主键)
username VARCHAR 100 用户名(主键)
administrator NUMBER n/a 管理员(布尔值)(主键)

| ofID (用于唯一ID序列生成) |

Column Name Type Length Description
idType NUMBER n/a ID类型(例如,组,用户,花名册)(主键)
id NUMBER n/a ID的下一个可用块(用于与数据库无关的ID序列生成器)

| ofOffline (离线消息存储) |

Column Name Type Length Change
username VARCHAR 32 User Name (Primary Key)
messageID NUMBER n/a 存储的消息的ID(主键)
creationDate VARCHAR 15 储存日期信息
messageSize NUMBER n/a 消息大小(以字节为单位)
stanza TEXT n/a 讯息文字

| ofPresence (离线状态) |

Column Name Type Length Change
username VARCHAR 64 用户名(主键)
offlinePresence TEXT n/a 设置为用户注销的状态消息
offlineDate CHAR 15 存储日期信息

| ofPrivate (私人数据存储) |

Column Name Type Length Description
username VARCHAR 32 用户名(主键)
name VARCHAR 100 私人条目的名称(主键)
namespace VARCHAR 200 私有条目的命名空间(主键)
privateData TEXT n/a 私人数据的值

| ofUser (用户数据) |

Column Name Type Length Description
username VARCHAR 32 用户名(主键)
plainPassword VARCHAR 32 纯文本密码数据
encryptedPassword VARCHAR 255 加密的密码数据(默认)
name VARCHAR 100 Name
email VARCHAR 100 电子邮件
creationDate VARCHAR 15 创立日期
modificationDate VARCHAR 15 最后修改日期

| ofUserProp (用户的名称/值关联) |

Column Name Type Length Description
username VARCHAR 32 用户名(主键)
name VARCHAR 100 用户属性名称(主键)
propValue VARCHAR 4000 用户属性值

| ofUserFlag (在用户上设置的特殊标志(如已禁用)) |

Column Name Type Length Description
username VARCHAR 64 用户名(主键)
name VARCHAR 100 用户属性名称(主键)
startTime CHAR 15 标志开始生效的时间(“ now”为空)
endTime CHAR 15 标志结束生效的时间(“ forever”(永远)为空)

| ofRoster (好友名单或列表) |

Column Name Type Length Description
rosterID NUMBER n/a 名册编号(主键)
username VARCHAR 32 User Name
jid TEXT n/a The address of the roster entry
sub NUMBER n/a 条目的订阅状态
ask NUMBER n/a 条目的请求状态
recv NUMBER n/a 指示条目是接收到的名册请求的标志
nick VARCHAR 255 分配给该名册条目的昵称

| ofRosterGroups (名册中的好友条目组) |

Column Name Type Length Description
rosterID NUMBER n/a 名册编号(主键)
rank NUMBER n/a 条目的位置(主键)
groupName VARCHAR 255 该名册组的用户定义名称

| ofPrivacyList (用户隐私列表) |

Column Name Type Length Description
username VARCHAR 32 隐私列表的名称(主密钥)
name VARCHAR 100 指示这是否是用户的默认隐私列表的标志
isDefault NUMBER n/a 指示这是否是用户的默认隐私列表的标志
list TEXT n/a 隐私列表的XML表示

| ofVCard (vCard联系信息) |

Column Name Type Length Description
username VARCHAR 32 用户名(主键)
vcard TEXT n/a vCard条目的值

| ofVersion (包含产品版本信息) |

Column Name Type Length Description
name VARCHAR 50 跟踪版本信息的项目的名称(主键)
version INTEGER n/a 版本号

| ofProperty (服务器属性) |

Column Name Type Length Description
name VARCHAR 100 属性名称(主键)
propValue TEXT n/a 条目的值

| ofExtComponentConf (外部组件配置) |

Column Name Type Length Description
subdomain VARCHAR 255 外部组件的子域(主键)
secret VARCHAR 255 外部组件的共享密钥
permission VARCHAR 10 指示是否允许组件连接到服务器的权限

| ofRemoteServerConf (远程服务器配置) |

Column Name Type Length Description
xmppDomain VARCHAR 255 外部组件的域(主键)
remotePort NUMBER n/a 远程服务器要连接的端口
permission VARCHAR 10 指示是否允许远程服务器连接到服务器的权限

| ofSecurityAuditLog (记录安全事件) |

Column Name Type Length Description
msgID NUMBER n/a 审核消息的ID(主密钥)
username VARCHAR 64 执行操作的用户
entryStamp NUMBER n/a 事件发生时的时间戳
summary VARCHAR 255 事件发生时的摘要
node VARCHAR 255 发生事件的节点
details TEXT n/a 详细的情况

| ofMucService (Groupchat服务) |

Column Name Type Length Description
serviceID NUMBER n/a 服务ID(索引)
subdomain VARCHAR 255 服务子域(主键)
description VARCHAR 255 服务说明
isHidden NUMBER n/a 如果从管理界面列表中隐藏则为1,正常为0

| ofMucServiceProp (Groupchat服务的名称-值关联) |

Column Name Type Length Description
serviceID NUMBER n/a 服务ID(主键)
name VARCHAR 100 属性名称(主键)
propValue TEXT n/a 适当的价值

| ofMucRoom (Groupchat房间数据) |

Column Name Type Length Description
roomID NUMBER n/a 房间ID(主键)
creationDate VARCHAR 15 创立日期
modificationDate VARCHAR 15 最后修改日期
name VARCHAR 50 用作公共ID的房间名称
naturalName VARCHAR 255 房间的自然名称
description VARCHAR 255 客房说明
canChangeSubject NUMBER n/a 指示参与者是否可以更改主题的标志
maxUsers NUMBER n/a 最多容纳人数
canChangeSubject NUMBER n/a 指示参与者是否可以更改主题的标志
publicRoom NUMBER n/a 指示房间是否将在目录中列出的标志
moderated NUMBER n/a 指示房间是否经过审核的标志
membersOnly NUMBER n/a 指示房间是否为会员制的标志
canInvite NUMBER n/a 指示居住者是否可以邀请其他用户的标志
roomPassword VARCHAR 50 进入会议室的密码数据
canDiscoverJID NUMBER n/a 指示乘员的真实JID是否公开的标志
logEnabled NUMBER n/a 指示是否记录会议室对话的标志
subject VARCHAR 100 房间的最后已知主题
rolesToBroadcast NUMBER n/a 广播角色的二进制表示
useReservedNick NUMBER n/a 标记,指示用户是否只能使用其保留的昵称加入会议室
canChangeNick NUMBER n/a 指示居住者是否可以更改房间昵称的标志
canRegister NUMBER n/a 标记,指示是否允许用户在会议室注册

| ofMucRoomProp (Groupchat房间的名称-值关联) |

Column Name Type Length Description
roomID NUMBER n/a 房间ID(主键)
name VARCHAR 100 属性名称(主键)
propValue VARCHAR 4000 适当的价值

| ofMucAffiliation (房间用户的隶属关系) |

Column Name Type Length Description
roomID NUMBER n/a 房间ID(主键)
jid TEXT n/a 用户JID(主密钥)
affiliation NUMBER n/a 代表隶属级别的数字

| ofMucMember (会议室成员信息) |

Column Name Type Length Description
roomID NUMBER n/a 房间ID(主键)
jid TEXT n/a 用户JID(主密钥)
nickname VARCHAR 255 会员的保留昵称

| ofMucConversationLog (聊天室记录) |

Column Name Type Length Description
roomID NUMBER n/a 房间编号
sender TEXT n/a 将消息发送到会议室的用户的JID
nickname VARCHAR 255 用户在发送消息时使用的昵称
logTime VARCHAR 15 邮件发送到会议室的日期
subject VARCHAR 50 消息更改了新主题
body TEXT n/a 消息正文

| ofPubsubNode (pubsub服务的节点) |

Column Name Type Length Description
serviceID VARCHAR 100 托管节点的服务的标识(主键)
nodeID VARCHAR 100 节点ID(主键)
leaf NUMBER n/a 指示节点是叶节点还是集合节点的标志
creationDate VARCHAR 15 创立日期
modificationDate VARCHAR 15 最后修改日期
parent VARCHAR 100 父节点的ID(如果有)
deliverPayloads NUMBER n/a 指示有效载荷是否包含在通知中的标志
maxPayloadSize NUMBER n/a 有效负载的最大大小(以字节为单位)
persistItems NUMBER n/a 指示节点是否将持久保存已发布项目的标志
maxItems NUMBER n/a 最多可保留的项目数
notifyConfigChanges NUMBER n/a 指示节点配置更改时是否发送通知的标志
notifyDelete NUMBER n/a 指示删除节点时是否发送通知的标志
notifyRetract NUMBER n/a 指示删除已发布项目时是否发送通知的标志
presenceBased NUMBER n/a 指示是否仅向用户发送通知的标记
sendItemSubscribe NUMBER n/a 指示是否将最近发布的项目发送给新订户的标志
publisherModel VARCHAR 15 节点使用的发布者模型
subscriptionEnabled NUMBER n/a 指示是否允许订阅的标志
configSubscription NUMBER n/a 指示是否必须配置新订阅才能激活的标志
accessModel VARCHAR 10 节点使用的访问模型
payloadType VARCHAR 100 要在节点上提供的有效载荷数据的类型
bodyXSLT VARCHAR 100 XSLT的URL,用于将有效载荷格式转换为消息正文
dataformXSLT VARCHAR 100 XSLT的URL,用于将有效载荷格式转换为Data Forms结果
creator VARCHAR 1024 创建节点的实体的JID
description VARCHAR 255 节点说明
language VARCHAR 255 节点的默认语言
name VARCHAR 50 节点名称
replyPolicy VARCHAR 15 定义所有者或发布者应收到对项目的答复的策略
associationPolicy VARCHAR 15 定义谁可以将叶节点与集合关联的策略
maxLeafNodes NUMBER n/a 收集节点可能具有的最大叶节点数

| ofPubsubNodeJIDs (与节点关联的JID) |

Column Name Type Length Description
serviceID VARCHAR 100 托管节点的服务的标识(主键)
nodeID VARCHAR 100 节点ID(主键)
jid VARCHAR 1024 实体的JID(主键)
associationType VARCHAR 20 与节点的关联类型

| ofPubsubNodeGroups (与节点关联的角色组) |

Column Name Type Length Description
serviceID VARCHAR 100 托管节点的服务的ID
nodeID VARCHAR 100 节点ID
rosterGroup VARCHAR 100 节点所有者的花名册组允许订阅和检索项目

| ofPubsubAffiliation (节点会员) |

Column Name Type Length Description
serviceID VARCHAR 100 托管节点的服务的标识(主键)
nodeID VARCHAR 100 节点ID(主键)
jid VARCHAR 1024 会员的JID (主键)
affiliation VARCHAR 10 Type of affiliation

| ofPubsubItem (发布到节点的项目) |

Column Name Type Length Description
serviceID VARCHAR 100 托管节点的服务的标识(主键)
nodeID VARCHAR 100 节点ID(主键)
id VARCHAR 100 发布项目的ID(每个节点唯一)(主键)
jid VARCHAR 1024 发布者的JID
creationDate VARCHAR 15 创立日期
payload TEXT n/a 包含在已发布项目中的有效负载的XML

| ofPubsubSubscription (节点的订阅) |

Column Name Type Length Description
serviceID VARCHAR 100 托管节点的服务的标识(主键)
nodeID VARCHAR 100 节点ID(主键)
id VARCHAR 100 订阅ID(主密钥)
jid VARCHAR 1024 接收通知的地址
owner VARCHAR 1024 拥有订阅的会员的JID
state VARCHAR 15 订阅状态(在工作流程中)
deliver NUMBER n/a 指示是否启用通知的标志
digest NUMBER n/a 指示实体是否要接收通知摘要的标志
digest_frequency NUMBER n/a 发送任何两个通知摘要之间的最小毫秒数
expire VARCHAR 15 租赁订阅结束或结束的日期
includeBody NUMBER n/a 指示实体是否除了有效载荷格式之外还希望接收消息正文的标志
showValues VARCHAR 30 实体要接收其通知的状态
subscriptionType VARCHAR 10 订户是订阅项目还是节点(仅限集合节点)
subscriptionDepth NUMBER n/a 接收来自特定深度的孩子的通知(仅收集节点)
keyword VARCHAR 200 活动需要匹配的关键字

| ofPubsubDefaultConf (节点的默认配置) |

Column Name Type Length Description
serviceID VARCHAR 100 托管节点的服务的标识(主键)
leaf NUMBER n/a 指示配置是属于叶节点还是集合节点的标志(主键)
deliverPayloads NUMBER n/a 指示有效载荷是否包含在通知中的标志
maxPayloadSize NUMBER n/a 有效负载的最大大小(以字节为单位)
persistItems NUMBER n/a 指示节点是否将持久保存已发布项目的标志
maxItems NUMBER n/a 最多可保留的项目数
notifyConfigChanges NUMBER n/a 指示节点配置更改时是否发送通知的标志
notifyDelete NUMBER n/a 指示删除节点时是否发送通知的标志
notifyRetract NUMBER n/a 指示删除已发布项目时是否发送通知的标志
presenceBased NUMBER n/a 指示是否仅向用户发送通知的标志
sendItemSubscribe NUMBER n/a 指示是否将最近发布的项目发送给新订户的标志
publisherModel VARCHAR 15 节点使用的发布者模型
subscriptionEnabled NUMBER n/a 指示是否允许订阅的标志
accessModel VARCHAR 10 节点使用的访问模型
language VARCHAR 255 节点的默认语言
replyPolicy VARCHAR 15 定义所有者或发布者应收到对项目的答复的策略
associationPolicy VARCHAR 15 定义谁可以将叶节点与集合关联的策略
maxLeafNodes NUMBER n/a 收集节点可能具有的最大叶节点数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容