国产数据库研发平台适配的验证,需要把“能连上”拆成可复算的验收项:先界定本轮要证明的业务功能、数据正确性、性能与运维接管范围,再对连接与驱动、SQL 与存储过程、事务与锁、字符集与排序、批量与分页、备份恢复与高可用切换、性能基线、监控运维、升级回退逐项设定指标、公式与通过标准。每项都要有分子分母、时间窗、单位和缺失值处理规则,并用同一套脚本在基准库与国产库上各跑一遍做差值对照。ONES 信创版适配信创主流基础软硬件,覆盖芯片、操作系统、数据库等核心模块,其适配结论同样需要以本轮实测数据为准。
要点总览(TL;DR)
- 适配验证要先把“能连上”拆成可复算的验收项,覆盖连接与驱动、SQL 与存储过程、事务与锁、字符集与排序、批量与分页、备份恢复与高可用切换、性能基线、监控运维、升级回退九类。
- 每项指标都要写明公式、分子分母、单位、时间窗与缺失值处理规则;分母为零或样本过小时标注“无样本”或“样本不足”,结论记为待观察。
- 执行时用同一套脚本、同数据量、同并发、同时间窗,先在基准库采集基线,再在国产库复跑,按公式计算差值并逐项对照。
- 结论分通过、不通过、待观察三档逐项给出,整体结论由各项汇总;厂商认证与单次演示只作参考,不能替代本轮实测数据。
- 测试数据量与生产规模差距较大、版本升级后的驱动与执行计划变化,都需要补充验证或重新采集指标,不能沿用旧数据下结论。
适配验收要回答什么问题:目标与通过边界
适配验收要回答的是一个有限问题:在指定的应用、数据库版本和读写路径上,研发平台能否稳定完成业务操作,数据结果与基准库一致,性能落在可接受区间,运维团队能够接管日常监控、备份与故障切换。验收结论只覆盖本轮纳入的范围,超出范围的部分需要另行验证。
目标可以拆成四个可判定的方向。业务功能可用,指纳入清单的功能用例在国产库上执行成功且结果符合预期;数据正确,指相同输入下国产库与基准库的结果集逐行一致;性能可接受,指关键操作的响应时间与吞吐相对基线落在约定阈值内;运维可接管,指备份恢复、主备切换、监控告警在演练中按预案完成。四个方向各自有指标,任何一项缺失都会让结论不完整。
范围边界要在验证开始前写清楚,至少包括:纳入本轮的系统与模块清单、国产数据库的产品与版本、基准库的产品与版本、纳入的读写路径(在线查询、批量导入、报表统计、定时任务等),以及明确排除在外的部分。范围写得越具体,后续复测和版本升级时的对照越容易执行。
结论建议分三档。通过:该项全部用例执行完成,指标达到预设阈值,证据齐全可复算。不通过:存在结果不一致、功能失败或指标明显超出阈值,且已定位到具体原因。待观察:样本量不足、分母为零、测试数据量与生产差距较大,或问题已修复但复测轮次不够。三档结论要逐项给出,整体结论由各项汇总而来,避免用一句“基本可用”代替逐项判定。
厂商认证和单次演示不能直接作为验收结论。认证说明产品在厂商声明的范围内完成过适配,具体产品、版本与证书编号需以厂商正式材料为准;单次演示只证明某条路径在某个时点跑通。两者可以作为参考输入,验收结论仍要由本轮可复算的数据支撑。
验证项清单与指标口径:从连接到底层运维
下表把九类验证项拆成可计算的指标。每项指标都写明公式、单位与数据来源,执行时按同一口径采集,避免不同人算出不同结果。
| 验证项 | 指标与公式 | 单位与时间窗 | 数据来源 |
|---|---|---|---|
| 连接与驱动 | 连接成功率 = 成功建立连接次数 ÷ 发起连接次数 × 100% | %,连续 30 分钟压测窗口 | 应用日志、连接池监控 |
| SQL 语法与存储过程 | SQL 兼容率 = 执行成功且结果正确的语句数 ÷ 纳入验证的语句总数 × 100% | %,单轮全量执行 | 比对脚本、应用错误日志 |
| 事务与锁 | 事务成功率 = 提交成功事务数 ÷ 发起事务数 × 100%;死锁发生率 = 死锁次数 ÷ 事务总数 | %、次/万事务,同一压测窗口 | 数据库死锁日志、应用日志 |
| 字符集与排序 | 排序一致率 = 排序结果与基准库一致的查询数 ÷ 抽样查询数 × 100% | %,抽样不少于约定条数 | 结果集比对记录 |
| 批量与分页 | 批量写入吞吐 = 成功写入行数 ÷ 耗时(秒);分页查询一致率 = 结果一致条数 ÷ 样本 SQL 条数 | 行/秒、%,固定数据量与并发 | 压测工具、比对脚本 |
| 备份恢复与高可用切换 | 恢复成功率 = 校验通过次数 ÷ 恢复演练次数 × 100%;切换耗时 = 主备切换完成时间 | %、秒,每次演练单独记录 | 备份恢复记录、切换演练记录 |
| 性能基线 | 响应时间 P95 = 第 95 百分位请求耗时;相对基线偏差 =(国产库 P95 − 基准库 P95)÷ 基准库 P95 × 100% | 毫秒、%,同并发同数据量 | 压测工具、数据库慢查询日志 |
| 监控与运维 | 指标采集完整率 = 实际采集到的监控项数 ÷ 应采集项数 × 100%;告警触达率 = 成功触达告警数 ÷ 触发告警数 × 100% | %,连续观测窗口 | 监控平台采集记录、告警日志 |
| 升级回退 | 回退成功率 = 回退成功次数 ÷ 回退演练次数 × 100%;回退耗时 = 从触发回退到业务恢复的时间 | %、分钟,每次演练记录 | 升级与回退操作记录 |
缺失值和分母为零要有统一规则。某项指标在时间窗内没有产生任何样本,例如未触发死锁、未执行回退演练,应标注“无样本”,结论记为待观察,不按 0 或 100% 处理。分母为零时同样不计算比率,改为记录绝对次数。样本量低于预设下限时,指标可以计算但要标注样本不足,不能单独支撑通过结论。
指标阈值不设通用达标线,由项目在验证前根据业务重要性和基线数据约定。例如核心查询的 P95 偏差阈值可以设得比报表类操作更严,具体数值写进验收方案并在复测时沿用同一口径。
数据口径与证据要求:怎样算“可核验”
可核验的意思是,另一个人拿到证据能按同样公式复算出同样结果。为此每类证据都要固定形式并留存原始记录,不能只保留结论性描述。
功能类证据保留用例编号、前置条件、输入数据、预期结果与实际结果,失败用例附错误信息和截图或日志片段。数据正确性证据保留基准库与国产库的结果集导出文件及逐行比对记录,注明比对字段、排序规则和差异条数。性能类证据保留压测脚本、并发数、数据量、采样时间窗和原始采样数据,确保换人重跑能得到相近结果。运维类证据保留切换演练的操作步骤、开始与结束时间、业务恢复确认记录,以及备份恢复的耗时与校验结果。
证据留存要指定责任人。建议每类验证项设一名数据责任人,负责采集口径一致、原始文件归档和复算抽查;验收评审时由另一名成员随机抽取若干项按公式复算,复算结果与报告一致才计入通过。证据文件按验证项编号归档,与验收报告中的指标一一对应,便于版本升级后对照历史数据。
计算与评估步骤:从基准库到国产库的对照执行
执行顺序的核心是让两组数据在相同条件下产生,差值才有解释力。建议按以下五步推进。
- 在基准库上采集基线。用最终版脚本和数据集在基准库上跑一遍,记录各项指标的原始数据,形成基线报告。基线采集期间不调整脚本和参数。
- 在国产库上同条件复跑。保持同数据量、同并发、同脚本、同时间窗,在国产库上执行相同任务,采集原始数据。环境差异(如硬件配置)要记录在案,作为解读偏差的参考。
- 按公式计算并做差值对照。分别算出两库的各项指标,用差值或相对偏差表达,填入对照记录表。差值方向、幅度和是否超出阈值逐项标注。
- 对不达标项定位原因。把问题落到具体 SQL、字段、索引或配置参数上,例如某条分页语句在国产库上执行计划不同导致响应变慢,或某字段排序规则差异导致结果顺序不一致。
- 修复后复测并记录两轮数据。修复动作、修复时间和复测结果一并留存,报告中同时呈现修复前与修复后的指标,避免只报最终值。
对照原则贯穿全程:同脚本、同数据、同时间窗。任何一项条件变化都要在记录中注明,并在解读时说明其对差值的影响。验证过程涉及大量用例、缺陷和复测轮次,可以用 ONES TestCase 把测试用例与需求、任务关联,测试计划与迭代关联,未通过的用例直接创建缺陷任务跟踪修复,复测记录随用例留存,使每项指标的证据链能够对应到具体执行记录。
一个算例:分页查询与批量写入怎么算
以下数字为演示情景,用于说明计算过程,不代表任何产品的实际性能。
分页查询算例。从业务中抽取 200 条分页查询 SQL 作为样本,在基准库与国产库上分别执行。国产库执行成功 198 条,其中结果集与基准库逐行一致的有 195 条。分页查询一致率 = 195 ÷ 200 × 100% = 97.5%。响应时间取样本的平均值,假设国产库平均 180 毫秒、基准库平均 150 毫秒,相对偏差 =(180 − 150)÷ 150 × 100% = 20%。解读时要把一致率和响应偏差分开看:一致率 97.5% 说明有 5 条样本存在结果差异或执行失败,需要逐条定位;20% 的响应偏差是否可接受,取决于验证前约定的阈值。
批量写入算例。设定批次大小 1000 行,共写入 50 批、总计 50000 行。国产库成功写入 49800 行,总耗时 100 秒。批量写入吞吐 = 49800 ÷ 100 = 498 行/秒;失败率 =(50000 − 49800)÷ 50000 × 100% = 0.4%。基准库同条件吞吐假设为 620 行/秒,则吞吐相对偏差 =(498 − 620)÷ 620 × 100% ≈ −19.7%。失败率不为零时要定位失败批次和具体行,确认是数据类型、约束还是连接中断导致。
结果异常时的排查方向可以按顺序推进:先看执行计划是否与基准库不同,再看字段类型与字符集是否引入隐式转换,然后检查索引与统计信息是否缺失,最后核对连接池与事务隔离级别配置。排查结论要回填到对照记录表,作为修复依据。
结果解读与限制:哪些结论不能从指标直接推出
指标达标只说明该项在测试条件下符合约定,不能直接推出整体适配完成。九类验证项之间存在依赖,例如连接稳定但事务隔离级别配置不当,仍可能在高并发下出现数据异常。整体结论要由各项结论汇总,并对未覆盖路径明确标注。
测试数据量与生产数据量的差异会带来偏差。小数据集上表现正常的查询,在生产规模下可能因执行计划变化而变慢;批量写入在测试环境达到的吞吐,也会受生产存储和网络影响。解读时应说明测试数据规模,并把与生产规模差距较大的项列为待观察,安排生产影子环境或灰度阶段补充验证。
版本升级后需要重新验证的范围包括:数据库小版本升级涉及的驱动与连接参数、SQL 执行计划变化、字符集与排序规则调整、备份恢复工具兼容性。升级前保留的历史指标可以作为对照基线,但升级后必须重新采集,不能沿用旧数据下结论。
分母为零或样本过小时,结论要谨慎。未触发死锁不等于高并发下不会死锁,只说明本轮窗口内没有出现;回退演练只做一次,回退成功率 100% 的证据强度有限,应增加演练次数或延长观察窗口。适配认证与实测结果是两件事:认证以厂商正式材料为准,具体产品、版本与证书编号需要核对;实测结论只覆盖本轮测试范围,两者在验收报告中应分开陈述,不互相替代。
常见问题
适配验证的九类项目必须全部做吗,可以按优先级裁剪吗?
九类项目是覆盖面的建议清单,实际执行可以按业务重要性排优先级,但裁剪要有依据并写进验收方案。在线交易类系统通常把连接与驱动、事务与锁、性能基线放在前面;报表与统计为主的系统更关注 SQL 兼容率、字符集与排序、批量与分页。备份恢复与高可用切换、升级回退属于运维接管的前提,即使本轮不深入验证,也应在方案中标注为后续补充项,避免整体结论被误读为全部覆盖。
基准库的数据从哪里来,没有历史基线怎么办?
基线优先用现有生产库或与生产同构的基准库采集,用最终版脚本和数据集跑一遍,记录各项指标的原始数据。如果系统尚未上线、没有历史基线,可以选一个与目标国产库对照的现有数据库作为基准,在验证前一次性采集,并注明该基线是本轮新建、不是长期运行数据。基线采集期间不调整脚本和参数,否则后续差值失去可比性。
厂商给了适配认证,还需要自己做实测吗?
需要。认证说明产品在厂商声明的范围内完成过适配,具体产品、版本与证书编号要以厂商正式材料为准;它不能替代本轮业务路径上的实测。验收报告应把认证情况和实测结果分开陈述:认证作为参考输入,实测数据覆盖本轮纳入的应用、数据库版本和读写路径。两者结论不一致时,以实测数据为准,并把差异记录在案。
验证过程中产生的用例、缺陷和复测记录怎么管理?
建议把每项验证指标对应到具体用例,用例保留编号、输入数据、预期与实际结果;未通过的用例直接转为缺陷任务跟踪修复,复测结果随用例留存,形成从指标到执行记录的对应关系。ONES TestCase 支持测试用例与需求、任务关联,测试计划与迭代关联,未通过的用例可创建缺陷任务,适合承载这类验证过程;适配结论仍以本轮实测数据为准。
国产库小版本升级后,哪些指标需要重新采集?
升级后至少重新采集四类:驱动与连接参数相关的连接成功率、SQL 执行计划变化带来的响应时间与兼容率、字符集与排序规则调整后的排序一致率、备份恢复工具兼容性对应的恢复成功率与切换耗时。升级前的历史指标可以作为对照基线,但不能直接沿用为升级后的结论。升级范围较大时,建议按本轮验证项清单整体复跑一遍。
