BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

针对SQL Server和SQL Azure的分区和分片

| 作者 Jonathan Allen 关注 554 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2011年2月18日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

对于使用超大数据集工作的开发者来说,水平的分区和分片都是很重要的工具。尽管当前的数据库服务器,像SQL Server,能够支持上TB的RAM以及上百个处理器,但是在单个表中所能够存储的数据量还是有限的。这正是水平分区起作用的地方。水平分区既可以在单个服务器中完成,也可以跨多个服务器完成,后者经常指的就是分片(sharding)。

在SQL Server 2005中,微软增加了为每个表创建最多1000个分区的能力。这种分区会位于单独的服务器中,我们可以使用它把单个的逻辑表分布在多个文件组中。这会立刻提高I/O能力,如果有设计良好的schema,那么它还能够大大提升其它方面的性能。不幸的是这种特性也有很多缺点。因为它仅限于单个机器,所以想要让它有效率,你需要强大的数据库服务器和存储阵列网络。除了硬件成本之外,水平分区特性和需要企业版或者数据中心版本的许可,这两个版本对于每个处理器的零售价分别是27,495和54,990美元。

对此感兴趣的读者可以阅读白皮书《使用SQL Server 2008的分区表和索引策略》。这部白皮书很长,但是对于想要在SQL Server中使用这种特性的人来说,还是应该阅读的。当然,在DB2OracleSybase Adapter ServerMySQL中也都能找到类似的特性。

在SQL Server上暂时还无法实现跨多台服务器的完全数据分区。尽管在存储过程或者服务层代码中我们肯定可以实现必要的逻辑,但这样特别的方法,对于想要关注于产品真正需求的开发者来说,可能无法让他们满意。我们也可以使用SQL Server的分布式分区视图,但是规则非常麻烦。例如,我们无法针对分区的列使用标识列或者时间戳,而分区列需要是主键的组成部分。

SQL Azure承诺,它会通过所谓的“联合(federation)”提供分区功能。乍看起来,这似乎是很大的改善,但即便是SQL Azure中的联合的预览版也需要很久之后才能够发布。

同时,希望继续使用SQL Server的人可以试着转向第三方的工具。其中一种选择是最近发布的Enzo SQL Shard库。Blue Syntax的这个开源的项目基于.NET的任务并行程序库实现,承诺为SQL Server和SQL Azure提供分片的特性。

查看英文原文:Partitioning and Sharding Options for SQL Server and SQL Azure

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT