购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 分布式存储与数据库

2.5.1 分布式对象存储

几年前,云存储(Cloud Storage)还只是专业领域的一个概念,现在云存储已成为司空见惯的一个网络服务,比如在生活中大家经常使用的百度网盘、微软公司的OneDrive和苹果公司的iCloud等。

云存储是一种在线存储模式,即把数据存放在通常由第三方托管的多台虚拟服务器,而非专属的服务器上。托管公司运营大型的数据中心,用户则通过向其购买或租赁存储空间的方式,来满足数据存储的需求。数据中心运营商根据客户的需求,在后端准备存储虚拟化的资源,并将其以存储资源池的方式提供,客户便可自行使用此存储资源池来存放文件或对象。实际上,这些资源可能分布在众多的服务器主机上。

对象存储是用来描述解决和处理离散单元的方法的通用术语。对象在一个层结构中不具有层级结构,是以扩展元数据为特征的。对象存储是云存储的一部分,它提供了云存储后端的存储服务。云存储是建立在对象存储之上的一个整体的解决方案,除了后端的存储服务之外,它还需要包括各种操作系统和平台上运行的客户端、身份认证、多种管理及监控功能等。

分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散地存储在企业的各个角落。

分布式对象存储在提升存储系统的扩展性的同时,也以更低的代价提供了数据冗余的能力。因为传统的高端服务器性能强劲,需要较高的成本,很少被用来搭建私有存储。对象存储则以数量弥补质量,用大量低成本的普通PC服务器组建网络集群,以此提供服务。相对于传统的高端服务器,同一价格下分布式对象存储提供的服务质量好、性价比高、旧节点的替换和新节点的扩展更加灵活方便。

2.5.2 NoSQL数据库

现今NoSQL数据库的主要流派如图2.11所示,其中50%的NoSQL产品是基于JSON的面向文档型数据库。

图2.11 NoSQL数据库的主要流派

下面介绍几种主要的NoSQL数据库,分别是分布式数据库HBase、文档型数据库MongoDB、图数据库Neo4j和JanusGraph。

1.HBase

HBase的技术架构如图2.12所示。对于海量数据表,HBase具有数据分区功能,能够将一定数量的用户名下的数据表分为多个表分区,而且能够并发读写,并根据数据量增长自动横向扩展分区。HBase的数据物理存储位置透明,采取主备方式确保可靠存储,可以动态增加数据节点。

HBase具有许多特点,如数据量非常大、分布式并发处理效率高、易扩展、可动态伸缩、适用于廉价设备集群、适合基于列的读操作,但它并不适合基于行的写操作。

除了不支持基于行的写操作之外,HBase还有一些缺点,例如不支持多索引、非索引排序性能差、非索引字段查询性能差、缺乏事务功能、依赖控件过多、运维成本高、不适合关系模型数据组织模式等。

图2.12 HBase的技术架构

2.MongoDB

MongoDB是NoSQL数据库中最流行的文档型数据库。它的数据结构为灵活的BSON(Binary JSON)结构,用户在保存和查询记录时,可以灵活调整每条记录的表结构和数据类型,如图2.13所示。

图2.13 MongoDB文档型结构

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富、最像关系数据库的。它支持的数据结构非常松散,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现关系数据库单表查询的绝大部分功能,而且支持对数据建立索引。

3.图计算

图(Graph)是用于表示对象之间关联关系的一种抽象数据结构,使用顶点(Vertex)和边(Edge)进行描述。顶点表示对象,边表示对象之间的关系。图数据是指可抽象成用图描述的数据。图2.14表示对象(v1、v2、v3)及对象之间的关系。

图2.14 图数据结构

图计算是以图作为数据模型来表达问题并解决的过程。以高效解决图计算问题为目标的系统软件称为图计算系统。图计算的使用场景很多,包括商品推荐算法、反欺诈、反洗钱、递归式查询、社交关系等。

图数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。最常见的例子就是社交网络中人与人之间的关系。关系数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图数据库的独特设计恰恰弥补了这个缺陷。

