按驱动阅读
选择、部署和扩展 Zongsoft.Data 数据库驱动。
驱动负责把统一的数据表达式转换为具体数据库语法,并执行命令。一个完整驱动通常包含两个部分:连接设置驱动和数据驱动。
按驱动阅读
已经确定数据库时,可以从对应项目页进入。每页集中说明包名、驱动键、部署连接和专项验证;查询、写入、映射等主题继续说明各驱动共享的用法。
插件注册
驱动以插件方式部署。以 MySQL 为例,插件会依赖 Zongsoft.Data,并向两个扩展点注册对象:
来源:framework/Zongsoft.Data/drivers/mysql/src/Zongsoft.Data.MySql.plugin(节选;上下文见源文件)。
<extension path="/Workbench/Configuration/ConnectionSettings/Drivers">
<object name="MySql" value="{static:Zongsoft.Data.MySql.Configuration.MySqlConnectionSettingsDriver.Instance, Zongsoft.Data.MySql}" />
</extension>连接配置中的 driver="MySql" 必须与这里的对象名称一致。
部署检查
使用某个数据库前,检查三件事:
插件目录中有对应驱动的
.plugin和.dll。驱动插件声明了对
Zongsoft.Data的依赖。连接配置的
driver名称与插件注册名称一致。
如果访问器无法创建,优先检查连接配置路径、默认连接名和驱动插件是否加载。
驱动职责
驱动通常需要实现:
连接字符串解析。
数据源创建。
SQL 或类 SQL 表达式生成。
查询、插入、更新、删除、增改和聚合执行。
数据导入。
数据库方言中的函数、分页、返回值和参数处理。
业务代码不应直接依赖具体驱动类型。通过连接配置和数据访问接口选择驱动,才能保持模块可替换。
选择驱动前先确认什么
驱动统一的是应用调用和映射流程;数据库的查询语义、并发模型和事务能力仍有区别。先明确业务是事务处理、时序采集还是本地分析,再检查目标驱动与数据库的实际支持范围。不要只因为两个系统都接受 SQL,就认定它们可以直接互换。
建议用一个能代表业务的最小模型验证以下项目:
字符串、标识符大小写与空值比较
相同条件在不同数据库上可能匹配不同记录
金额精度、时间精度与时区
可能影响结算、排序与时间范围筛选
自增值、返回值及增改操作
影响写入后模型是否取得正确标识与最终值
导航查询和分页
要检查实际 SQL、结果数量及执行成本
事务、并发更新与失败回滚
统一事务入口不能创造数据库不支持的事务
批量导入、默认值和约束
跳过字段、忽略冲突与失败批次的行为必须明确
开始时可使用首次查询验证宿主链路;接着在独立测试库中验证这些业务语义。连接能打开、常量查询成功,只说明基础连通性。
两个需要特别理解的实现
DuckDB 的导入路径
当前 DuckDB 导入器为常规类型先建立连接内临时表,按选定字段批量追加数据,再执行一次 INSERT ... SELECT 写入目标表。这样既使用批量追加能力,也允许导入字段只是物理表字段的子集,并保留未指定目标列的默认值。
数据库自定义类型被映射为 System.Data.DbType.Object 时,导入器改用参数化逐行插入。因此同一批数据的字段类型也可能改变执行路径,不能仅根据“批量导入”名称估算吞吐量。
导入默认加入当前数据事务;未取得外部事务时,独立连接使用内部事务保护当前批次。启用忽略约束选项可能跳过冲突行,导入调用成功不代表每条输入都成为新记录。事务背景见事务与一致性。
InfluxDB 的版本与事务边界
当前 Influx 驱动使用 InfluxDB3.Client,面向 InfluxDB 3,并声明 TransactionSuppressed 特性。不要把它理解为关系数据库的本地事务参与者,也不要把旧版 InfluxDB 的配置和查询语言直接套入当前驱动。
相关资源
最后更新于