『7x24小时有问必答』
欢迎加入 学习小圈子 ,一起打卡交流学习
在项目开发中,如果数据量比较大,比如日志记录,我们往往会采用分表分库的方案;为了提升性能,把数据库查询与更新操作分开,这时候就要采用读写分离的方案。

分表分库通常包含垂直分库、垂直分表、水平分库和水平分表方案,包括分表分库方案,实现每一个方案都需要花费一定的时间;所以,今天给大家推荐一个基于EF Code实现的分表分库、读写分离开源库,可以让我们零成本的接入。

项目简介
这是一个针对EF Code高性能、轻量级分表分库、读写分离开源项目,可以让我们方便快速接入、或者改造原有项目,几乎零成本接入。

项目特性
1、分表:时间分表、自定义分表、多表查询更新删除。
2、分库:支持自定义分库、分库查询更新删除。

3、分表分库:支持部分表格分表、部分表格分库。

4、读写分离:支持一主多从的读写分离的方案。
5、其他:支持动态分表、分库,支持高性能查询,支持事务等。

技术架构
1、跨平台:基于.NetCore开发,支持Windows、Mono、Liunx、Windows Azure。
2、支持 Standard 2.0、.NetCore 2.0+。
3、数据库:支持MySql、Oracle、SqlServer。

项目结构
该项目包含不同数据库的例子,src为不同版本的源码。

快速上手
1、表的定义

public class SysUserMod:IAge
{
/// 
/// 用户Id用于分表
/// 
public string Id { get; set; }
/// 
/// 用户名称
/// 
public string Name { get; set; }
/// 
/// 用户姓名
/// 
public int Age { get; set; }
}

2、分表规则
public class SysUserModVirtualTableRoute : AbstractSimpleShardingModKeyStringVirtualTableRoute
{
    //根据ID取模3,分为2张表
public SysUserModVirtualTableRoute() : base(2,3)
    {
    }

public override void Configure(EntityMetadataTableBuilder builder)
    {
        builder.ShardingProperty(o => o.Id);
    }

}

3、Startup配置
public void ConfigureServices(IServiceCollection services)
{
    ......
    services.AddShardingDbContext()
        .UseRouteConfig(o =>
        {
//定义分表路由
            o.AddShardingDataSourceRoute();
        }).UseConfig((sp,o) =>
        {
            ......
//指定主从数据库
            o.AddDefaultDataSource("ds0",
"server=127.0.0.1;port=3306;database=db1;userid=root;password=root;");
            o.AddExtraDataSource(sp => new Dictionary()
            {
                { "ds1", "server=127.0.0.1;port=3306;database=db2;userid=root;password=root;" },
                { "ds2", "server=127.0.0.1;port=3306;database=db3;userid=root;password=root;" }
            });
            o.UseShardingMigrationConfigure(b =>
            {
                b.ReplaceService();
            });
        }).ReplaceService()
        .AddShardingCore();
}

项目地址
Github:
https://github.com/dotnetcore/sharding-core

Gitee:
https://gitee.com/xuejm/sharding-core
- End -
欢迎加入 学习小圈子 ,获取海量的编程学习资源、学习路线,和大家一起打卡、分享编程知识、共同进步。
分享一套.NetCore从入门到精通视频教程

点击下方公众号卡片,关注我
回复“888”,免费领取
推荐阅读
觉得好看 点个在看
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码