数据库选型参考
目前,游戏程序的要求比以往更高。在线游戏一开始时只有几个用户和极少数据。但是,如果游戏获得成功,则可以轻松超过基础数据库管理系统的资源,这种情况并不少见。游戏程序的数据库必须每秒处理数万或数十万次读取和写入。 TcaplusDB 非常适合这些类型的工作负载。作为开发人员,您希望初始时成本较低,然后随着游戏程序变得越来越受欢迎而逐渐增加容量。TcaplusDB 无缝扩展以处理大量数据和大量用户。 下表说明TcaplusDB 之间的一些关键特性。
1. 高可用相关
| 特性 | TcaplusDB |
|---|---|
| 数据持久化 | 持久化到SSD |
| 系统扩缩容 | 支持无损扩缩容,对使用方无感知 |
| 系统升级 | 支持无损升级,对使用方无感知 |
2. 性能相关
| 特性 | TcaplusDB |
|---|---|
| QPS | 单表千万级别QPS |
| 存储容量 | 单表PB级 |
| 时延 | 5ms时延 |
3. 运维相关
| 特性 | TcaplusDB |
|---|---|
| 回档 | 精确到秒级回档,支持表级&记录级 |
| 备份 | 增量备份、全量备份 |
| 同步与订阅 | 支持同步到mysql、kafka等 |
| 读分流 | 支持 |
4. 开发者相关
| 特性 | TcaplusDB |
|---|---|
| 数据结构 | 二维表,多key多value,同时支持list、嵌套等结构。 |
| 分库分表 | 支持水平扩展,无需分库分表 |
| 本地索引 | 支持本地索引,支持基于全key和带分表因子的部分key查询 |
| 二级索引 | 支持全局二级索引,二级索引和主数据间为异步同步,存在毫秒级别一致性差异 |
| 多语言SDK | C++、GO、java、python、RESTFul API等 |
| mysql协议兼容 | 支持用mysql driver访问 |
| 异步访问 | 支持 |
| 同步访问 | 支持 |
| 批量读写 | 支持 |
| 多表关联查询 | 不支持 |
| 单表复杂查询 | 开启二级索引后部分支持 |
| 条件过滤 | 在确定key的情况下支持value字段过滤 |
| 一致性 | 采用主备架构,最终一致 |
| 跨行跨表事务 | 不支持 |
| 读写保顺 | 支持 |
| 记录版本号 | 支持 |
| TTL | 支持 |
5. 系统限制
| 项目 | 限制 |
|---|---|
| 单个集群下可创建业务(App)数量 | 最大510个 |
| 单个业务下可创建游戏区(Zone,表格组)数量 | 最大2048个 |
| 单个游戏区(Zone,表格组)下可创建的表数量 | 最大256个 |
| 数据表名长度 | 最大32B |
| 单张表可指定的主键字段数量 | 最大8个(List表内置的index字段占用1个主键字段,用户实际可指定的主键字段个数为7个) |
| 单张表可定义的普通字段(非主键字段)数量 | 最大256个 |
| 单张表可定义的本地索引数量 | 最大8个 |
| 数据表字段名长度 | 最大32B |
| 单个本地索引可指定的索引字段数量 | 最大8个 |
| 单条数据单个主键字段值的大小 | 最大1KB |
| 单条数据所有主键字段值的总大小 | 最大8KB(PB表的所有主键字段,序列化后的总长度不能超过1022B) |
| 单条数据单个普通字段值的大小 | 最大10MB |
| 单条数据所有普通字段值的总大小 | 最大10MB |
| List表中单个列表可容纳的元素个数 | 最大10000个 |
| 单个数据分片的大小 | 最大256G |
| 单表数据分片数量 | 最大10000个 |
| 修改表-增加字段 | 支持增加普通字段 |
| 修改表-删除字段 | 暂不支持 |
| 修改表-增加/删除本地索引 | 暂不支持 |
| 单次全局索引查询可返回的数据条数 | 最大3000条 |