协调节点要能正确的分发任务就得和编目节点去做通信。
编目节点主要是用于存储整个分布式的存储结构,节点重要参数等(元数据的信息)
做数据存储的是由数据节点组。(一个数据组最多有7个数据节点)
将一个集合中的数据划分成多个不相交的子集,再将这些子集切分到数据组(复制)里去,这种就叫做数据分区,这种不同的子集就叫做分区。逻辑上一个大的集合,按照一个字段或者多个字段的值,把一个大的集合划分成一个小的集合,然后再把这些小的集合存放到不同的区块上(物理机上不同磁盘或者是不同物理机上),好处是:带来水平扩展能力,提高IO访问速度的提升,带来管理和维护上的方便。
一个分区只能存在于一个复制组里,但是复制组里可以有很多的分区(可以移动)这样就达到并行 计算的功能,提高数据的处理性能和速度。
如果建立索引:正好可以检索到,直接命中选择该对象,如果检索条件不包含任何索引的索引字段中,就会进行全表扫描(这里如果是分布式,那么可以推给多个机器同时进行)
怎么去做数据分区?
作为数据划分的依据的字段是分区键
范围分区方式中,分区键就是用来划分分区范围的字段
散列分区中:分区键就是计算hash值的字段
散列分区:先对数据集合做一次散列计算,然后再根据Hash值进行分区(这种更加均匀)
分布类型
水平分区:就是将一个数据组里的数据放到几个数据组里
垂直分区:也就是外表看着是一个大表,其实底层是多个小表(子集合),主集合不存放数据,是子集合存放
垂直分区和水平分区的区别:
水平分区:把一个大的集合放到几个机器中用于实现多机器的并发运算,访问一个数据要找所有磁盘
垂直分区:将一个大的集合切分为若干个子集合,但是对外的接口还是主集合,访问一个数据只需要找特定的子集合
混合分区:
巨杉数据库的高可用
巨杉是通过异步日志同步来保证数据一致性的
主节点2轮收不到半数以上节点心跳就会降备
备节点2轮收到不主机点心跳就会发起选举投票,超半数节点同意才能当选主节点
选举算法:
如果组内拥有主节点,那么其他的从节点是无法要求选举的
如果数据组内要进行选取,必须满足存活节点大于1/2+1的要求
节点竞争看优先级(LSN,权重,NodeID),先找LSN最新的,然后是权重最高的,最后是NodeID最高的
这种情况A是不会重新当选主节点。
这种情况是选C节点
接下来是数据同步原理
注意:编目节点和数据节点统称为复制组
巨杉数据库的事务日志是由20*64M的文件构成,不会永久保存,而是当事务日志写满以后,从第一个文件那进行覆盖写入