Sequoia DB巨杉数据库做为分布式数据库,由数据库存储引擎与数据库实例两大模块组成。数据库
其中,数据库存储引擎模块是数据存储的核心,负责提供整个数据库的读写服务、数据的高可用与容灾、ACID与发你不是事务等所有核心数据服务能力。安全
数据库实例模块则做为协议与语法的适配层,用户可根据须要建立包括MySQL、PostgreSQL与Spark SQL在内的结构化数据实例;支持JSON语法的MongoDB实例;以及彻底兼容S3与Posix文件系统的对象存储实例。服务器
Sequoia DB巨杉数据库支持多种类型的数据库实例。至当前版本为止,Sequoia DB巨杉数据库支持6中不一样的实例类型。架构
实例类型并发 |
实例分类分布式 |
描述操作系统 |
MySQL对象 |
结构化数据blog |
适用于纯联机交易场景,与MySQL保持100%兼容进程 |
PostgreSQL |
结构化数据 |
适用于联机交易场景与中小量数据的分析类场景,与PostgreSQL基本保持兼容 |
SparkSQL |
结构化数据 |
适用于海量数据的统计分析类场景,与Spark SQL保持100%兼容 |
JSON API |
半结构化数据 |
适用于基于JSON数据类型的联机业务场景,与MongoDB保持部分兼容 |
S3对象存储 |
非结构化数据 |
适用于对象存储类的联机业务与归档类场景,与S3保持100%兼容 |
Posix文件系统 |
非结构话数据 |
适用于使用传统文件系统向分布式环境迁移的业务场景,与标准Ext3/XFS等基本保持兼容 |
Sequoia DB巨杉数据库存储引擎采用分布式架构,集群中的每一个节点为一个独立进程,节点之间采用TCP/IP协议进行通信。
同一个操做系统能够部署多个节点,节点之间采用不一样的端口进行区分。
Sequoia DB巨杉数据库的节点分为三种不一样的角色:协调节点、编目节点与数据节点。
协调节点不存储任何用户数据,做为外部访问的接入与请求分发节点,协调节点将用户请求分发至相应的数据节点,最终合并数据节点的结果应答对外进行响应。
编目节点主要存储系统的节点信息、用户信息、分区信息以及对象定义等元数据。在特定操做下,协调节点与数据节点均会向编目节点请求元数据信息,以感知数据的分布规律和校验请求的正确性。
数据节点为用户数据的物理存储节点,海量数据同分片切分的方式被分散至不一样的数据节点。在关系型与JSON数据库实例中,每一条记录会被完整地存放在其中一个或多个数据节点中;而在对象存储实例中,每个文件将会一句数据页大小被拆分红多个数据块,并被分散至不一样的数据节点进行存放。
因为采用PC服务器内置物理盘,当前大部分分布式数据库没法在硬件设备出现故障时保证单一设备中数据的可靠性与持久性。所以Sequoia DB巨杉数据库采用数据多副本存放的机制,将编目节点与数据节点所存放的数据以节点为单位进行复制,多个拥有相同数据拷贝的节点被称为数据复制组。通常来讲,复制组、数据分片和数据分区均表明一样的含义。
每一个复制组内的多个节点被称为数据副本,在Sequoia DB巨杉数据库中每一个复制组最多支持7个数据副本。
因为复制组内的逻辑节点互为备份,配置了多个数据副本的Sequoia DB巨杉数据库原生提供高可用与容灾机制。用户能够经过添加复制组或分区的数量实现整个存储引擎集群的水平弹性扩展,也能够经过添加复制组内副本的数量实现更高的安全性以及提高读写分离的并发性。
复制组内部的多个数据副本之间能够同时使用强一致或最终一致的数据同步方式,用户能够基于节点或表(集合)级别进行相应的配置。整个集群内部数据的ACID与分布式事务彻底由数据库存储引擎支持。
引用:巨杉数据库官方文档