出版发行流通数据库的设计
[摘要]本文提出了一个出版发行物批发和零售信息数据库的设计,针对国内出版物数据管理上的混乱现状给出了折中方案,开发出一个具有自主知识产权的行业数据库,为进一步的数据挖掘提供了一个切实可行和优化的解决方案。
[关键词]出版物统计;出版物零售信息;出版物数据库
[作者简介]张宏,东方出版交易中心。
[基金项目]本项目得到了国家和上海市文化资金的资助
商品流通信息的统计一向是各个行业信息发展的重要目标,关系到每个行业的数据统计、数据分析和市场预测等重要的行业信息。本文结合出版发行行业的特点,提出了一个面向行业数据挖掘的出版物流通数据库,从行业特点、底层设计、结构优化、数据整理等多方面给出了解决方案。这个数据库的设计方案不仅可以解决出版发行物流通的统计分析,同样适用于其他行业。
一、国内出版物的信息状况
1. 行业信息标准
国内出版发行行业的传统出版物在信息统计方面有其先天的便利性,例如很早就实施了国际标准书号(简称“书号”)ISBN(International Standard Book Number);很早在各个零售网点进行计算机管理和POS机收费;由专门的政府管理机构对ISBN和图书在版编目CIP(Cataloguing In Publication)数据进行管理;图书馆对出版物的分类(中国图书馆分类法,简称“中图法”)和机读数据MARC(Machine Readable Catalogue)管理有成熟的系统等。
国内实施的出版物信息规范标准虽然一直滞后于行业应用和有所缺失,但已经满足了行业的绝大部分需求。标准大致如下:《中国标准书号(GB/T5795-2006)》《图书在版编目数据(GB/T12451-2001)》《中国标准连续出版物号(GB/T9999-2001)》《图书书名页(GB/T12450-2001)》《书目信息交换用磁带格式(GB/T2901-1992)》《图书、音像制品、电子出版物营销分类法(CY/T 51-2008)》(简称“营销分类”),以及近期颁布的CNONIX(Chinese Online Information Exchange)《中国出版物在线信息交换CNONIX图书产品信息格式》标准。
2. 标准实施情况
相对于行业标准颁布的情况,国内出版发行行业对标准的实施则是非常落后和混乱。例如,以标准书号ISBN的实施为例,就存在多书一号的情况;同样,在版编目CIP数据中的中图法分类混乱,分类错误,不同分类版本共存的情况多有发生;营销分类发布多年,迄今没有大范围的实施和采用;零售网点无法通畅地得到出版数据,绝大部分还停留在人工输入和人为加工,不可避免地造成数据的混乱和重复等现象。
行业的区域性分割,即每个省份都有书店集团以及出版集团,各自开发的信息系统造成数据规范的不统一,相互之间无法顺畅地进行数据交换。这些实施中的现状给出版物流通数据库的建立造成很大障碍。
二、出版物信息的突出问题
1. 唯一性问题
数据库设计中为了加快查询、保障数据规范,特别是保证信息的唯一性,需要设立“唯一键”(Primary Key)。出版物书号ISBN的设计初衷就是为每一个出版物提供唯一的标识代码。但在实际的行业实施中,却出现了ISBN号不唯一的现象,并且占整个数据量的一个较大比例。
行业里每个信息系统的设计都遇到了这个ISBN不唯一的突出问题。作为书店或出版单位运营的信息系统,每个系统的开发者都提出了解决方案。例如,自定义一个唯一键或者构建一个基于ISBN和其他后缀的唯一键等。
出版物流通信息数据库从本质上看,是一个行业信息统计的数据库,对流通物的唯一性有极强的要求,但还没有达到书店运营系统的程度。然而,由不同运营系统汇总的数据进入统计数据库,对不同系统的唯一键进行标识和转换会消耗大量的资源。由此,我们提出了一个折中方案,即采用出版物的书号ISBN和出版物的定价组成一个混合型的唯一键。这个方案的优点在于满足了统计(总码洋、总销售册数等)的要求,同时用最小的资源(自动转换)把不同系统的数据统一到一个共同的唯一标识。方案的缺点在于遗失了一定量的信息,例如相同ISBN号的两本教辅《语文》和《英语》(通常是一个出版商的一套教辅中的两本),如果定价相同,在这个流通数据库里就标识为一个出版物,两者的销售数据就会混而为一。
2. 出版物分类的问题
另一个突出问题是出版物的分类问题。现有行业中采用的分类多种多样,有中图法分类、营销分类等,而且每个实施都有多种不同的版本。这种出版物分类乱象造成了信息系统开发和数据交流的另外一个巨大障碍。
中图法分类是行业内影响巨大,且普遍使用的一种分类法。中图法具有分类较为科学和类别详细的特点,主要适用于图书馆系统,便于图书检索。中图法分类在国内的出版物发行行业应用广泛,但其本身的局限性制约了中图法在零售系统和数据统计中的使用。
营销分类以中图法为基础,是书店普遍使用的一种分类方法。营销分类版本众多,各地图书零售门店都有自己的版本。其中深圳的版本在2008年成为行业的一个标准,即《图书、音像制品、电子出版物营销分类法(CY/T 51-2008)》。营销分类依据图书销售的特点,把中图法中一些零售比例高的低级别分类提到了主类别中,例如计算机图书、少儿图书等。
不同系统使用了不同的分类方法,使以统计为目的的流通信息数据库遭遇了较大的困难。因此在数据库的设计中,提出了一种更恰当的分类法。该分类以中图法为基础,营销分类为主体,沿袭了出版物统计中的传统和习惯,是一个面向销售统计的三级分类法。该分类以修改过的营销分类为二级和三级分类,在二十多个营销大类的基础上归纳了七个一级的统计分类。具体如下:
文学:包括小说、文学作品、文学研究等;
社科:包括马列、哲学、政治、法律、军事、经济、历史、管理等;
科技:包括自然科学、医学、农林牧渔、工业技术、计算机等;
少儿:包括适合少儿的各类读物;
艺术:包括美术、设计、视听艺术等;
生活:包括与生活、爱好、旅游等相关的类别;
教育:包括语言文字、文化教育等类别;
其他:包括进口图书、音像制品、图片挂历、辞书文摘等。
流通信息系统在处理数据时,根据预先设定的映射,自动把来自不同系统的销售数据中的中图法或营销分类字段映射到这个新的统计分类中。同时在系统中保留了中图法的字段,便于系统依据不同分类方法进行统计。
三、出版物流通信息的数据库
1.数据库的设计
出版物流通信息数据库有两个要素,即出版物要素和流通要素。该数据库可以分为三个部分,即出版物数据、流通数据,以及辅助的数据(包括出版社数据、书店数据、作者数据等)。
出版物数据包含了出版物的唯一标识键、零售条码、出版物名称、定价、出版单位(名义)、出版实体单位、出版年月、出版物统计分类、出版物中图法分类、作者等重要字段,以及其他有统计需求的字段,例如印数、页数、字数等。
出版物流通数据包含了流通的要素,即出版物唯一标识键、销售数量、销售时间、销售地点(门店或网购的送货地点)。由于数据采集原因,无法对所有的流通数据按每单销售进行标识,所以只记录每个单品的流通信息。
辅助的数据表格包含了固定的辅助信息,例如出版社数据(包含了社名、社号、所属集团、所属省份等)、书店数据(店名、所属集团、地点、所属省份等)等。
2. 数据的采集
由于各地信息发展的不同,实时的数据采集较难实现。现有的数据采集是定期(每周)地采集各个数据交换单位运营数据库中的原始POS数据。各单位依据自身系统的实际情况,导出包含必要字段的原始数据,并且上传到流通数据库的服务器上。
出版物数据主要来自CIP数据,以及各个书店的图书数据,每月进行更新和补充。出版物数据大部分由软件自动处理,通过构建唯一键(ISBN + 定价),以及分类的映射转换后输入数据库。后期部分的人工干预主要是对分类错误的修改,以及重复的数据条目进行整理。出版物数据每年大约新增30万条,设计容量为3000万条数据,迄今为止是一个300万条左右的数据量。
流通数据的输入由原始POS数据直接转换,数据粒度是每天每个地点(门店)每个品种作为一条数据。全国每年出版物零售量大约为500亿码洋,按数据粒度折算,大约为20亿条数据。数据库设计采用分布式存储,所以可容纳的流通数据量没有上限,可以轻松存储2000亿条数据。
辅助数据基本为变化不大的小量信息,一次性输入,并定期进行适当的维护。辅助数据包括出版社信息、书店信息、统计分类表、中图法分类表等。
四、数据使用的优化
作为一个行业流通信息的庞大数据库,其存储和使用方面需要采取许多优化措施才能满足实时数据查询的需要。
1. 存储结构的优化
出版物流通数据的数据量非常庞大,每年可能的数据量达到20亿条,累计数据量是百亿甚至是千亿的量级。迄今为止,所有商业数据库软件都无法很好地处理如此巨大的数据量。其中原因,有底层操作系统文件系统的限制(最大文件的限制),也有数据库软件本身存取数据的限制。
如此庞大的数据量可以采用分布式存储的优化方式,即把大数据量按一定的方式存储到不同的数据表(文件)中。根据流通数据本身的特点,以及这些数据查询和使用的特点,可以按时间进行分段存储。例如,流通数据可以按月存储进不同的数据表(文件)中,并且在每月表格上建立虚拟的总表格或View便于全部流通数据的查询。
2. 数据索引的优化
常规的数据索引优化方式包括加速单个表格(文件)查询的数据索引(Index)设立,加速多个表格(文件)关联查询的相关数据索引的设立。
适合出版物流通数据库的常规数据优化手段有:
建立针对性的数据索引:对基础的数据表格(文件)进行索引优化。例如,对出版物数据的ISBN、出版单位、出版年月、作者等字段建立数据索引;
相关表格建立关联索引:对出版物表格和销售表格建立以统一的唯一键索引,便于表格间快速的关联。
3. 中间数据库的优化
对庞大数据量的行业数据挖掘,还需要引入一些非常规的优化方法。通过对数据查询的深入分析,我们发现行业流通数据查询的90%以上是重复的数据表格关联以及关联后中间数据的产生、筛选和汇总。因此,我们这里创新性的提出了“中间数据库”这个创新优化概念(相对于原来的流通数据库“原始数据库”而言),并且依据行业特点和查询特点,设计了适合出版物流通数据的中间数据库。例如:
流通周汇总数据:把每天的流通数据按周进行汇总,再根据销售地点的省级区域进行汇总,然后关联出版物数据、辅助数据后产生周汇总数据表,并且采用分布式存储,按季度进行存储。在此中间数据上可以进行销售数据的按周查询。
流通月汇总数据:如上进行月度的汇总,然后按季度进行分布式存储。在此中间数据上可以进行销售数据的按月、按季度、按年度查询等。
4. 复杂查询的优化
数据挖掘中许多查询需求非常复杂,需要多个SQL查询进行组合。借助现有数据库软件支持的临时内存数据存储,可以开发出适合加速复杂查询的优化方式,即临时数据表的优化方式。临时数据存储于服务器的内存中,比硬盘数据的查询快至少一个数量级。
5. 软件优化和缓存
在前台软件设计中可以进行数据的预提取,提前进行可能需要数据的缓存,以加速用户直观的查询速度的提升。例如,前台查询销售排行前100,时间后台缓存了排行前500的数据,便于用户查询排行200~500名数据时,感觉速度非常快。
通过对数据查询的深入分析,进一步优化涉及的SQL查询语句。同时,针对所使用的数据库软件,尽量使用其特有的SQL优化对策。
6. 硬件系统的升级
相对于数据库设计、数据存储优化、查询优化等方式可以提供的巨大优势,提升硬件也是一个不可或缺的手段。在数据库系统中,对数据查询速度有明显影响的硬件因素主要有内存容量、硬盘读取速度、CPU速度等。而前两项指标尤为重要。
数据库服务器的内存容量最好可以容纳常用查询数据的数据量,以便于操作系统和数据库软件进行直接的数据缓存。假设,常用数据牵涉到100G+的数据量,那建议的内存容量就需要达到256G,其中操作系统和软件占去部分内存,剩余的可以全部用来缓存硬盘上100G+的数据。
建议使用读取非常迅捷的固态硬盘(SSD),通过磁盘阵列方式把小容量的SSD组合成大容量的虚拟硬盘来存储数据。磁盘阵列本身可以加速数据的读取,已经提供数据安全,免于因为硬盘故障导致的数据损坏。
7. 优化的结果
通过各种优化措施的使用,整个出版物流通数据库的优化效果明显。一个普通的,耗时10个小时的数据挖掘任务,通过上述的优化手段,可以在30秒中得到结果。从而使行业信息的实时报告成为可能。
出版物流通数据库的设计,通过折衷方式解决了行业信息化固有的障碍;使人工投入和干预达到最小化;使用创新的数据优化方法,使耗时巨大的全数据库查询成为可能,查询耗时下降可达99%;通过合理的软件设计降低了硬件投入,节约硬件成本达到90%。