Overview of ShardingCore capabilities
mainShardingCore is a library designed for database sharding (splitting data across multiple databases or tables) with minimal learning curve for EF Core users. It provides extensions for IQueryable to support sharding while maintaining compatibility with standard EF Core operations.
Key Features
- Custom Sharding: Supports custom database sharding (routing to different data sources) and table sharding (splitting a single entity into multiple physical tables).
- Flexible Table Sharding: Uses a pattern of
[BaseName] + [TailPrefix] + [Tail](e.g.,user_0,user_1oruser202101,user202102). - Advanced Query Support: Supports
join,group by,max,count,min,avg, andsumacross sharded tables. - Performance Optimizations: Includes high-performance pagination with low-memory streaming for large page jumps.
- Ecosystem Compatibility: Supports extensions like
EFCore.BulkExtensionsfor batch operations. - Read/Write Splitting: Built-in support for separating read and write operations.
Limitations
- Connection Consumption: Performing
joinoperations between sharded tables without index-based filtering can result in Cartesian products, potentially leading to connection exhaustion. Future updates aim to address this via configuration.