域的深入理解-1
【域】
之前我们已经对域的概念有过一定的了解,那么域的具体作用是什么,为什么要使用域,以及如何使用。今天来说一下。
简单来讲,域可以将一个物理集群划分为几个存储模块。
在巨杉数据库中,存储数据的节点叫数据节点。所以一个巨杉数据库集群,可以简单理解为由多个数据组构成的(其他类型的节点起到协调和管理的作用),数据组的个数和数据组中的节点数,决定了这个集群的广度和深度。数据组越多,数据库容量越大;数据组中节点越多,数据库的灾备能力越强,可用性也越强。
【域的作用】
但是,随着数据组的增多,数据存储也变得越来越复杂混乱。如果单靠数据组来管理用户的数据,分区表开启自动切分之后,所有数据组都会有这个用户表的数据。
如果一个数据组挂掉了,这个集群就会变为不可用状态,数据组的存活状态对集群影响较大。
那么,如果将数据组再次分组,即创建域,分组之后用户可选择将数据存到哪个域上,这样,就可以大大降低以上情况的影响范围。一个数据组出现意外之后,只会影响包含该数据组的域。对于其他域没有影响,用户也无感知。
由此引出域的作用,实现集群的物理隔离和逻辑隔离。
巨杉数据库可以同时存储结构化数据与非结构化数据,域可以实现将结构化,非结构化数据分开存储。
【域的使用】
简单来讲,域可以降低集群管理的难度,提升集群的可用性(高可用一节提到过)。
上述中,域可以包含多个数据组,同样一个数据组也可以属于多个域。多个域之间,数据是相互隔离的。在sac页面上可以看到域包含的数据组和域中创建的集合空间。
系统默认有一个“SYSDOMAIN”域,包含所有当前集群所有数据组。用户在创建域时不能使用此名称。
域创建之后,用户可以在创建集合空间时,来指定域:db.createCS("CSName",{Domain:"DomainName"})