云计算中的分片关系数据库 (云计算中的分布式计算是怎样的技术)

教程大全 2025-07-15 19:44:53 浏览

云计算中的分片关系数据库

2011-07-18 09:54:47电子商务、社会媒体、移动通讯以及机器到机器的数据交换都制造着TB级乃至PB级的海量数据,它们是企业IT部门所必须存储和处理的。在用户处理面向云计算数据库的数据时,掌握分片最佳实践无疑是在云规划过程中迈出了重要的一步。

电子商务、社会媒体、移动通讯以及机器到机器的数据交换都制造着TB级乃至PB级的海量数据,它们是企业IT部门所必须存储和处理的。在用户处理面向云计算数据库的数据时,掌握分片最佳实践无疑是在云规划过程中迈出了重要的一步。

分片是指将表分割为可管理大小的磁盘文件的过程。一些高弹性的键值数据存储(如Amazon Simple DB、Google app Engine的数据存储或Windows Azure Tables)和文档数据库(像CouchDB、MongoDB或RavenDB)可以垂直处理表中的大数据。MongoDB内建的自动化分片特性,RavenDB也将在不久的将来增加该功能。自动化分片可以自动地平衡分片大小并消除对DevOps团队监控该过程的需要。自动化分片的MongoDB数据库可不是想象的那么简单,正如Todd Hoff在博客中贴出的有关分片疑难的博文所述。

但仍有小部分键值和文档(被称为NoSQL)数据库缺少传统关系数据库管理系统(RDBMS)所提供的交易数据一致性功能。你可以在内存、处理器或是二者上砸钱来扩展RDBMS(垂直方向上)。你可以配置256GB的RAM到高端商用 服务器 ,但本质上增加更多的CPU核心却并不实际。如果你的数据库在云中,你会受限于内存和处理器,而这都些取决于云供应商的报价单。

扩展RDBMS(水平方向上)导致了一个本质上的技术挑战。2009年8月,Morgan Tocker详细地在博客中讨论了为什么你不会选择分片MySQL数据库。Tocker认为在遇到以下问题时,你可能才需要分片数据库表:

过大的工作集:你的工作集,由频繁访问和更新的数据与索引构成,不适合RAM安装在本地服务器,不适合硬件预算或云服务供应商所能实现的硬件数量。解决方案就是分片。

过度的写频率:你的数据库I/O系统不能处理由本地或是基于云的服务器请求所导致的每秒写次数。解决方案是分离读操作到读拷贝,这可能需要分片来实现分散I/O负荷到多个数据库服务器。

AWS针对MySQL的关系数据库服务提供了其最大的High-Memory Quadruple Extra Large DB实例,该实例包含68GB的内存和26个ECUs。这些ECU们由8个虚拟核心构成,相当于每3.25个ECU拥有一个核心。其售价为每小时2.60美元(每月1872美元)。根据AWS的报价单,一个ECU所提供的性能相当于1.0-1.2 GHz 2007 Opteron或2007 Xeon处理器的性能。AWS RDS DB实例可选择从5GB到1TB的相关存储性能,价格为每GB每月0.1美元。数据传输费用为每GB0.12美元的数据输出,再加每百万次0.1美元的I/O请求。Amazon从7月1日起取消了数据输入的费用,并降低了数据输出的费用。

为实现读拷贝进而实现高可用的商用服务器,你可能还需要额外的存储费用。幸运的是,ScaleBase提供了第三方Database Load Balancer 应用来自动化分片,并针对运行在Amazon EC2 或Amazon RDS的MySQL实现读、写分离。

2009年8月在发布的“分片的麻烦事儿”博文中,Simon Munro总体上介绍了关系据库的分片问题,特别讨论了微软SQL Server 2008的SQL Azure定制化云实现。当时,SQL Azure的最大数据库大小仅为10GB,现如今已是50GB。

微软Azure Application Platform团队的新公司副总裁Scott Guthrie在今年6月9日举行的Norwegian Developer Conference(NDC)2011大会上发言:

“……我们同样将自动化分片作为SQL Azure的一部分,这意味着从扩展前景来看,我们可以处理超高负荷,并可为用户实现任何类型的负载平衡和扩展工作。”

如今,SQL Azure对数据库的支持虽为50GB的关系型存储,但你却可以拥有任意数量的数据库。

