大数据处理:教你玩转千万级别的数据

文章讲的是大数据处理:教你玩转千万级别的数据,大数据处理是一个头疼的问题,特别当达不到专业DBA的技术水准时,对一些数据库方面的问题感到无赖。所以还是有必要了解一些数据库方面的技巧,当然,每个人都有自己的数据库方面的技巧,只是八仙过海,所用的武功不同而已。我把我最常用的几种方式总结来与大家分享。

  方法1:采用表分区技术。

  第一次听说表分区,是以前的一个oracle培训。oracle既然有表分区,就想到mssql是否有表的分区,当时我回家就google了一把,资料还是有的,在这我儿只是再作一次推广,让更多的人了解和运用这些技术。

  表分区,就是将一个数据量比较大的表,用某种方法把数据从物理上分成若干个小表来存储,从逻辑来看还是一个大表。首先来个结构图:

  上图虽然不能很清晰的表达表分区的执行过程,但是可以看出表分区要用到那些对象,比如数据文件,文件组,分区方案,分区函数等。

  我们以一个用户表(TestUser)为例,假设这个表准备用来存储中国部分公民的数据,每条数据记录着每个人所属的省份(Area),以及每个人的姓名(UserName),如下图所示。当数据量达到1千万的时候,查询就比较慢了,这时候的数据优化就迫在眉睫。

  在优化之前,根据数据的结构,读写操作等,肯定会提出若干个解决方案。在这儿就以分区表的方案来优化数据库的查询,这儿以区域来分别存储数据,比如广东的公民存放在AreaFile01.MDF文件中,湖南的公民存放在AreaFile02.MDF的文件中,四川的公民存放在AreaFile03.MDF的文件中,以此类推其它省份,为了实现这个功能我们就得做分区方案。在做分区方案时,首先要搞清楚分区方案要涉及到的四个对象:文件组,文件,分区函数,分区方案。

  a:文件组,用来组织数据文件(.MDF)的一个虚拟名称,一个文件组可以添加多个数据文件(.MDF)。打开SQL管理器,找到具体的数据库,然后右键【属性】,进入到【文件组】选项卡,添加Area01,Area02,Area03,Area04四个文件组。如图:

  b:然后选择中【文件】选项卡,添加AreaFile01,AreaFile02,AreaFile03,AreaFile04,AreaFile05,AreaFile06六个数据文件(.MDF),然后指定每个文件属于那个文件组(一个文件组可以存储多个数据文件),以及这个文件的物理路径。在这儿大家已经看明白了,这些数据文件,就是物理上来分割一个数据表的数据的。也就是说一个表的数据有可能存储在AreaFile01中,也有可能存储在AreaFile02中,只要用某种方法来指定他们的存储规则就行了。

  c:分区函数,就是指定数据的存储规则。就是告诉SQL,把新增的数据如何分区。创建一个分区函数,可以用下边的SQL语句来实现。

CREATE PARTITION FUNCTION partitionFunArea (nvarchar(50))
AS RANGE Left FOR VALUES ('广东','湖南','四川')

        d:辛苦的创建了文件,又为其指定文件组,还建一个分区函数,目的只有一个,就是为了创建一个分区方案。分区方案可以用以下代码来创建。

CREATE PARTITION SCHEME partitionSchemeArea
AS PARTITION partitionFunArea
TO (
Area01,
Area02,
Area03,
Area04)

        经过紧张的四步操作,一个分区方案就呈现在我们的眼前了。接下来的事,就是我们要怎样来消费这个分区方案。

  首先我们创建一人普通的表,然后给这个表指定一个分区方案。如下代码。

CREATE TABLE TestUser(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Area] nvarchar(50),
[UserName] nvarchar(50)
) ON partitionSchemeArea([Area])

        为了能看到效果,再插入一些数据。

INSERT TestUser ([Area],[UserName]) Values('四川','肖一');
INSERT TestUser ([Area],[UserName]) Values('四川','肖二');
INSERT TestUser ([Area],[UserName]) Values('四川','肖三');
INSERT TestUser ([Area],[UserName]) Values('四川','肖四');
INSERT TestUser ([Area],[UserName]) Values('广东','张一');
INSERT TestUser ([Area],[UserName]) Values('广东','张二');
INSERT TestUser ([Area],[UserName]) Values('广东','张三');
INSERT TestUser ([Area],[UserName]) Values('湖南','杨一');
INSERT TestUser ([Area],[UserName]) Values('湖南','杨二');

        查询所有的数据,可以用select * from TestUser; 按分区查询:就用如下方法:

select $PARTITION.partitionFunArea([Area]) as 分区编号,count(id) as 记录数
from TestUser group by $PARTITION.partitionFunArea([Area])
select * from TestUser where $PARTITION.partitionFunArea([Area])=1
select * from TestUser where $PARTITION.partitionFunArea([Area])=2
select * from TestUser where $PARTITION.partitionFunArea([Area])=3
select * from TestUser where $PARTITION.partitionFunArea([Area])=4

        效果图:

  你们看我一个简单的表的分区是不是就已经完成了。呵呵,当然在实际应用中,仅仅掌握这点是不够的,比如在原分区方案上添加一个分区,删除一个分区。

作者:李焕珠

来源:IT168

原文链接:大数据处理:教你玩转千万级别的数据

时间: 2024-11-08 21:11:28

大数据处理:教你玩转千万级别的数据的相关文章

4大趋势教你玩转社交广告

