大数据环境下,图数据库被广泛应用于社交网络、语义网、知识库、生物信息学等领域,用来进行关系模式的建立、路径搜索、异常识别等,也非常适用于多行业集成的审计大数据关联分析。常见的图数据库产品有Neo4j、AllegroGraph、DEX、InfiniteGraph、HyperGraphDB等,其中Neo4j是图形关系的最佳存储,说明文档齐全、源代码开放、便携性较好,可轻易扩展到上亿节点和关系,也是目前应用较广泛的图形数据库之一。本文简要介绍Neo4j在财政大数据中的关联分析应用案例,以帮助审计人员更好地了解图数据库应用场景及用法。 基于Neo4j的财政资金网络建模 图数据库在审计大数据的应用,关键要明确网络中的节点、边和属性,即图数据库建模。图数据库建模与结构化数据库E-R图建模相比,前者逻辑模型和物理模型有了更加密切的关系,使得建模过程更加轻松、易理解。本文以某市级财政审计大数据为基础,实现财政国库集中支付与工商、税务、社保、民政等多个行业的关联,构建以财政资金支付为核心的审计关系网络。 审计关注的主体即为图数据库节点。财政资金审计关注的主体是涉及财政资金往来的个人、行政事业单位、企业。那么,本次图数据库模型中的实体就包括个人、预算单位、企业。这些实体的属性即结构化数据中的静态属性,如个人具有姓名、身份证号、职务等基本信息,预算单位具有代码、名称、单位类型等属性,企业除工商基本信息的众多属性外,还具有纳税申报汇总情况、社保缴纳情况等属性。如果拥有车管所、房屋登记等数据,还可以增加更多实体和属性。 审计主体之间行为即为图数据库的关系。基于行为的多行业数据关联构成主体社会行为的脉络交织,这实际上也就是图数据库中节点的行为,即多个实体通过一定行为事件形成社会关系网络。此次构建的财政支付资金网络中,最主要的关系就是财政支付中预算单位支付给收款人的支付关系,其次还有工商信息表中的企业之间的投资关系、预算单位与项目之间的归属关系、供养人员与行政事业单位的任职关系等,这些关系的属性就是结构化数据记录的业务事件特征,如预算单位支付给收款人的支付次数和支付金额就是支付关系属性,企业之间投资关系的投资占比、金额就是投资关系的属性。通过把握这些具有属性的关系,就可以以预算单位、项目、个人和企业形成以财政资金支付为主的社会关系网。 合理的图数据库模型是后续图数据库导入及分析的前提,基于上述建模思路,就可以着手从结构化数据准备向图数据库导入节点表和关系表。 基于Neo4j的数据导入 确定好数据模型后,需要将海量结构化数据批量转入Neo4j,建议使用Neo4j自带的Import工具。利用该工具导入时,需要将存储在结构化数据库中的数据导出为一组表示节点和关系的cSV文件。例如,财政支付表记录了三个实体节点和三种关系,那么就需要三个记录节点的cSV文件和三个记录联系的cSV文件。 存储节点的cSV文件,需要把标识节点键值的字段改为“:ID”,表示节点分类标签的字段改为“:LABLE”,如从预算单位基本表生成“预算单位.CSV”的SQL语句如下: Select distinct 预算单位编号as‘:ID’, 预算单位名称as‘:name’,
预算单位as‘:LABEL' From预算单位基本表 存储联系的CSV文件,要把标识关系方向的字段名称改为“:START_ID”和“:END_ID”,表示联系类型的字段名称为“TYPE”,如利用国库集中支付数据生成“关系.CSV”的SQL语句如下: Select distinct 预算单位编号as‘:START_ID’, 收款单位名称as‘:END_ID’, Count()as支付次数, Sum(支付金额)as支付金额, Payment as‘:TYPE’ From财政支付表 有了这些CSV文件,就可以在命令行中执行导入命令:Neo4jImport—into target_directory—nodes预算单位.csv—relationships关系.csv—skip-duplicate-nodes—bad-tolerance 100000000。skip-duplicate-nodes指的是跳过重复节点,bad-tolerance是容错量,避免在导入过程报错、中断。 如果预算单位支付的企业名称恰好在工商基本信息表中,就可以把财政的支付关系和工商网络中的投资关系连接在一起。 基于Neo4j的Cypher查询 图数据库建好之后,就需要进行面向图数据库的分析。关系型数据库一般都采用SQL语言进行数据的查询和分析,Neo4j则有一个描述性的图形查询语言Cypher,审计人员需要将分析需求转换为Cypher查询语句,从而发现审计问题和线索。Neo4j自带Cypher的图形查询语言,具有灵活性、易理解、表达性强的特点。