介绍
# 重要重要重要
无论您是否是第一次使用请先仔细阅读重要
注意
!!!重要重要重要!!!
!!!重要重要重要!!!
!!!重要重要重要!!!
ShardingCore是一款易用、简单、高性能、普适性,针对efcore (opens new window)生态下的分表分库的扩展解决方案,支持efcore2+的所有版本,支持efcore2+的所有数据库、支持自定义路由、动态路由、高性能分页、读写分离的一款组件,一款零依赖第三方组件的扩展,如果您熟悉efcore的使用那么对于这个组件您只需要简单配置即可零成本开始使用。
注意
- 本组件仅仅只是针对efcore的一个扩展
- 本组件基于目前分表分库下的最新、最高性能的原理来实现,实际使用中还需要结合业务设计合理的分片方式
- 本组件目前不提供数据迁移功能,如果你一开始的数据分表、分库不是动态的那么后续的库/表增加需要您自己手动去迁移数据
- 本组件是针对efcore的扩展所以只要您的框架里面用到了efcore并且可以针对DbContextOptionsBuilder进行手动处理那么就可以支持(如 abp vnext (opens new window))
# 特性
- Code First
支持efcore的code first支持表结构的迁移自动化。
- 自定义路由
支持对数据分表/分库的自定义路由,可以满足几乎90%的业务分表/分库规则,并且支持外部传入配置
- 默认路由
针对分表默认提供多种路由:int取模,string取模,long时间按年月周日分表,DateTime时间按年月周日分表,并且按时间分表支持自动创建对应的表无需手动处理
- 分片字段任意类型
支持分片字段为任意类型的字段比如按时间分片(支持 datetime,long,int...)
- join、group
支持分片对象和非分片对象的join group by,并且支持分片对象和分片对象的join group by
- 高性能分页
具有极少数的客户端分片中间件下才有的流式聚合,和特定的高性能分页,具有低内存高性能O(n),并且支持顺序分页,反向分页,追加排序
- 手动路由
支持分片查询指定分片表,和断言分片表
- 批量操作
支持efcore生态下的所有批量操作组件
- 自动追踪
是efcore分片中间件下为数不多的支持自动追踪的
- 沉浸式编码
支持在编写数据库的crud的时候保证使用体验和efcore原生编码一样,无需学习成本
- 多字段分片
本框架支持查询时通过额外字段来进行快速索引
- 多数据库支持
只要是efcore2+支持的数据库sharding-core都是支持的
- 动态分库
支持动态分库对需要的对象进行动态分库添加
- 动态读写分离
针对其支持动态读写分离
- 动态多配置
支持动态多配置,并且支持动态多数据库类型(用户自行实现多个IShardingRuntimeContext
即可)
别犹豫了,赶快上手吧