【交易技术前沿】基于关系数据库的XBRL通用存储模型 / 罗黎明 赵安

交易运维 (1.7万) 2015-08-07 14:56:20

罗黎明1,赵安2
1 中证机构间报价系统股份有限公司 北京 100033
2 中国证券监督管理委员会 信息中心 北京 100033
E-mail :luolm@sac.net.cn(联系人邮箱)

摘 要:自从1998年可扩展商业报告语言(XBRL)技术诞生以来,XBRL已经在世界多个国家和地区得到广泛的应用,随着其应用领域和数据量的迅速增加,统计、分析和挖掘各类XBRL数据的需求迅猛增长,使得针对XBRL数据的通用存储成为了一个迫切需要解决的问题。

本文对基于关系型数据库的XBRL通用存储模型和处理技术进行了研究,针对XBRL规范稳定、扁平化的技术特性,提出了XBRL数据通用存储框架,将XBRL数据存储分为原始数据、文件集、分类标准和实例文档等四个部分。在此基础上,提出了XBRL规范模式文件映射关系模式、分类标准和实例文档分别存储的三层映射转换存储模型。在模型中,根据XBRL技术规范的模式文件,采用对象映射的方法,设计XBRL技术规范模式文件到关系数据库的映射关系并生成XBRL通用存储的表结构、约束和数据字典。该模型实现了XBRL数据到关系数据的转换,使XBRL数据可以通过关系型数据库技术处理。在XBRL通用存储模型和框架的基础上,提出了XBRL分类标准和实例文档的存储、提取以及检索的处理方式,并对存储模型的性能进行了验证测试。

关键词:XBRL;关系型数据库;分类标准;实例文档;同一性分析

1 XBRL应用发展状况及面临的问题

从20世纪90年代末开始,XBRL技术逐渐成型并探索应用于财务报表的信息报送披露领域,到2011年中,世界主要发达国家和地区已开始在经济领域各行业全面推广XBRL。特别是在证券业监管、银行业监管、财会监管领域,XBRL更是得到了广泛的应用。

1.1 XBRL应用发展趋势

随着XBRL应用的迅速推广,XBRL应用的发展呈现以下趋势:

扩展分类标准的普遍应用:
XBRL发展的目标是在应用范围内统一商业报告的分类标准,用相同的元素及元素间的关系描述商业报告。同时,在大部分业务领域,保证商业报告业务内容完整性是XBRL需要满足的另外一个目标。由于报告本身的业务内容存在一定的差异、标准更新需要一定的时间周期等原因,在XBRL应用中需要引入分类标准的扩展机制。美国证监会中要求企业根据所遵循的会计准则,选择US GAAP或IFRS分类标准制作报告并可按实际需要自行扩展分类标准。中华人民共和国财政部则要求试点的企业和会计师事务所子通用分类标准基础上根据报告内容制定扩展分类标准,从实践效果来看,大部分报告中扩展的元素超过了其引用公共分类标准的元素数,有的企业甚至高达近70%。

数据量的快速增加:
在美国证监会,每天有几十至几千份XBRL报告通过Edgard 系统提交。而在中国证券市场,每年增加近1万份上市公司XBRL电子文档。基金电子化信息披露每天有近千份基金信息披露的XBRL报告提交至监管机构,截至2014年底,基金信息披露的实例文档已经达到150万份。

多分类标准、多报告的组合应用越来越广泛
随着全球经济的快速发展以及XBRL在全球应用的推广,跨境、跨市场的数据分析需求正快速增长。以信息披露为目的的XBRL应用逐步从单报告的展示披露转向宏观、分类别的统计分析。如上海证券交易所、深圳证券交易所均在信息披露网站中向公众提供了基于XBRL的财务指标对比功能;证监会基金信息披露网站则需要向公众提供按照基金类型、投资组合等多个角度进行统计的数据等。

随着全球经济的快速发展以及XBRL在全球应用的推广,跨境、跨市场的数据分析需求正快速增长。

基于已对公众披露的XBRL数据,越来越多的研究机构需要基于海量XBRL数据进行处理。

与其他非XBRL数据关联的应用需求越来越广泛:
随着XBRL在监管部门、行业以及企业内部的推广应用,与其他数据关联应用将越来越普遍。在企业中, XBRL应用需要与财务系统、报表系统、ERP系统等多种以关系型数据库系统的数据关联。在市场监管部门,监管者需要将XBRL数据与其他关系型数据结合应用,以发挥XBRL数据的巨大作用。

