基于NoSQL的XBRL数据存储研究与应用

2015-07-05 15:54曾志勇刘建业
中国管理信息化 2015年19期
关键词:关系数据库财务报告实例

曾志勇,刘建业

(云南财经大学信息管理中心,昆明 650221)

基于NoSQL的XBRL数据存储研究与应用

曾志勇,刘建业

(云南财经大学信息管理中心,昆明 650221)

XBRL是XML语言在商务报告领域的扩展和应用,随着XBRL在世界范围内的大规模普及,加入XBRL组织的公司越来越多,每年产生的XBRL报表数量成倍增长。面对海量XBRL数据,探索和研究了在NoSQL环境下对XBRL数据的进行有效的存储、查询和分析等问题。

可扩展商业报告语言;酝葬灶早燥阅月;月泽燥灶文档;数据转换

0 引言

XBRL是XML语言在商务报告领域的扩展和应用,其最主要的思想是将XML语言中的元素标签实例化,给出所有出现在XML文件中的元素名称定义和属性定义,使其符合商务报告的要求。伴随着XBRL在商务报告领域的成功,越来越多的XBRL组织相继成立,经过国际上大约450个主要公司、组织和政府机构组成的非营利组织对XBRL标准的发展,XBRL现已成为一个统一的、开放的、免费的标准,并被很多国际和地区投入使用。随着XBRL在世界范围内的大规模普及,加入XBRL组织的公司越来越多,每年产生的XBRL报表数量成倍增长。面对如此庞大的数据量,无疑会大大增加投资者和分析师搜寻和处理信息的成本,因此,如何有效的对XBRL数据进行存储、查询、分析,是一个值得探索和研究的问题。

XBRL数据具有结构类似、数据量大、更新速度快的特点,要想实时地提取和分析数据,传统的集中式数据存储方式很难满足这方面的要求,因此,采用分布式的存储和计算成为处理该类型数据的必然选择。

MongoDB属于NoSQL数据库的一种,由C++语言编写,是由MongoDB公司提供的一个开源的、模式自由的、面向文档存储的、分布式的数据库,是一个介于关系数据库和非关系数据库之间的产品,旨在为Web应用提供可扩展的高性能数据存储解决方案。MongoDB支持一种类似Json的Bson格式的数据结构,这种松散的数据结构可以存储比较复杂的数据类型,与XML数据有着天然的对应关系,非常适合文档化格式数据的存储和查询。同时,Bson相比XML更轻量级,转换代价较小,因此,研究在MongoDB中对海量的XBRL数据的存储和计算问题有着重要的意义。

1 XBRL财务报告

XBRL是eXtensible Business Reporting Language的缩写,中文译作“可扩展商业报告语言”,是一种基于XML(eXtensible Markup Language,可扩展标记语言),用于财务报告编制、披露和使用的计算机语言,目前用于非结构化信息处理,是一套公开、免费的标准,也是财务信息交换和处理的最新公认的标准和技术。XBRL主要应用于财务报告的自动化处理,为财务报告信息的准备、生成、分析和传输提供了便利,有助于商业信息的编制、分类和交流。与传统的财务报告方式(如PDF文档)相比,基于XBRL分类标准的财务报告可以改善财务报告的披露效率,提高财务信息的准确性、可比性以及透明性,从而有利于数据的分析和决策的制定。XBRL财务报告主要由分类标准(Taxonomy)与报告实例(Instance)组成。XBRL分类标准整体相当于商业信息的词典,企业根据这一词典,以符合XBRL分类标准语法约束的数据信息对词典中定义的元素进行赋值,从而创建出XBRL特殊格式的报告文档,即为报告实例。

2 MongoDB简介

MongoDB是一个功能强大的、灵活的、可扩展的通用数据库系统,它具有二级索引,范围查询,排序,聚合以及地理空间索引等功能。为了更好的实现扩展性,MongoDB抛弃了关系模型。因此,MongoDB是一个面向文档的数据库。在MongoDB里,使用“文档”这种更容易扩展的模型代替了关系数据库里中“行”的概念。MongoDB的文档(document)结构中,允许嵌套的文档和数组,这种面向文档的方式使得在单一的记录里面表示复杂的层级关系成为可能。

总体而言,MongoDB是一个介于关系数据库和非关系数据库之间的产品,他支持的数据结构是类似Json的Bson这种松散的数据格式,因此可以比较方便的存储较为复杂的数据类型。MongoDB支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,同时支持对数据建立索引。

3 XBRL-Bson数据转换引擎

使用MongoDB存储XBRL实例文件,首先需要将XBRL文件转换成MongoDB能够存储的Bson格式的数据类型,本文设计并开发XBRL-Bson数据转换引擎,用于将XBRL文件转换成Bson格式的文档并存储到MongoDB数据库中。

3.1 XBRL验证

