数据架构演进与访问安全:从模式管理到数据消费
1. 模式变更对业务逻辑的影响
在数据处理中,模式变更可能会对业务逻辑产生意想不到的影响。例如,在 SQL 里,如果将 NULL 值与非 NULL 值相加,结果会是 NULL。这可能导致业务用户在查看销售总额报告时看到空值,这显然不是预期的结果。若使用 “0” 作为默认值,虽然能避免 sum_sales
列出现 NULL,但即使有新数据到来,现有数据也不会改变,看起来就像没有新销售发生一样。
即便数据管道仍在运行,模式变更时其中的业务逻辑也可能会被破坏。目前,这个问题没有简单的解决方案。因此,设置一些警报机制很重要,它能让我们知道模式发生了变更,这样就能审查现有的管道并在必要时进行调整,同时告知用户某些报告可能暂时不准确。
2. 数据转换管道与数据仓库的模式管理差异
2.1 数据转换管道
数据转换管道大多处理文件(实时管道除外)。当使用 Avro 作为文件格式时,每个文件都会存储模式定义。这意味着我们可以在云存储中存储不同模式版本的文件,然后让管道依靠兼容性规则来协调这些不同版本的模式。
2.2 数据仓库
数据仓库(包括云供应商开发的)的工作方式不同。数据仓库将所有数据存储在表中,这些表必须有定义好的模式,同一表不能有多个模式版本。这对模式演进场景有两个影响:
- 随着数据源或数据产品的模式发生变化,我们需要调整数据仓库中相应表的模式。
- 数据仓库表的模式必须随着时间累积变化,而不能应用不可逆的更改。
现有数据仓库不与外部模式注册表集成。这意味着,虽然我们会使用模式推断并将