通过SQL Azure Federations自动化分片目前尚处于技术预览(Community Technical Preview)阶段,从Guthrie的发言还很难断定分片是否有望“支持百GB或TB级” 。此外,SQL Azure Federations还承诺可以出色地完成模式迁移。SQL Azure包含一个主要和两个次要的针对高可用性的备份,服务是即付即用的,1GB到5GB的(Web版)每GB每月9.99美元,以及10GB到50GB的(商业数据库)每10GB每月99.99美元。每月的固定费用不包括数据传输费用,在北美、欧洲的数据中心每GB输出费用为0.15美元,在亚洲每GB输出费用为0.2美元。微软从7月1日起取消了数据输入费用。与Amazon RDS不同,你不会产生SQL Azure的I/O费用。

微软还没有透露有关SQL Azure的CPU和内存说明,但是公司表示它们与数据库的大小相当。你可以在Cihan Biyikoglu的博客上获得有关今年底SQL Azure Federations商业版发布的日程。

Google在其5月的I/O 2011会议上宣布,下半年商业发布的Google App Engine Beta版将结合RDBMS,并将与商业版GAE一同包含在内,但公司没有透露有关性能和价格方面的细节。

除非Google像变戏法似的实现RDBMS的高扩展性,否则还是准备好分片关系数据库才能处理好云计算中的大数据。

云计算中的分布式计算是怎样的技术

MS SQL Server,unix,linux各是什么

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。 SQL语言的主要功能就是同各种数据库建立联系,进行沟通。 按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。 SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。 目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。 虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括SELECT, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。 SQL ServerSQL Server 是一个关系数据库管理系统。 它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。 在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。 Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。 SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。 具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 unix,linux 是两款操作系统 目前全球最出名的三款OS(操作系统)是 微软的WINDOWS系统 和 苹果的APPLE系统 以及 unix,linuxunix,linux 属于同一种 很复杂 一般用在ATM上 是一种开放式系统 有很多张版本 安全性很高 一般很难搞懂

关系数据库有哪几种完整性

