一个 Java 库,用于根据列名和数据匹配自动检测数据库表之间的关系。非常适合 OLTP 数据,因为 RDBMS 级别可能不存在物理关系。用户可以配置列名和数据匹配置信度阈值来微调结果。
自动关系查找器 (ARF)是一个 Java 库,它通过分析列名和数据模式自动检测数据库表之间的隐式关系。
ARF 专为 OLTP 环境而设计,在这种环境中,可能无法在 RDBMS 级别定义物理关系,ARF 允许用户配置列名和数据匹配的置信度阈值,从而微调关系检测精度。
此外,ARF 还可以控制在关系检查中应考虑哪些数据类型,从而确保针对具体情况进行有针对性的分析。
主要特点
- 自动关系检测:ARF 通过分析列名和数据值来识别关系数据库中表之间的关系,这对于可能没有明确定义物理关系(如外键)的数据库很有用。
- 可配置的列名匹配:允许用户指定列名匹配的置信度级别,帮助图书馆根据可定制的阈值识别和匹配名称相似的列(例如,Dist_Code 和 District Code)。
- 基于数据的关系匹配:除了列名之外,ARF 还使用实际数据值来检测关系,从而获得更准确、基于上下文的结果。
- 可定制的数据匹配置信度:用户可以定义数据匹配的置信度级别,根据值的匹配程度调整关系检测的敏感度。
- 用于匹配的数据类型选择:提供灵活性,指定在检查关系时应考虑哪些数据类型(例如整数、字符串、日期),从而实现对不同类型数据的定制分析。
- OLTP 系统的适应性:ARF 在设计时考虑了联机事务处理 (OLTP) 系统,可以检测事务数据中并不总是存在明确密钥的隐含关系。
- 基于 Java 且易于集成:ARF 采用 Java 构建,因此与基于 Java 的应用程序和库兼容,并且可直接集成到现有的数据处理或编目系统中。
使用案例
- 遗留数据库中的数据编目和发现:许多遗留数据库缺乏明确的主键-外键关系,这会使数据编目变得困难。ARF 可帮助数据编目工具推断这些隐式关系,使用户无需修改架构即可了解数据链接。
- ETL(提取、转换、加载)优化:在 ETL 工作流中,识别表之间的关系以准确连接来自不同来源的数据通常至关重要。ARF 可自动检测这些关系,从而更轻松地为缺乏物理约束的数据库配置 ETL 管道。
- 系统之间的数据迁移:在数据迁移期间,尤其是在 OLTP 和 OLAP 系统之间,ARF 可以识别源数据中的隐藏关系,帮助在转换和加载到目标系统期间保持引用完整性和数据结构。
- 数据库逆向工程:ARF 通过发现表之间的隐含关系来协助对未记录的数据库进行逆向工程,使开发人员和数据分析师更容易理解数据的结构和含义。
- 数据质量和完整性审计:通过检测不相关但相关的列,ARF 可以帮助数据质量工具标记潜在的数据完整性问题,例如缺少外键约束或表间不一致的数据关系。
- 智能数据集成:在集成来自多个来源的数据时,ARF 可以识别缺乏明确关系的数据库或表之间的潜在连接。此功能支持从不同系统构建统一的数据视图和数据集市。
- 数据湖的元数据丰富:对于包含关系数据的数据湖,ARF 可以通过检测和记录关系来帮助丰富元数据。这种元数据丰富支持改进数据发现和治理。
- 机器学习数据准备:在机器学习管道中,发现数据集之间的关系对于特征工程至关重要。ARF 可帮助数据科学家自动检测相关的表和列,从而更轻松地创建可连接的数据集并改进模型输入。
- 数据沿袭跟踪:了解数据沿袭涉及跟踪数据集随时间的变化关系。ARF 可帮助捕获隐式关系作为数据沿袭跟踪系统的一部分,为缺少定义外键的沿袭数据添加上下文。
依赖项
Java 17 或更高版本:运行该库所需的最低 Java 版本。
添加 Maven 依赖
<dependency> |
java-hll:
这是HyperLogLog 算法的 Java 库。
检测是否包含相同的元素,那么 HLL 可以做到这一点。您可以为每一列创建这个 hll,然后“合并”这些 hll。例如,计算列 a 的 hll,计算列 b 的 hll将两者合并,它将为您提供列 a + b 的基数
HyperLogLog (HLL) 是一种固定大小的集合类结构,用于以可调精度计算不同的值。例如,在 1280 字节中,HLL 可以估算出数百亿个不同值的数量,而误差只有百分之几。
除了原始论文中提出的算法之外,此实现还进行了增强,以提高其准确性和内存使用率,而不会牺牲太多速度。