Skip to content

Latest commit

 

History

History
50 lines (33 loc) · 3.41 KB

README_CN.md

File metadata and controls

50 lines (33 loc) · 3.41 KB

一、SQLFlow 是什么

数据库中视图(View)的数据来自表(Table)或其他视图,视图中字段(Column)的数据可能来自多个表中多个字段的聚集(aggregation)。 表中的数据可能通过ETL从外部系统中导入。这种从数据的源头经过各个处理环节,到达数据终点的数据链路关系称为数据血缘关系(data lineage)。

SQLFlow 通过分析各种数据库对象的定义(DDL)、DML 语句、ETL/ELT中使用的存储过程(Proceudre,Function)、 触发器(Trigger)和其他 SQL 脚本,给出完整的数据血缘关系。

在大型数据仓库中,完整的数据血缘关系可以用来进行数据溯源、表和字段变更的影响分析、数据合规性的证明、数据质量的检查等。

举例来说,可能会问财务报表中的统计结果,它是有哪些子系统(采购、生产、销售等)提供的数据汇总而成的? 当某个子系统(例如 销售子系统)的表和字段等数据结构发生变化时,可能会影响其它子系统吗? 财务报表子系统中的表和字段是否也需要进行相应的改动?

SQLFlow 会帮助你回答这些问题,以可视化的图形方式把这些关系呈现在你面前,让你对组织的IT系统中的数据流动一目了然。

SQLFlow Introduce

二、SQLFlow 是怎样工作的

  1. 从数据库、版本控制系统、文件系统中获取 SQL 脚本。
  2. 解析 SQL 脚本,分析其中的各种数据库对象关系,建立数据血缘关系。
  3. 以各种形式呈现数据血缘关系,包括交互式 UI、CSV、JSON、GRAPHML 格式。

三、SQLFlow 的组成

  1. Backend, 后台由一系列 Java 程序组成。负责 SQL 的解析、数据血缘分析、可视化元素的布局、身份认证等。
  2. Frontend,前端由一系列 javascript、html 代码组成。负责 SQL 的递交、数据血缘关系的可视化展示。
  3. Grabit 工具,一个 Java 程序。负责从数据库、版本控制系统、文件系统中收集 SQL 脚本,递交给后台进行数据血缘分析。
  4. Restful API,一套完整的 API。让用户可以通过 Java、C#、Python、PHP 等编程语言与后台进行交互,完成数据血缘分析。

SQLFlow Components

四、SQLFlow的使用

  1. 通过浏览器访问SQLFlow的前端
  2. 在浏览器中上传SQL文本或文件。
  3. 点击分析按钮后,查看数据血缘关系的可视化结果。
  4. 在浏览器中,以交互形式,查看特定表或视图的完整血缘关系图。
  5. 用 grabit 工具或 API,提交需要处理的 SQL 文件,然后在浏览器中查看结果,或在自己的代码中对返回的结果做进一步处理。

五、SQLFlow 的局限

SQLFlow 仅仅通过分析 SQL 脚本,包含存储过程(proceudre, function, trigger)来获取数据库中的数据血缘关系。 但在 ETL 数据转换过程中,会用到很多其它技术和工具,由此产生的数据血缘关系目前 SQLFlow 无法探知。

六、进一步了解 SQLFlow

  1. 支持多达21个主流数据库
  2. Architecture document