介绍

2021-11-3 使用指南 大约 3 分钟

# 重要重要重要

无论您是否是第一次使用请先仔细阅读重要

注意

!!!重要重要重要!!!

!!!重要重要重要!!!

!!!重要重要重要!!!

ShardingCore是一款易用、简单、高性能、普适性,针对efcore (opens new window)生态下的分表分库的扩展解决方案,支持efcore2+的所有版本,支持efcore2+的所有数据库、支持自定义路由、动态路由、高性能分页、读写分离的一款组件,一款零依赖第三方组件的扩展,如果您熟悉efcore的使用那么对于这个组件您只需要简单配置即可零成本开始使用。

注意

  1. 本组件仅仅只是针对efcore的一个扩展
  2. 本组件基于目前分表分库下的最新、最高性能的原理来实现,实际使用中还需要结合业务设计合理的分片方式
  3. 本组件目前不提供数据迁移功能,如果你一开始的数据分表、分库不是动态的那么后续的库/表增加需要您自己手动去迁移数据
  4. 本组件是针对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即可)

别犹豫了,赶快上手吧

上次编辑于: 2022年7月6日 12:55
贡献者: xuejiaming