你好,游客 登录 注册 搜索
背景:
阅读新闻

ASP.NET + SqlSever 大数据解决方案 PK Hadoop

[日期:2015-12-17] 来源:博客园精华区  作者: [字体: ]

  半个月前看到博客园有人说.NET不行那篇文章,我只想说你们有时间去抱怨不如多写些实在的东西。

  1、 SQLSERVER 优点和缺点?

  优点:支持索引、事务、安全性以及容错性高

  缺点:数据量达到100万以上就需要开始优化了,一般我们会对 表进行水平拆分,分表、分区和作业同步等,这样做大大提高了逻辑的复杂性,难以维护,只有群集容错,没有多库负载均衡并行计算功能。

  2、 SQLSERVER 真的不能处理大数据?

  答案:当然可以的,打个比方:操作单一数据库称为 一维 操作,如果操作相同结构,分布在多个服务器上的多个数据库这个可以称为 二维 操作。 我们只需要对这个二维操作进行一层封装,让他支持并行运算,把服务器压力分散开,我们不需要写太多东西,SQL已经为我们封装了很多,它就好比是一个巨人,而我们只需要站在他的肩膀上,就可以轻松实现针对WEB的大数据处理。

  3、 hadoop 适不适合.NET,他有哪些缺点?

  (1)、数据同步慢

  (2)、事务处理难

  (3)、异常捕获难

  (4)、很难与ASP.NET结合,无论是学习学成本,还是自身的支持方面

  (5)、 需要安装,适合离线大数据处理,但未必适合WEB

  4、什么是 SqlSugar 框架?

  SqlSugar 是一款基于 SqlSever 的轻量级高性能 ORM 框架,除了具有和ADO.NET匹敌的性能外,现在已经支持多库并行计算。

  优点:

  (1)、适合海量数据的无延迟查询

  (2)、支持分布式事务

  (3)、让JOIN飞起来,告别大数据NOJOIN

  (4)、C#.NET自家语法和大量封装函数

  (5)、随机存储,也就是说可以存储在任意一个节点数据库,做到真正正的负载均衡,而不是以往主从模式的读写分离。

  缺点: SqlServer授权费太贵,适合有钱的公司或者不交授权费的创业小企业

  SqlSugar学习目录

  1、SqlSugar基础应用

  2、使用SqlSugar处理大数据

  3、使用SqlSugar实现Join 待更新

  4、使用SqlSugar实现分页+分组+多列排序 待更新

  5、节点故障如何进行主从调换

  》》》》2、 使用SqlSugar处理大数据《《《

  1、SqlSugar的原理

  Insert: 随机存储到某个节点数据库(每个节点可以配置处理的机率,如果设置为0表示该节点不会有新数据添加进来)

  Update、Delete:异步请求所有数据库节点同步汇总处理结果

  Search: 对分页前X页、后X页和PageCount<1000(1000这个值可以在程序中设置)的数据进行了特殊优化,其它数据进行了异步节点算法同步对结果进行汇,性能在多服务器架构中可以完美的体现出来,在单服务器架构需要注意保证足够IO,避免全表扫描,否则起不到优化效果。

  1、单服务器、单硬盘、多库架构:

  适合低并发,数据量在1亿以下,响应速度较高数据量最好不要超过1000W,在查询中避免全表扫描,充分利用io性能,让异步的优势体现出来。

  如图:

  对部署在同一台PC机上的10个同结构库进行了模糊搜索

  name建了全文索引,id和num建立了复合索引

  十个库加起来总共有540万条数据 ,普通机械硬盘 只用了0.3秒的时间。

  2、单服务器、多硬盘或阵列:

  可以使用LIKE等进行全表扫描,性能有明显的提升

  3、多服务器、多库架构

  因为把压力分摊各个节点所在服务器,所以可以轻松处亿级以上数据,节点服务器越多处理的数据量就越大,就越快,就算是T级数据,秒查也不是事儿,只需N台廉价的PC。

  2、用法

  1、引用SqlSugar.dll

  2、配置连接字符串

  其中rate是Insert时存储到某节点的机率,0表示不会有新数据添加到该节点,下面设置都为1表示我一点都不偏心

  2、添、删、改用法

  3、启用分布式事务

  服务器需要开启MSDTC等服务

  4、Taskable是所有分布式计算的底层核心

  分页分组等复杂的运算都从这里展开,支DataTable、T:Class、值类型 三种类型,能够方便的把多库的结果同步汇总到一个容器中。

  使用Taskable需要注意每个节点获取的数据量都不能很大,通过少取多,内存运算,在取在运算的方式处理复杂数据的查询。

  5、使用Taskable进行分组查询

  统计类报表类的查询,查询结果集不会太大,完全可使用Taskable进行处理,Merge方法能够将所有库查询的结果集合并到一个新的集合

  6、使用Taskable扩展函数,让你处理多库运算更加方便。

  7、分布式分页

  考虑了分库机制,主键建议使用GUID来保证独一,只有主键唯一才可以使用该分页函数

 





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款