Facebook构建了地球上最大最互动的用户平台,每天有很大比例的一部分地球人都使用Facebook.Facebook收购Whatsapp后,这点就更加明显了.考虑到如此庞大的用户群体,Facebook的月活跃用户超过11.9亿,却仍在高速增长,而且用户在上面所花的时间也超过以往.事实上根据Facebook的财报,Facebook的日活跃用户增长了25%到2013年Q3的7.28亿. 对于广告主而言,Facebook的高速增长和海量的用户规模意味着创建品牌认知和获得收入的巨大机会.品牌必须要到用

大V教你玩转话题营销!

微博作为具有媒体属性的社交网络,其最重要的营销价值就在于其开放的话题讨论.现在,越来越多的企业和个人通过微博的话题运营,引发网友UGC的话题讨论,最终达到品牌曝光和营销的作用. 自从今年6月起,新浪微博开始开放微博话题运营,话题逐渐成为了微博营销的一个新阵地.微博账号申请成为话题主持人,设置话题页面引发讨论冲上热门话题榜,成为个人和企业增加曝光.增长粉丝的一个重要途径,电影<中国合伙人>.<小时代>等就都是通过微话题在微博上大火特火了一把. 9月5日开始,已经有超过1.5亿参与量的

10大创意教你玩转网站背景设计

  1. 素描设计 这种设计在几年前就变得比较流行,而且一直持续到现在.这灵感来源于在笔记本上的涂鸦乱画,就像你十几岁时在英文课上所作的那样.每一部分都是些粗糙的素描表现,页面看似是非常随意的创意集合,而它们都以不同的旋转方式散布在页面各处.NotchStudio就是很好地应用了这种创意,并且以非常柔缓的方式表现出来. 即使你本人不善长绘画,这种创意也是相当容易实现的,是因为这些涂鸦通常都是些非常基本的设计.如果拥有一部Wacom或iPad平板电脑,你就可以相当容易地描绘出你自己的图片或者某种意

《大数据管理概论》一3.4 大数据处理与存储一体化技术

本节书摘来自华章出版社<大数据管理概论>一书中的第3章,第3.4节,作者 孟小峰,更多章节内容可以访问"华章计算机"公众号查看 3.4 大数据处理与存储一体化技术 日益增长的数据量对当前计算机系统提出了重大挑战.传统计算机系统依赖于计算为中心的计算和存储分离的计算模型.互联网的广泛应用.业务流的日趋复杂和数据获取方式的增多催生了大数据时代的到来,随后以"MapReduce"为核心思想的各类大数据系统蓬勃发展.然而,大数据计算存在的单节点存储容量小.计算实

大数据处理——Hadoop解析(二):MapReduce

大http://www.aliyun.com/zixun/aggregation/14345.html">数据处理模型MapReduce (接<大数据处理--Hadoop解析(一)>) 大数据时代生产的数据最终是需要进行计算的,存储的目的也就是为了做大数据分析.通过计算.分析.挖掘数据背后的东西,才是大数据的意义所在.Hadoop不仅提供了数据存储的分布式文件系统,更重要的是提供了分布式编程模型和分布式计算系统,通过该编程模型和分布式计算架构可以解决大数据时代所面临的数据处理问

同有科技分享大数据时代新型大数据处理中心的特征

摘要: 日前,北京同有科技举办了主题为"数据改变未来,应用定义存储"的2013年渠道峰会.来自全国近百家重点核心合作伙伴参与了会议,与同有科技一起探讨了如何帮助中高端存储用户构 日前,北京同有科技举办了主题为"数据改变未来,应用定义存储"的2013年渠道峰会.来自全国近百家重点核心合作伙伴参与了会议,与同有科技一起探讨了如何帮助中高端存储用户构建数据中心,帮助他们迅速适应大数据时代的应用需求. 大数据时代,具备大数据特征的应用越来越多,对数据中心的需求有了革命性的变

《智能数据时代:企业大数据战略与实战》一1.4 大数据处理的微妙之处

1.4 大数据处理的微妙之处 处理不同类型数据的方式正趋于一致,因为进行数据处理的设备和应用程序都设置了指定的XML格式,以及特殊行业所专用的XML数据标准(如保险业的ACORD标准.健康医疗产业的HL7标准).XML技术扩展了大数据分析和集成工具可以处理的数据类型,但这些技术的转换能力仍然受到数据复杂性和数量的限制,从而使得现有的数据类型转换工具和数据转换的需求不匹配.因而开启了新类型的通用型数据类型转换工具的大门,新的转换工具能够适用于各种数据类型的转换与融合,而且不用编写代码,同时还能适用

java千万级别访问量应该用什么架构?如人人网,工商银行

问题描述 不考虑硬件方面.就说在搭建工程时应该怎么操作,比如说用到哪些框架的组合.请举例 解决方案 解决方案二:对不起,访问量只是影响你服务器和数据库策略,与框架没太大关系.解决方案三:准确说是与开发用框架没什么关系.只要设计的合理都能处理.解决方案四:楼上的回答认真点.struts+hibernate+spring开发一套产品,能撑住多少访问你试过么解决方案五:数据层使用MySQL,同时使用TokyoCabinet(Key-value的存储引擎,简称TC)做一个数据冗余,TC代替MySQL做存

完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三

转载自 PiggyXP(小猪) 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 手把手叫你玩转网络编程系列之三    完成端口(Completion Port)详解                                                              ----- By PiggyXP(小猪) 前 言         本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中