在使用标准 SQL 或 InterSystems IRIS 中的对象层时,元数据的一致性通常通过内置验证和类型执行来保持。但是,绕过这些层直接访问global的传统系统会带来微妙而严重的不一致性。
了解驱动程序在这些边缘情况下的行为,对于诊断遗留数据问题和确保应用可靠性至关重要。DATATYPE_SAMPLE数据库旨在帮助分析列值不符合元数据中定义的数据类型或约束的错误情形。我们的目标是评估 InterSystems IRIS 及其驱动程序(JDBC、ODBC、.NET)和不同工具在发生此类不一致时的表现。 在本篇文章中,我将重点介绍JDBC 驱动程序。
问题出在哪里?
一些传统应用程序会直接写入globals。如果使用关系模型(通过 CREATE TABLE 创建或使用全局映射手动定义)来公开这些数据,那么映射定义 的底层值就会与每列的声明元数据一致。
当这一假设被打破时,可能会出现不同类型的问题:
- 访问失败(Access Failure):根本无法读取某个值,当驱动程序尝试访问该值时会抛出异常。
- 静默损坏(Silent Corruption):值已成功读取,但与预期的元数据不匹配。
- 未检测到的数据变异(Undetected Mutation):该值被读取且看似有效,但被驱动程序悄然修改以符合元数据要求,这使得这种不一致性难以被察觉。