3.1 SQL 中的完整性约束SQL把各种完整性约束作为数据库模式定义的一部分。 既有效防止了对数据库的意外破坏,提高了完整性检测的效率,又可以减轻编程人员的负担。 SQL对三种不同完整性约束的设置及检测,采取了不同的方式加以实现。 下面分别介绍。 3.1.1 实体完整性和主码实体完整性规定,主码的任何属性都不能为空,因为,概念模型中实体和联系都是可区分的,而且它们以码为唯一性标识。 如果,主码的属性值可以为空,则意味着在概念模型中存在着不以码为唯一性标识的实体。 这显然是前后矛盾的。 那么怎样保证实体完整性呢?SQL中实体完整性是通过主码来实现的。 一旦某个属性或属性组被定义为主码,该主码的每个属性就不能为空值,并且在关系中不能出现主码值完全相同的两个元组。 主码的定义是在Create Table 语句中使用 Primary Key关键字来实现的。 方法有两种:a) 在属性定义后加上关键字 Primary Key;b) 在属性表定义后加上额外的定义主码的子句:Primary Key(<主码属性名表>)说明:² 如果主码仅由一个属性组成,上述两种方法都可定义,若由两个或以上的属性组成,则只能用上述第二种方法定义了。 ² 对于候选码的说明方法,可以用Unique说明该属性的值不能重复出现。 Unique的使用与Primary Key相似。 ² 一个表中只能有一个主码定义,但可以有多个Unique说明。 ² SQL中,并没有强制为每个关系指定主码,但为每个关系指定主码通常会更好一些。 (因为主码的指定可以确保关系的实体完整性)3.1.2 参照完整性约束与外部码参照完整性是对关系间引用数据的一种限制。 即:若属性组A是基本关系R1的外码,它与基本关系R2的主码K相对应,则R1中每个元组在A上的值必须:要么取空值,要么等于R2中某元组的主码值。 一、外部码约束的说明:SQL中就是利用外部码的说明来实现参照完整性约束,限制表中某些属性的取值的。 外部码的说明也有两种方法:1、在该属性的说明后直接加上关键字”REFERENCES <表名>(<属性名>)”,其中表名称为参照关系名,属性名称为参照关系的主码。 2、在Create Table 语句的属性清单后,加上外部码说明子句,格式为:FOREIGN KEY <属性名表1> REFERENCES <表名>(<属性名表2>)上式中的属性名表1和属性名表2中属性可以多于一个,但必须前后对应。 二、参照完整性约束的实现策略前面讲了,外部码的取值只有两种情况:要么取空,要么取参照关系中的主码值。 可是当用户操作违反了这个规则时,如何保持此约束呢?SQL提供了三种可选方案:1、RESTRICT(限制策略):当用户对表进行违反了上述完整性约束、条件的插入、删除或修改操作时,将会被系统拒绝。 2、CASCADE(级联策略):当对参照关系进行删除和修改时,SQL所提供的一种方案。 在这种策略下,当删除或修改参照关系中某元组的主码值时,被参照关系中,那些外部码具有该值的元组也将被删除或修改,以保证参照完整性。 3、SET NULL(置空策略):置空策略也是针对参照关系的删除或修改操作的。 在这种策略下,当删除参照关系中的某一元组或修改某一元组的主码值时,被参照关系中外码值等于该主码值的元组在该外码上的值将被置空说明:当用户不指定参照完整性的实现策略时,一般被默认为RESTRICT(限制策略)。 实现策略的说明通常被加在外部码的说明后面,格式为:ON DELETE SET NULL ON UPDATE CASCADE。 3.1.3 用户自定义完整性约束对于用户自定义完整性约束,SQL提供了非空约束、对属性的CHECK约束、对元组的CHECK约束、触发器等来实现用户的各种完整性要求。 1、非空约束:在CRETE TABLE 中的属性定义后面加上NOT NULL关键字即定义了该属性不能取空值。 2、基于属性的CHECK约束使用CHECK(检查)子句可保证属性值满足某些前提条件。 其一般格式为:CHECK(<条件>)它既可跟在属性定义的后面,也可在定义语句中另增一子句加以说明。 如:CHECK(age>=18 AND age<=65); CHECK(sex IN (“男”,”女”)); CHECK(dno IN(select dno from department));从上例中可以看出,CHECK子句的条件中还可以带子查询。 3、基于元组的CHECK约束基于元组的CHECK约束往往要涉及到表中的多个域。 所以它是元组约束。 在对整个元组完成插入或对某一元组的修改完成之后,系统将自动检查是否符合CHECK条件表达式。 若不符合条件,系统将拒绝该插入或修改操作。 基于元组CHECK约束的说明方法是在CREATE TABLE语句中的属性表、主码、外部码的说明之后加上CHECK子句。 3.1.4 约束的更新约束与数据库中的表和视图一样,可以进行增、删、改的更新操作。 为了改和删约束,需要在定义约束时对其进行命名,在各种约束的说明前加上关键字CONSTRAINT 和该约束的名称即可。 例如:在employee表的create table语句中:eno char(4) CONSTRAINT PK_employee PRIMARY KEY,dno char(4)CONSTRAINT FK_employee FOREIGN KEY REFERENCES department(dno);当对各种约束进行命名后,就可以用ALTER TABLE语句来更新与属性或表有关的各种约束。 如:ALTER TABLE employee DROP CONSTRAINT FK_employee;ALER TABLE Salary ADD CONSTRAINT RightSalary CHECK(Insure+Fund

ER模型是做什么用的

关系数据库或者ER图,这其实是以实体(个体,类)为基础的物理语言,因为关系是实体之间的关系,是由实体来(联合)定义的,所以是实体在先,关系在后的. 当然,也有所谓的纯关系项,比如学生成绩(数学分数),既不属于学生,也不属于课程,而是它们的关系存在. 这个模型,对于实体自身的表达,又有两种方式,一种是通过共相(属性)的交集合来描述,表现在数据库中就是主键是组合码,另一种方式是个体指称方式,就是通过对个体命名,比如编一个流水号作为主键.它基本上就是现在关系数据库的表达框架. 值得一提的是属性,它其实是一个抽象概念(共相),具有排中律的性质,比如人的属性中,善良应该是最基本的一个属性,但却无法在数据库中使用,因为许多人我们无法断定他是否善良,不满足排中律就不能用. 所以又可以说,ER模型又是以属性(共相)为基础的模型,每个属性的可测量性可赋值是它的一个重要要求.满足排中律只是上述一个最简单的形式.这个要求限制了实体的表达. 这个实体有属性,而无行为,它只是一个被加工的对象.这个实体对象就是我们企业模型中的数据模型所要表达的,或者是最终表达的,这个ER模型好像更适合一种静态的模型表达.我感到,每个关系都是实体的一次聚集,它正是发生动作和表达动作的时候.所以,这个ER模型与微分方程的表达思想非常接近,核心是数据状态决定功能,决定活动和控制,所以它是太机械的决定论问题,难以容纳随机因素的世界模型表达.

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