作者信息:熵简科技 Airworks 团队,团队致力于打造高性能、低代码的一体化大数据分析平台,为机构组织的数据团队及各业务部门人员提供“数据智能全链路”平台及解决方案,涵盖数据清洗、数据融合、数据建模、数据可视化、数据服务等多个维度,全面助力客户实现业务数智化。
导读:在熵简科技的资管数据中台解决方案中,文件系统作为整套架构的存储基础,提供了对于数据库、数据表等资源的操作和管理,保证了平台对于各个资源灵活、高效的调用,为数据治理、资源安全、数仓搭建、数据模型管理等上层应用提供了底层支撑。
一、文件系统需求描述
在长期的实践中,依托于 Airworks 平台,熵简科技已经探索起一套可靠、高性能的文件系统。本文从文件系统的需求、技术方案对比以及文件系统的架构设计三个方面入手,详细介绍文件系统在熵简数据智能平台中的方案和探索。数据中台是资管机构数据智能解决方案中核心的一环。资管机构内部的数据源和数据量往往是异构且巨大的,数据中台的引入可以打通企业内的各部门,各系统的数据资源,建立起数据标准体系和数据指标系统;整合数据类服务,统一对外数据服务接口,提供企业级数据资产管理,能通过元数据的管理实现数据全链路追踪;提供可视化、拖拽式自助开发与分析平台,统一数据开发流程与项目周期管理。
文件系统作为资管数据中台的基础,完成对各数据表、数据库、数据查询脚本、ETL工作流、数据模型、接口服务等各类资源的管理;实现各资源的读取、写入、移动、复制、删除操作;保留各账户的个人空间同时支持企业目录的公共协同空间,保证整个平台对资源使用的高度灵活,各功能模块对资源的调用清晰合理;结合权限系统为系统内资源针对不同账户设置不同的权限。因此,文件系统是包括数据治理,资源安全,数据仓库的搭建,项目、工作流、数据模型等应用的底层基础。文件系统的需求要点包括如下:
要点一:文件系统是一个树型结构,其中文件夹内可以包含子文件,另外不排除非文件夹也包含树型结构的可能;
要点二:需要支持多种文件类型,不同的文件类型可以支持不同的操作;但是都需要支持类似创建、删除之类的共性操作;
要点三:针对不同的文件类型,还可能存在不同的筛选项;在文件列表中,根据不同的文件类型还会有不同的展示字段;
要点四:权限系统与文件系统的协作;
1.1 文件系统构架的整体设计
针对文件系统的需求,主要由几部分工作组成:
第一:文件系统本身的树型结构的数据库设计和增删改查;
第二:文件系统的框架设计,在操作不同文件类型的时候支持每种类型定义不同的行为;
第三:获取文件列表的接口需要在文件系统中写好,并且对不同文件类型支持不同的展示项和筛选项;因此,我们从各种不同的文件类型中将树型结构和通用方法抽象出来,并且在请求上也将请求分为通用外部请求和针对某种特定文件类型的个性化请求,如下图:二、文件系统-数据库方案
在大多数sql数据库中,没有直接对树型数据结构类型的支持,因此需要一些额外的设计,在《SQL反模式》这本书中的第三章,介绍了常用的几种树形结构的数据库设计方案,其中两种最具代表性:
(1)邻接表方案:给每个树节点添加 parent_id 的外键,指向其父亲;
(2)闭包表方案:每一个祖先-孩子关系保存一张映射表。
另外,书中给出的另一种嵌套集方案难以维护而且效率不高,已经很少有人使用了。对于邻接表方案,还有递归查询和枚举路径两种优化可以选择,因此在邻接表不能满足性能需求的时候,还可以进行持续