Neo4j是目前最流行的图数据库,提供类SQL语法操作数据库,其数据存储在以Java编写的嵌入式持久化引擎中。目前提供社区版和企业版。

JanusGraph图数据库是Apache基金会下的顶级图数据库,兼容Gremlin语法,其最大的特点是持久化存储支持HBase和Cassandra,索引支持保存在Elastic search和Solr中。

2.5.3 分布式关系数据库

传统数据库事务必须获得SQL完整支持,并具备ACID特性,即原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)与持久性(Durability) [12] 。作为一种新技术,分布式关系数据库除了上述特性之外还具备其他一些性质,其前瞻性体现在分布式与扩展性、混合事务/分析处理以及多模数据库引擎与多租户等方面。

分布式关系数据库正在快速发展,其中SequoiaDB数据库具有代表性,下面主要对其进行介绍。

SequoiaDB数据库是一款开源的金融级分布式关系数据库,主要面对高并发联机交易型场景提供高性能、可靠、稳定以及无限水平扩展的数据库服务。SequoiaDB数据库支持MySQL、PostgreSQL与SparkSQL三种关系数据库实例和类MongoDB的JSON文档型数据库实例,以及S3对象存储与Posix文件系统的非结构化数据实例。

用户可以在SequoiaDB数据库中创建多种类型的数据库实例,以满足上层不同应用程序各自的需求。SequoiaDB数据库可以为用户带来如下价值。

(1)完全兼容传统关系型数据,数据分片对应用程序完全透明。

(2)高性能与无限水平弹性扩展能力。

(3)分布式事务与ACID能力。

(4)同时支持结构化、半结构化与非结构化数据。

(5)金融级安全特性,多数据中心间容灾做到RPO=0。

(6)HTAP混合负载,同时运行联机交易与批处理任务且互不干扰。

(7)多租户能力,云环境下支持多种级别的物理与逻辑隔离。

SequoiaDB数据库拥有三大类应用场景,包括联机交易、数据中台和内容管理。当前已经有超过50家银行机构与上百家企业级用户在生产环境大规模使用SequoiaDB数据库取代传统数据库。SequoiaDB数据库集群分为数据库存储引擎与数据库实例,其整体架构如图2.15所示。

图2.15 SequoiaDB数据库整体架构

数据库存储引擎模块是数据存储的核心,负责提供整个数据库的读写服务、数据的高可用与容灾、ACID与分布式事务等全部核心数据服务能力。SequoiaDB数据库存储引擎采用分布式架构,集群中的每个节点为一个独立进程,节点之间采用TCP/IP进行通信。同一个操作系统可以部署多个节点,节点之间采用不同的端口进行区分。SequoiaDB数据库的节点分为三种不同的角色:协调节点、编目节点与数据节点。协调节点不存储任何用户数据。作为外部访问的接入与请求分发节点,协调节点将用户请求分发至相应的数据节点,最终合并数据节点的结果应答对外并进行响应。编目节点主要存储系统的节点信息、用户信息、分区信息以及对象定义等元数据。在特定操作下,协调节点与数据节点均会向编目节点请求元数据信息,以感知数据的分布规律和校验请求的正确性。数据节点为用户数据的物理存储节点,海量数据通过分片切分的方式被分散至不同的数据节点。在关系型与JSON数据库实例中,每一条记录会被完整地存放在其中一个或多个数据节点中;而在对象存储实例中,每一个文件将会依据数据页大小被拆分成多个数据块,并被分散至不同的数据节点进行存放。

SequoiaDB数据库的存储引擎与数据库实例均支持水平弹性扩展,任何角色的节点均提供高可用冗余机制,不存在单点故障的可能。用户可以创建不同类型的数据库实例,使应用程序从传统数据库进行无缝迁移,大幅度降低应用程序开发者的学习成本。 osm7UWsUxk8ezhMj+eBe5jOz49Ncbf4/msqiZGYI7Ff53XyY839Y3ODW9vAcVqOv

点击中间区域
呼出菜单
上一章
目录
下一章
×