1.2 XBRL处理技术面临的问题

在报告数量急剧增加、扩展分类标准越来越广泛、跨报告并与非XBRL数据关联应用越来越广泛的背景下,以XBRL数据的应用为目标来分析,当前的XBRL存储技术存在着以下问题:

与其他关系型数据的关联应用问题:
随着XBRL应用的迅速发展,XBRL数据与其他数据源的集中、交叉应用逐步成为一些信息系统必须要解决的问题。以企业为例,XBRL应用需要与财务系统、报表系统以及ERP系统等多种以关系型数据库系统的数据关联应用。以文件存储、XML原生数据库为基础存储的XBRL数据直接与关系型数据库的关联处理不仅增加处理的复杂度,甚至在有些场景下无法满足业务应用的需求。

基于XML存储的应用处理技术成熟度与XBRL快速发展之间的矛盾:
XBRL并不是一种原创技术,它是XML在财务报告信息交换方面的一种应用,即 XBRL是由 XML衍生出来的标记语言,XBRL 技术的核心是XML。

虽然一些传统数据库产品支持XML,也有正在发展中的原生XML数据产品,但基于XML存储基础上的应用类处理软件及产品尚未普及,包括开发平台、数据挖掘工具等等。

对于许多已经运用数据库系统多年并积累了大量工作数据的客户,新旧路线的转换而带来的巨大工作量、风险以及巨额开支是无法承受的。另外, 基于XML的数据库系统使查询语言变得极其复杂,从而使得无论是数据库的开发商家还是应用客户都视其复杂的应用技术为畏途。

2 XBRL存储技术比较研究

目前对XBRL的应用采用的存储方式大致可以分为以下几种方式,也有将其中几种方式混合应用的方法[1]。

存储于文件系统中;

  1. 以大文本、二进制数据等“大对象”方式存储于关系型数据库中;
  2. 按报告业务内容构建关系型数据库存储模型;
  3. 存储于原生XML数据库中;

基于关系数据库的XML存储:
本章对现有的XBRL存储技术进行对比分析,为建立XBRL存储模型以及设计基于存储模型的技术处理策略奠定基础。

通过对以上5种存储方式的分析研究,本文对该5种存储方式从是否需要XML解析、XBRL语法解析、SQL处理的难易程度等几个角度作性能的对比分析。如表2-2所示,文件系统的方式无法保证文档的安全性和一致性,但是对XBRL实例文档内部所含的数据信息和层级信息保存完好,虽然没有造成数据失真,但是不利于数据的进一步分析挖掘,难于直接导入数据挖掘工具中生成有用信息;采用BLOB方式的关系型数据库的方式存储,基本上和采用文件系统方式进行存储相类似,但这种方式保证了文档的安全性和一致性,损失了文档及文档间的查询性能,是一种“受了保护”的文件系统存储;采用原生XML数据库存储完好保护了XBRL文档内的数据含义,并且对XBRL文档的存取速度快,但在文档间的横向查询速度较慢,不适合于频繁的数据对比分析的场合适用。而基于分类标准构建关系数据库、基于关系数据库的XML结构映射存储方法有无法满足多分类标准存储的通用性需求。基于关系数据库的XML模型映射方法虽然能够满足多分类标准的通用型问题,但其存储的方式过于底层从而导致存储数据访问过程中需要根据XBRL技术规范中所约定的语法模型来对存储数据进行解析,开发成本较高。

表1 XBRL数据存储方式的对比
【交易技术前沿】基于关系数据库的XBRL通用存储模型 / 罗黎明 赵安_https://www.tiejiang.org_交易运维_第1张

从对现有的XBRL数据存储方式的比对结果可以看出,每种方案有自己的优缺点,都是只能较好的达到XBRL数据存储的某方面的特点。本文将提供一个新的数据模型,为符合XBRL2.1规范[2]、XBRL维度规范[3]的XBRL数据提供通用、安全、高效的数据存储和查询能力,以适合XBRL数据的各种查询分析应用场景。

3 XBRL通用存储框架

根据基于关系型数据库实现XBRL存储的策略,本文将XBRL的数据分为原始数据、文件集、分类标准和实例文档四个部,如图1所示。
【交易技术前沿】基于关系数据库的XBRL通用存储模型 / 罗黎明 赵安_https://www.tiejiang.org_交易运维_第2张

