4. 新架构
实现 Data Lake 较低数据新鲜度的更好方法是增量摄取。增量摄取是一种众所周知的技术,用于为数据湖构建有效的摄取管道。在这里摄取管道不是拍摄快照并将它们作为一个整体转储到 Data Lake,而是以流方式使用 OLTP 数据库的预写日志并将它们摄取到 Data Lake 表中,就像数据库到数据库复制的方式一样。从概念上讲,我们有一个两阶段管道。
11. 管理 Postgres 模式更新
我们的业务是将表从在线 OLTP 世界复制到 Data Lake 世界,复制的数据不是不透明的,而是具有适当的模式,并且复制管道保证了将在线表模式转换为数据湖的模式的明确定义的行为。鉴于 Data Lakes 还能够存储数据更改的整个历史,因此在线和 Data Lake 世界的向后兼容性意味着什么不同。例如,在在线世界中,向 postgres 添加一个不可为空的列是非常好的,但不会遵守用于存储动态变更日志的 Avro(或 Protobuf)的模式演变规则。拥有明确定义的架构演化合约有助于保持数据湖管道更加稳定。我们发现大多数时候,Schema更改涉及添加新列,我们正在使用 Debezium 功能来冻结我们从 Postgres 表中读取的列集,并依靠重新引导表来处理模式升级,我们计划为端到端管道添加模式兼容性检测机制,以减少重新引导的次数。