让我们使用Aiven的元数据解析器来理解数据的流程

使用Aiven的元数据解析器来了解数据流向

2022年8月4日 – èr èr èr bā yuè sì rì.

为了理解数据的流动,使用Aiven的元数据解析器。

随着数据资产和相关技术的增加,理解它们之间的关联性变得困难。让我们探索一下能够提供有用洞察的新工具。

用 Aiven 的元数据解析器来管理数据资产。

现代企业中数据的流动通常需要经过一系列跨越不同技术的步骤来实现。从后端数据库存储的源应用程序,通过批处理或流式技术进行转换和传输,数据资产最终抵达目标系统,在那里被用于决策过程,或者反向ETL(抽取、转换和加载)场景中向应用程序提供反馈。

追踪这个碎片化场景的每个步骤是一个复杂的过程,通常需要手动完成,作为文档化工作的一部分。然而,由于存在许多快速变动的部分,很容易失去全局视角。如果出现这种情况,企业可能会面临重复努力、GDPR违规、安全问题等风险。

回答这样的问题应该在几秒钟或几分钟内从查询中得出,而不是人们浏览超过200页的文档。因此,有必要尽可能自动化地以共同的可查询格式收集数据资产的进程。

隐藏的元数据财富

如何自动提取关于数据的信息?这些信息的大部分实际上存在于元数据中!

以PostgreSQL®为例,你可以通过扫描information_schema表来完成许多任务。通过查询columns、pg_tables、pg_user、role_table_grants表,你可以了解哪个用户可以查看哪个表的哪些字段的概要。通过添加对pg_views表的description字段的智能解析,你可以进一步追踪数据库中发生的数据转换。

通过主题描述、ACL、模式定义和连接器设置中存储的元数据,可以创建数据的来源和目标的映射。同时,Apache Flink®能够理解每个数据流的源和目标。

不同的技术,不同的语言

如果所有的数据旅程都限制在单一的技术中,问题就会得到解决!只需要在单一的目录视图/表上稍微分析一下元数据,完整的端到端映射就完成了。然而,通常情况下并不是这样。例如,在PostgreSQL中是表格和列,在Apache Kafka中是主题、模式、连接器,在OpenSearch®中是命名空间和索引。

共同的抽象化:图论

因此,要收集、合并并使具有不同形状的元数据可用,需要从一定程度上抽象化数据资产的定义。在这种情况下,图论非常有用,可以将每个对象定义为节点,对象之间的连接定义为边。

    • データベース?ノードです。

 

    • テーブル?ノード+所属データベースへのエッジです。

 

    • カラム?ノード+所属するテーブルへのエッジです。

 

    • ユーザー?ノード + そのノードが属するデータベースへのエッジ + そのノードがクエリー/ビュー/編集できるすべてのノードへのエッジです。

 

    Apache Kafkaソースコネクター?ノード+すべてのデータソースに対するエッジ+すべての宛先トピックに対するエッジである。

通过将资产存储为节点/边缘的形式,您可以使用对象属性,如主题保留时间和数据库视图的SQL定义,为每个实体添加自定义属性。此外,您还可以连接不同技术之间的节点!例如,您可以将Apache Flink®作业获取的数据表和转换后的资产存储为Apache Kafka主题,并进行链接。如果认真使用Avro和Karapace模式注册表,您还可以连接源和目标列,以实现完整的数据血统。

PostgreSQLデータベースのテーブルとカラム、Kafka Connectコネクタ、Apache Kafka、Flinkに関する情報を格納するグラフの例

看起来很难,怎么做呢?欢迎来到元数据解析器。

要调用RESTAPI的终端点,查询数据库表,发送HTTP请求并合并输出,需要编写大量代码。使用在Aiven客户端上构建的开源项目元数据解析器,可以分析属于Aiven项目的服务,并创建数据资产的网络地图。

运行元数据解析器。

在项目中运行元数据解析器需要满足以下前提条件:

    • Python 3.7

 

    • 有効なAivenアカウント

 

    解析したいプロジェクトの名前

请按照以下步骤进行,一旦收集到上述内容:

将metadata-parser存储库克隆并移动到metadata-parser文件夹中。

git clone https://github.com/aiven/metadata-parser.git
cd metadata-parser`クリップボードにコピーする

安装必要的库。

`pip install -r requirements.txt`クリップボードにコピーする。

3. 将conf文件夹内的conf.env.sample文件复制为conf.env。在TOKEN和PROJECT参数中添加有效的认证令牌和解析的项目名。
4. 如果项目没有正在运行的服务,可以使用scripts/create_services.sh脚本创建临时的测试服务(为了正确创建数据资产,需要额外的工具,如ksql、psql、mysql等)。

为了从项目中收集元数据,执行 main.py 文件。

`python main.py`クリップボードにコピーする

使用上述的命令对项目进行分析并创建。

    インタラクティブ・グラフを含むファイル nx.html.
Graph in action

DOTフォーマットの情報を含む graph_data.dot ファイル。

GMLフォーマットの情報を含む graph_data.gml ファイル。

如果想要拥有一种能够筛选一个节点并检查所有依存关系的交互式视图的话,可以执行以下操作:

`python app.py`クリップボードにコピーする

app.py会加载之前步骤生成的graph_data.gml文件,并使用[Plotly](https://plot.ly/python/)和[Dash](https://plot.ly/dash/)创建响应式的Web应用程序,可以分析图形,筛选特定节点的类型或名称。当应用程序进行筛选时,将显示与该节点连接的子图。可以通过访问 http://127.0.0.1:8050/ 来访问Dash应用。

ノードのカスタム・フィルタリングを可能にするDashアプリの動作

恭喜!现在我们能够获取一张跨越各种技术的数据资产的完整地图,以查询为基础的图形形式!

如果您想删除在第4步中创建的测试服务,只需执行 scripts/delete_services.sh 。

哇,这个能用吗?

现在,让我们来思考一下关于这个问题:

    • この列はどこから来たのか?

 

    • GDPRの評価 – 誰がこのデータを見ることができますか?データはどのように操作されるのか?

 

    • セキュリティ監査 – どのユーザーがこのデータセットを編集できますか?

 

    影響評価 – Xを削除したらどうなるか?

通过分析元数据并使用一些网络查询生成的图表,可以回答这些问题。

元数据解析器是一个完全开源的项目,欢迎贡献!由于该项目仍处于早期阶段,因此可以涵盖更多工具,深入挖掘现有工具或者探索分析和结果展示的其他方法。

以下链接可能会有所帮助。

グラフ理論:異なるエンティティがノード、属性、エッジとしてどのようにマッピングされるかを理解する。

Aiven Command Line Interface: Pythonで書かれたAiven CLIは、サービスを探索し、メタデータを取得するために使用されます。

Aiven API documentation: Aiven Command Line Interfaceで使用されるAPIのリストを確認します。

メタデータ・パーサー貢献ガイドライン: プロジェクトへの貢献方法を理解します。