图1 XBRL通用存储框架
【交易技术前沿】基于关系数据库的XBRL通用存储模型 / 罗黎明 赵安_https://www.tiejiang.org_交易运维_第3张

原始数据存储报告、分类标准的原始和基础信息。分类标准、报告是XBRL存储的基础单位,分类标准通常是指已经发布、在报告中会引用的公共分类标准。报告则是指包含扩展分类标准和实例文档在内的完整描述一份报告的XBRL数据。在一些应用系统中,会要求保存未经修改的原始数据,本模型采用大对象的方式将XBRL文件转换存储与关系型数据库的BLOB字段中。

文件集的存储对象是报告或分类标准的文件集关系的集合。为适应各种应用场景的需要,分类标准通常按照一定的组织方式对所定义的内容按文件进行拆分。在一些实例文档或扩展分类标准中,会指定引用公共分类标准中的一部分文件。依据这些引用关系而发现出来的DTS需要完整地保存在数据库中。

分类标准的存储分为概念定义(包括元素、组、扩展链接角色、弧角色、复杂类型等)、名称空间的映射关系和分类标准中的各类链接关系。分类标准存储的对象包括公共分类标准和报告扩展分类标准。

实例文档存储包括实例文档的文件信息、名称空间、上下文、单位、脚注以及事实数据。因涉及对维度的支持,将上下文中维度关系的定义单独存储。此外,为提高数据库的处理性能,大文本数据单独存储。

4 XBRL-关系数据库的映射

XBRL基于模式文件、XML文件的方式,构建了技术规范、分类标准和实例文档的三层结构。在转换为关系模式时,各层次的模式文件和XML文件进行不同的处理,如图3-1所示。规范模式文件(包括XBRL 2.1、Dimension 1.0)作为XBRL技术规范的描述文件,采用映射方法构建存储模型中的表结构、数据字典和约束。分类标准中定义的元素、类型以及链接关系、资源等,在存储时,按映射关系和转换方法存储于分类标准相关的表中。实例文档中的上下文、单位、事实数据、脚注等信息,在存储时,按映射关系和转换方法存储于实例文档相关的表中。
【交易技术前沿】基于关系数据库的XBRL通用存储模型 / 罗黎明 赵安_https://www.tiejiang.org_交易运维_第4张

XBRL技术规范和分类标准中的模式文件均以Schema文件为基础。Schema文件具有以下特性:

  1. XML Schema使用标准XML语法,本身就是一个XML文档,可以直接用成熟的XML文档解析器读取;
  2. XML Schema提供了丰富的数据类型,包括数字型、布尔型、日期型等等,并且可以定义新的数据类型,允许对数据进行更严格的合法性检查;
  3. XML Schema支持继承性,即可利用一个已有的 xMLschema产生一个新的 XML Sehema;
  4. XML Schema支持命名空间,保证了标记的唯一性;
  5. XML Schema的扩展性好,它的内容模型是开放的,可以随意扩充、更新等。

XML Sehema 主 要 有 sehema、element、attribute、choice、group、sequence 等保留字汇。

(1) schema

用于声明该 XML 文档是一个 schema文 档。 它 包 含 两 个 属 性 :name 指 定 该 schema 的名 称;xmlns 用 来 指 定 sehema 的 命 名 空 间。 如

(2) element
用 于 定 义 元 素,element 中 包 含name、type、minoccurs、maxoccurs 等 属 性。name 记录元素的名称。type 表示元素的类型,可以是简单数据类型 (simpletype) 或是自定义的复杂类型(complextype)。minoccurs、maxoccurs 表示元素在XML 实例中出现的次数范围。

(3) attribute
表示属性,嵌套在相应的元素中,包括name、typee、use 等属性。name 记录属性名,type表示属性类型,use 表示属性在元素中出现的情况,分为“fixed”、“optional”、“required”,“fixed”表示属性有一个确定的默认值,“optional”表示属性可以有一个默认值,“required”为缺省值,表示属性在元素中必须出现。

(4) choice
… 中出现的多个元素或元素组,只能有一个出现在每个 XML 文档实例中,相当于 DTD 中的‘|’操作符。

(5) group
用于将 XML 文档中的元素分组,一般嵌套在 中。

