半个月前看到博客园有人说.NET不行那篇文章,我只想说大家有时间去抱怨不如多写些实在的东西。 html
优势:支持索引、事务、安全性以及容错性高 git
缺点:数据量达到100万以上就须要开始优化了,通常咱们会对 表进行水平拆分,分表、分区和做业同步等,这样作大大提升了逻辑的复杂性,难以维护,只有群集容错,没有多库负载均衡并行计算功能。 github
答案:固然能够的,打个比方:操做单一数据库称为一维操做,若是操做相同结构,分布在多个服务器上的多个数据库这个能够称为二维操做。 咱们只须要对这个二维操做进行一层封装,让他支持并行运算,把服务器压力分散开,咱们不须要写太多东西,SQL已经为咱们封装了不少,它就比如是一个巨人,而咱们只须要站在他的肩膀上,就能够轻松实现针对WEB的大数据处理。 算法
(1)、数据同步慢 数据库
(2)、事务处理难 安全
(3)、异常捕获难 服务器
(4)、很难与ASP.NET结合,不管是学习学成本,仍是自身的支持方面 架构
(5)、 须要安装,适合离线大数据处理,但未必适合WEB 并发
SqlSugar是一款基于SqlSever的轻量级高性能ORM框架,除了具备和ADO.NET匹敌的性能外,如今已经支持多库并行计算。 负载均衡
优势:
(1)、适合海量数据的无延迟查询
(2)、支持分布式事务
(3)、让JOIN飞起来,告别大数据NOJOIN
(4)、C#.NET自家语法和大量封装函数
(5)、随机存储,也就是说能够存储在任意一个节点数据库,作到真正正的负载均衡,而不是以往主从模式的读写分离。
缺点: SqlServer受权费太贵,适合有钱的公司或者不交受权费的创业小企业
优势:(1)、适合海量数据的无延迟查询
(2)、支持分布式事务
(3)、让JOIN飞起来,告别大数据NOJOIN
(4)、C#.NET自家语法和大量封装函数
(5)、随机存储,也就是说能够存储在任意一个节点数据库,作到真正正的负载均衡,而不是以往主从模式的读写分离。
缺点: SqlServer受权费太贵,适合有钱的公司或者不交受权费的创业小企业
优势:(1)、适合海量数据的无延迟查询
(2)、支持分布式事务
(3)、让JOIN飞起来,告别大数据NOJOIN
(4)、C#.NET自家语法和大量封装函数
(5)、随机存储,也就是说能够存储在任意一个节点数据库,作到真正正的负载均衡,而不是以往主从模式的读写分离。
缺点: SqlServer受权费太贵,适合有钱的公司或者不交受权费的创业小企业
优势:
(1)、适合海量数据的无延迟查询
(2)、支持分布式事务
(3)、让JOIN飞起来,告别大数据NOJOIN
(4)、C#.NET自家语法和大量封装函数
(5)、随机存储,也就是说能够存储在任意一个节点数据库,作到真正正的负载均衡,而不是以往主从模式的读写分离。
缺点: SqlServer受权费太贵,适合有钱的公司或者不交受权费的创业小企业
优势:
(1)、适合海量数据的无延迟查询
(2)、支持分布式事务
(3)、让JOIN飞起来,告别大数据NOJOIN
(4)、C#.NET自家语法和大量封装函数
(5)、随机存储,也就是说能够存储在任意一个节点数据库,作到真正正的负载均衡,而不是以往主从模式的读写分离。
缺点: SqlServer受权费太贵,适合有钱的公司或者不交受权费的创业小企业
二、使用SqlSugar处理大数据
三、使用SqlSugar实现Join 待更新
四、使用SqlSugar实现分页+分组+多列排序 待更新
五、节点故障如何进行主从调换
Insert: 随机存储到某个节点数据库(每一个节点能够配置处理的机率,若是设置为0表示该节点不会有新数据添加进来)
Update、Delete:异步请求全部数据库节点同步汇总处理结果
Search: 对分页前X页、后X页和PageCount<1000(1000这个值能够在程序中设置)的数据进行了特殊优化,其它数据进行了异步节点算法同步对 结果进行汇,性能在多服务器架构中能够完美的体现出来,在单服务器架构须要注意保证足够IO,避免全表扫描,不然起不到优化效果。
一、单服务器、单硬盘、多库架构:
适合低并发,数据量在1亿如下,响应速度有较高要求,建议数据量最好不要超过1000W,在查询中避免全表扫描,充分利用io性能,让异步的优点体现出来。
如图:
对部署在同一台PC机上的10个同结构库进行了模糊搜索
name建了全文索引,id和num创建了复合索引
十个库加起来总共有540万条数据 ,普通机械硬盘 只用了0.3秒的时间。
二、单服务器、多硬盘或阵列:
可使用LIKE等进行全表扫描,性能有明显的提高
三、多服务器、多库架构
就按单台PC机10个库540万0.3秒的来算,若是有10台PC机那就能够处理5000万,时间预算在0.3秒-0.5秒之间。
这10台PC换成10台服务器又能处理多少呢?
总结:节点越多、服务器越多处理能力就越强。
一、引用SqlSugar.dll
二、配置链接字符串
其中rate是Insert时存储到某节点的机率,0表示不会有新数据添加到该节点,下面设置都为1表示我一点都不偏爱
三、添、删、改用法
四、启用分布式事务
服务器须要开启MSDTC等服务
五、Taskable是全部分布式计算的底层核心
分页、分组等复杂的查询都从这里展开,支持DataTable、T:Class、值类型 三种类型,可以方便的把多库的结果同步汇总到一个容器中。
使用Taskable须要注意每一个节点获取的数据量都不能很大,经过少取多,内存运算,在取在运算的方式处理复杂数据的查询。
六、使用Taskable进行分组查询
统计类报表类的查询,查询结果集不会太大,彻底可以使用Taskable进行处理,Merge方法可以将全部库查询的结果集合并到一个新的集合
七、使用Taskable扩展函数,让你处理多库运算更加方便。
八、分布式分页
考虑了分库机制,主键建议使用GUID来保证独一,只有主键惟一才可使用该分页函数
分页是经过 节点数 每页显示条数 当前页码 等算出一个初步的索引,而后取出这个索引位置所在的数据,在算出这个数据的真实索引 与 page begin比较在算出一个新的索引直到找到精准位置在把数据读出来。原理是这样子的。