Bigint 与 varchar 数据类型。我应该匹配源系统吗?

Bigint vs varchar datatype. Should I match source system?

不幸的是,我认为这是一个意见问题。但我想知道是否有最佳实践。

我们的数据仓库使用 bigint 作为地址 table 的主键。现有记录都来自使用 bigint 的源系统,因此匹配。我们有一个新的源系统,现在使用 varchar 值作为标识。它仍然只是一个数字,与旧系统没有任何冲突。并且不使用前导零或任何东西。数据以 json 消息形式传入,我们解析信息。所以系统之间没有任何连接。那么我们应该将我们的 DW 密钥更改为 varchar 以匹配,还是说拧紧它并在导入时转换为 bigint。

此外,更新不会有那么大的风险,也不会影响许多其他进程。

另一条信息,旧的源系统是websphere。新来源是 C4/SAP.

无论数据类型如何,您的数据仓库都不应该使用业务键作为主要标识符。数据仓库应该使用数据仓库独有的Surrogate Keys,这样你就可以处理需要拥有相同维度数据的多个实例的情况,想要保留维度数据的历史,源系统re-uses 现在已删除的业务密钥或原始业务密钥导致您的 DWH 出现问题的任意数量的其他实例。

就我个人而言,我会为您现有的 DWH 表实施代理键,这样您就可以毫无问题地将新数据与旧数据合并。