(6) sequence
用 于 表 示 元 素 出 现 的 序 列。 .. 内的一系列属性和元素成为一个序列,序列中的每个成员按该定义中出现的顺序出现在每个 XML 文档实例中。

XML Schema模式的映射方法,可以分别称之为对象映射方法和直接映射方法。基于XML Schema模式的对象映射方法的设计思想和基于DTD模式的对象映射方法相类似,即先将 XML Schema模式映射为对象模式,然后再将对象模式映射为关系数据库模式;直接映射方法的主要设计思想是根据一系列的映射法则,将模式中各元素的嵌套关系和层次结构映射成为关系数据库支持的标准SQL语句,从而在数据库中建立相应的表结构和约束关系。参考文献[4-9]中提出了一些基于 XML Sehema模式的映射方法,其中有对象映射方法,也有直接映射方法。本文主要讨论的是间接映射方法。

XBRL 规 范 模 式 文 件 到 关 系 模 式 的 映 射 分 为Schema 对象映射、对象模式到关系模式的映射两个过程。

(1) XBRL Schema 元素、类型及属性的提取在 XBRL Schema 映射表的生成过程中,对以下信息进行提取 :
- a) 值元素,多值元素是指在实例中出现次数大于1 的元素。
- b) 复杂元素,主要包括由复杂类型(complexType)定义的元素和由group或AttributeGroup 定义的组元素。
- c) 可选元素,可选元素分为两类,第一类是在
中出现的元素或元素组只能有一个出现在对应的 XML 实例中,第二类是 Minoccurs为 0 而 maxoccurs 不大于 1 的元素,即在 XML 实例文档中可以出现也可以不出现的元素。可选元素可以从 XBRL Schema 中提取出来,产生新的类型定义。
- d) 属性,主要包括模式文件中定义的属性。

2) XBRL Schema 到关系模式的映射
将XBRL Schema转换为DOM树。DOM树层次结构较复杂,为了完成到关系模式的映射,必须对子树进行划分。一个节点成为某一个子树的根节点 ( 即分级节点 ) 须满足以下条件中的任何一个 : 不能由其他节点到达的节点 ; 复杂元素节点。E-Schema 到关系模式的映射规则如下 :
- a) 对XBRL Schema 而言,每个类型对应一个关系 R,直接生成对应的表。
- b) 对每个生成的关系 R 含有关键字时,关键字作为该关系的主键 ; 没有关键字时,创建一个 ID 属性作为该关系的主键。
- c) XBRL Schema 中每个类型里的元素都映射成为相应关系表的字段,元素名称即为字段名。
- d) 从表示父子关系的表中找到该表的父表,用parent 加上父表的名称来命名,类型根据父表的主键类型确定,完成外键约束。
- e) 建表时根据 XBRL Schema 中的标志完成唯一性以及非空约束的映射,根据关键字引用表来完成表之间的主、外键关系约束。

## 5. 存储表的映射与生成
根据分级映射的方法,基于XBRL技术规范,需要生成表的分类标准元素和实例文档元素清单如表2、表3所示。

表2 需要生成表的分类标准元素

