说Federation(联合)之前,先说下,表的垂直分割 和 水平分割
-------------------------------------------------------------------水平分割-----------------------------------------------------
具个例子吧:比如,每个人都有身份证号上面有你的信息,那么肯定有个一张表存放这些信息,中国13亿人的身份证信息,不可能全部放在一张表中,
如果放在一张表中,查询会比较慢,现在怎么办了????
我们可以把表分成9张,分别为 table1 ,table2,table3,table4,table5......
如果增加一条数据,可以根据ID不同,而插入不同的表,
例如: ID%10:表示ID取10的余数= 0~9,插入的时候 insert into 表名+ID%10的值()
如果ID%10=2,那么插入: insert into table2()
查询也是样的:
如果传过来一个ID,获取ID后 ,ID%10=2
select* from tabl2 where id=id
-------------------------------------------------------------------垂直分割-----------------------------------------------------
有些表的数据并是很多,单字段却很长,表占用空间很大,执行检索时需要大量的I/0,可能会影响性能。
这个时候就需要把大的字段放在另一张表中,并且和原表是一对一的关系。
这个就不画图了,相信聪明的你一定懂的。
现在再介绍一下数据库:可扩展性模型,有两种扩展模型:向上扩展 和 向外扩展
向上扩展:就是一个数据库位于一台服务器,这种情况下很难处理较大的负载,如果你需要向上扩展你就要加 CPU RAM,当服务容量不够时你就需要引入跟好的机器,
但是机器种有一个灵界点。应此向上扩展很难处理较大的负载。
向外扩展:选择跟多数据库,跨多个独立节点分散那些数据库,这种模式跟经济,向外扩展典型就是水平分区了,即多个独立节点分割数据库,
这就是Azure SQL Federation 发挥优势的地方。
举例:
比如你在网上卖月饼,中秋来了,这意味这你需要买跟好的硬件,才能应对,但是中秋过来怎么办,就出现,过度供应了,
比如: Azure SQL Federation 就不会出现这些情况,应为他是弹性的,按需扩展,收缩,根据使用付费,这是联合的基本原理。
------------------------------------------怎么创建联合了----------------------------------------------------------------------------
这些是联合理论:
Federation
我们熟悉的 Table View Proc 这些对象都包含在一个数据库界限之内。
联合与任何其他对象一样使用Create Federation 语句 Federation_Name
但区别在于 一个联合是一个特殊对象,该对象扩展到数据库界限以外,因为随着扩展,他
需要知道我们
要扩展到不同联合成员。
Federation Root
联合跟是一个中央存储库 用于存储与向外扩展数据分布有关的信息
他只是一个数据库,
联合跟包括联合对象,我们可以创建联合对象
Federation Member(联合成员)
联合成员是存放数据部分的物理容器,联合成员是实际物理数据库,他们由
Sql Server管理,但他们不再Sql Server Management Studio 中数据库列表中
Federation Key
联合键用于定义数据分发
是客户ID,产品ID,订单ID
联合键定义如何分发和分割数据
现在联合键是 int bigint guid varbinary
Atomic Unit
原子单元代表一个联合的单一实例
例如:客户会有相关的记录:比如
客服地址,客服电话,客服订单
因此一个联合表具有同一联合键值对所有行代表一个原子单元
例如:如果我有一个客户ID是10 所有相关记录:比如
客户电话,客户地址,客户订单,都在一个原子单元中,因为
他们与客户表中的值为10的客户的ID相关,所用这些相关的记录
构成一个原子单元
Architecture Cont.(联合表和引用表)
联合表是我们要在其上进行分区的表
例如:客户电话,客户地址.........
我们要调用这些联合表
引用表是不进行分区的表
我们不会分割其中的数据 但引用表是静态的表
其中的数据不会有太大改变:比如状态 或 邮编
他们是非联合的表
担当我们分割数据并创建跟多联合成员时,
这些表复制到每个联合成员中,
他们不是联合的,因此我们不分割其数据,
但整个表复制到每个联合成员中
》1.创建数据库服务器
》2.用本数据库连接:连接字符串在这里
》3.创建一个数据库
注意;在master下面创建
3》在“可用数据库”中,选择你在上一过程中创建的联合根