Skip to content

NoSQL 数据库(MongoDB/Redis/TiKV)

本文档说明 Zeze 支持的 NoSQL 存储后端(MongoDB / Redis / TiKV)的配置方式、连接 URL 示例、依赖坐标与适用场景,供需要文档存储、高吞吐热点、分布式事务的场景选型参考。

实现类型是否持久化是否分布式特性
DatabaseMongoDb文档存储视部署文档型,灵活模式
DatabaseRedisKV 内存视部署高吞吐热点读写
DatabaseTikv分布式 KV水平扩展,支持分布式事务

DynamoDB 虽然在源码中有实现类(DatabaseDynamoDb)和 DbType 枚举值,但 Config.createDatabase 工厂没有为它接线(switch 里无对应 case),配置后会落入 default 分支抛 UnsupportedOperationException("unknown database type."),因此当前版本不可用,本文不再将其作为可用后端介绍。

DatabaseMongoDb 是文档存储后端。

<DatabaseConf Name="default"
DatabaseType="MongoDB"
DatabaseUrl="mongodb://localhost:27017"
DatabaseName="zeze_mongodb"/>
属性默认值说明
DatabaseUrlMongoDB 连接串,如 mongodb://localhost:27017
DatabaseNamezeze_mongodb数据库名

依赖:

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>5.8.0</version>
</dependency>

DatabaseRedis 适合高吞吐热点读写,KV 内存级访问。

<DatabaseConf Name="hotdata"
DatabaseType="Redis"
DatabaseUrl="redis://localhost:6379"/>
属性说明
DatabaseUrlRedis 连接串,如 redis://localhost:6379

依赖:

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>5.2.0</version>
</dependency>

DatabaseTikv 是分布式事务 KV,支持水平扩展与分布式事务。

<DatabaseConf Name="default"
DatabaseType="Tikv"
DatabaseUrl="172.21.15.68:2379"
distTxn="true"/>
属性说明
DatabaseUrlPD 地址,如 172.21.15.68:2379
distTxn设为 true 启用分布式事务(属性名全小写 distTxn,写成 DistTxn 不会被解析;值大小写不敏感)

依赖:

<dependency>
<groupId>org.tikv</groupId>
<artifactId>tikv-client-java</artifactId>
<version>3.3.5</version>
</dependency>

源码中存在 DatabaseDynamoDb 实现类与 DbType.DynamoDb 枚举值,但 Config.createDatabase 的工厂 switch 没有 case DynamoDb,配置后会抛 UnsupportedOperationException("unknown database type.")当前版本下 DynamoDB 不可配置使用,请勿在 DatabaseType 中使用 DynamoDB。后续版本若完成接线,本文会补充其配置说明。

依赖版本用于
org.mongodb:mongodb-driver-sync5.8.0MongoDB
redis.clients:jedis5.2.0Redis
org.tikv:tikv-client-java3.3.5TiKV
场景推荐理由
高吞吐热点读写Redis内存级 KV,延迟极低
超大规模分布式,需分布式事务Tikv水平扩展,原生支持 distTxn
文档型存储,灵活模式MongoDB文档存储,字段可变