在对XBRL数据进行转换之前,首先需要对其进行验证。验证的主要目的是检查XBRL相关文件(包括分类标准文件与实例文件)是否符合XBRL规范。因此,XBRL验证的主要工作包括两个步骤:首先需要按照XBRL分类标准模式定义文件(Schema)来校验XBRL实例文件的语法,该步骤先对提交的XBRL文档是否满足基本的XML格式要求进行检查,然后根据XBRL分类标准模式定义文件对XBRL实例文件中的元素进行校验,主要验证XBRL分类文件中的元素定义是否与模式定义文件中定义的元素相符合,目前,XML验证工具的发展已较为成熟,常用的XML分析器包括:SAX、Xerces、MSXML等,本文选用微软公司的MSXML工具实现XML文档的解析;完成XBRL的结构校验之后,需要对提交的XBRL实例文件进行语法校验,验证XBRL实例文件是否符合分类标准链接库的语义要求,该步骤按照XBRL分类标准链接库(Link base)来校验XBRL实例文件的语义。

3.2 XBRL-Bson数据转换引擎

MongoDB的文件存储格式为Bson,使用了类似于Json风格语法。XBRL文档转Bson文档的转换规则定义:

规则一:XBRL元素中的文本内容转换成Bson文档对应的值类型。

规则二:既无属性又无子元素的单个XBRL元素转换为含有一个键值对的Bson文档(document),元素名称为键(key),元素中的文本内容为值(value)。

规则三:具有属性但无子元素的单个XBRL元素转换为含有一个键值对的Bson文档(document),元素名称为键(key),元素的属性及元素中的文本内容构成的Bson文档为值(value)。

规则四:既具有属性又具有子元素的单个XBRL元素转换为含有一个键值对的Bson文档(document),元素名称为键(key),元素的属性及其子元素构成的Bson文档为值(value)。

规则五:属于同一层级的所有具有相同名称的多个XBRL元素,转换为含有一个键值对的Bson文档(document),元素名称为键(key),元素属性及其子标签构成的Bson文档数组(array)为值(value)。

基于上述XBRL-Bson转换规则,设计转换算法,算法伪代码如下:

算法:CreateBsonFromXbrlElement,根据XBRL元素创建Bson文档。

输入:XBRL元素,xElement。

输出:Bson文档,bsonElement。

方法:

(1)创建一个空的Bson元素bsonElement;

(2)创建标识isDocValue,用于标识转换后的Bson元素的值部分为文档(document)还是普通值(value);

(3)创建一个表示Bson元素的值部分为Bson文档:ocumentValue;

(4)ifxElement有属性,将其所有属性加入到Bson元素的值部文档documentValue中;

(5)ifxElement有子元素,then;

(6)for xElement的每个子元素child;

(7)if child不存在于同级别文档中,then;

(8)递归:child转换为Bson文档后直接追加到父XBRL元素的Bson元素的值部文档documentValue中;

(9)else递归:将child转换为Bson文档后添加到父XBRL元素的Bson元素的值部文档中相应的文档数组(BsonArray)中;

(10)endfor;

(11)if xElement无子元素,但有属性,then;

(12)将xElement中的文本内容追加到Bson元素的值部文档(document)中;

(13)ifxElement既无子元素,又无属性,then;

(14)设置标识isDocValue=false;

(15)根据当前XBRL元素的情况(是否有子元素与属性),建立当前XBRL元素对应的Bson元素并返回bsonElement。

XBRL-Bson数据转换工具运行界面如图1所示。

图1 XBRL-Bson数据转换工具运行界面

4 结语

使用MongoDB存储XBRL数据,可充分利用MongoDB分布式的存储与计算特性,解决海量XBRL数据的存储与计算问题。本文通过对XBRL文档进行分析,设计并实现了XBRL-Bson数据转换工具,通过该工具,可方便的将XBRL文档转换成MongoDB所需要的Bson格式数据,实现XBRL数据到MongoDB的存储。

[1]吕志明.XBRL财务报告研究[M].北京:经济科学出版社,2012:20-38.

[2]吴忠生,张天西,等.基于领域本体的XBRL财务报告转换研究[J].计算机应用研究,2013,12(30):3643-3646.

[3]葛永琪,吕科.基于.NET的XBRL数据转换引擎研究与实现[J].计算机技术与发展,2009,2(19):148-150.

[4][美]霍多罗夫.MongoDB权威指南[M].第2版(影印版).南京:东南大学出版社,2014:50-98.

[5]郭远威.大数据存储MongoDB实战指南[M].北京:人民邮电出版社,2015:61-89.

10.3969/j.issn.1673-0194.2015.19.027

F232

A

1673-0194(2015)19-0049-02

2015-08-13

教育部人文社会科学研究青年基金(10YJCZH004);云南财经大学校科研基金重点项目(YC10A003)。

猜你喜欢
关系数据库财务报告实例
关系数据库在高炉数据采集系统中的应用
企业内部财务报告体系设计与应用
财务报告目标和经济发展之间的关系
财政部修订印发《政府部门财务报告编制操作指南(试行)》
戴德明教授畅谈财务报告的功能扩展
基于索引结构的关系数据库关键词检索
完形填空Ⅱ
完形填空Ⅰ
一种基于数据图划分的关系数据库关键词检索方法