1. 问题 - 从数据源中检测已删除的记录
从数据源中检测已删除的记录需要您的数据源支持这一点。最好的是删除只在逻辑上完成,例如使用更改标志。对于某些数据库,也可以跟踪已删除的行(例如,参见SQL-Server)。此外,一些 ETL 解决方案(如 Informatica)提供 CDC(更改数据捕获)功能。
2. 问题 - 改变大数据解决方案中的数据处理
有不同的方法。当然,您可以使用键值存储为整体解决方案增加某种复杂性。首先,您必须澄清是否也有兴趣跟踪更改和删除。您可以考虑将所有数据(新的/更改的/删除的)加载到日常分区中,最后构建一个实际的图像(数据源中的数据)。还可以考虑解决此主题的 Databricks Delta 等解决方案,而无需额外的存储。例如,您可以使用 delta 对 parquet 文件执行 upsert,如下所示:
MERGE INTO events
USING updates
ON events.eventId = updates.eventId
WHEN MATCHED THEN
UPDATE SET
events.data = updates.data
WHEN NOT MATCHED
THEN INSERT (date, eventId, data) VALUES (date, eventId, data)
如果您的解决方案还需要通过键进行低延迟访问(例如支持 API),那么 HBase、Cassandra 等键值存储会很有帮助。