![](https://www.tiejiang.org/wp-content/uploads/2021/08/2021081714573613.png)

表3 需要生成表的实例文档元素
![](https://www.tiejiang.org/wp-content/uploads/2021/08/2021081714591447.png)

根据元素的类型及属性,映射存储表的结构。表名称为”tb”+ 元素名(首字母大写),元素的每个属性对应一个字段,其中部分资源类元素需要设置“value”字段用于存储实例中的真实值。

以 模 式 文 件 xbrl-linkbase-2003-12-31.xsd 中定义的”loc”元素为例,元素的定义及属性如图 3 所示。
![](https://www.tiejiang.org/wp-content/uploads/2021/08/2021081715034824.png)

根 据 元 素 名(loc)、 元 素 的 属 性(xbrl:type、xbrl:href、xlink:label、xlink:role、xlink:title),表定义为:tbLoc(xlink_type, xlink_href, xlink_label, xlink_role, xlink_title)

资源类元素(substitutionGroup="xl:resource"),在映射表中需要增加“value”字段以保存其在实例中的事实值,以 xbrl-linkbase-2003-12-31.xsd 中定义的 label 元素为例,label 元素的定义及属性如图 4 所示。
![](https://www.tiejiang.org/wp-content/uploads/2021/08/2021081715043423.png)
根据元素名(label)、元素的属性(xlink:type、xlink:label、xlink:role、xlink:title、id),表定义为:tbLabel(xlink_type,xlink_label,xlink_role,xlink_title,id,value);

## 6 性能测试
测试环境
硬件设备:
型号:HP DL580
配置:4C 2.4GHz, 8GB内存, 3*146G SAS硬盘;
操作系统:Linux
数据库系统:Oracle 10G

测试数据
报告数量:6495份
每份报告大小:7~9MB
每份报告事实数据: 3300~4000个
每份报告维度信息:600~650个
每份报告单位信息:20~30个
入库后数据量如表4所示。

表4测试数据的数据量
![](https://www.tiejiang.org/wp-content/uploads/2021/08/2021081715070776.png)

测试结果:
测试结果如表5所示,获取单个数据、获取单个报告的某张表格数据(不含维度,约50个数据项)、获取单个报告中某张表格的数据(含维度,约50个数据项)均在0.05秒内完成。

对于跨报告的统计,以1000份报告为例,不含维度表的统计约1.5秒,含维度的统计约2.5秒。

表5性能测试结果
![](https://www.tiejiang.org/wp-content/uploads/2021/08/2021081715072553.png)

## 7 小结
本文以XML结构映射技术为基础,基于XBRL技术规范,提出了XBRL规范模式文件映射关系模式、分类标准和实例文档分别存储的三层映射转换存储模型。在模型中,根据XBRL技术规范的模式文件,采用对象映射的方法,设计XBRL技术规范模式文件到关系数据库的映射关系并生成XBRL通用存储的表结构、约束和数据字典。在此基础上,将分类标准、实例文档分别存储于对应的表集合。

本文提出的框架和模型实现了XBRL数据到关系数据的转换,使XBRL数据可以通过传统的关系型数据库技术处理。由于充分利用了关系型数据库的优点,该模型具备高效的数据查询能力,适合海量的数据查询,支持单个数据项的查询和整张表数据的查询。该模型从XBRL的模式文件和链接库文件出发,可以真实还原模式文件和链接库文件。该模型吸取原生XML存储的优点存储XBRL文件,保证了XBRL文档的原貌,提高了生成和备份XBRL文件的效率,便于分类标准的备份和版本控制。

## 参考文献

[1] 肖美英,王宗宗. 基于混合数据库存储的XBRL财务信息管理体系探讨[J]. 财会通讯. 2011(07).

[2] XBRL International (XII) .XBRL Specification 2.1. 2008[2011-10-20]. http://www.xbrl.org/2008/XBRL-CONF-CR4-2008-07-02.rtf.

[3] XBRL International (XII) . XBRL Dimensions Specification1.0. 2009[2011-10-20].http://www.xbrl.org/Specification/XDT-REC-2006-09-18+Corrected-Errata-2009-09-07.rtf.

[4] 蔡小芳,张永胜. 关系模式与XML模式的相互转换[J].计算机系统应用.2005,10:83~86.

[5] 王健兵,夏春和. 基于模式的XML文档在关系数据库中存储的设计[J].计算机工程与设计.2005,26(11):3024~3027.

[6] 姜岩,潘平,王国仁. 基于XML Schema的XML与数据库转换技术研究[J]. 沈阳工业大学学报. 2006,28(3):307~310.

[7] 郝春辉,邹静. 基于XML Schema的XML存储[J]. 计算机工程与应用. 2006(11).

[8] Han EH, George K, Vipin K. Text Categorization Using Weight Adjusted K-Nearest Neighbor Classification [C]. 5th Pacific-Asia Conference on Knowledge Discovery and Data Mining. 2000.

[9] Kanungo,Tapas,(IBMAlmaden Research Center), Mount,David M,,Netanyahu,Nathan S, Piatko,Christine D, Silverman Ruth, Wu Angela Y. An efficient K-Means clustering algorithm: Analysis andimplementation. 2002.

## 作者简介
罗黎明,男,中国科学院大学计算机专业博士,全国会计信息化标准化技术委员会委员,全国金融标准化技术委员会证券分技术委员会委员,信息披露领域专业工作组首席专家,中证报价系统股份有限公司技术开发部、系统运维部总监。

赵安,女,中国证监会信息中心。

THE END

Leave a Reply