看完了 vertica
白皮书,带着兴趣就看起了官方文档,发现 vertica 有两种模式,本文就来了解下!
读白皮书有感,感兴趣的朋友可以一读:
🏆 作者写的 《vertica 技术文章合集》,欢迎阅读 👏🏻!
vertica 支持两种模式来创建数据库:eon
或者 enterprise
。
模式决定了数据库的底层架构,比如 vertica
存储数据的方式、数据库集群的伸缩方式、数据的加载方式等;
创建数据库后无法更改模式,但是支持模式间的数据迁移。数据库模式不会影响您在使用数据库时运行查询和其他日常任务的方式。
在 eon 和 enterprise 模式下运行的 vertica
数据库以不同方式存储其数据:
enterprise
:将数据本地存储在构成数据库的节点的文件系统中eon
:使用公共存储
不同的存储方法导致了两种模式之间的许多重要差异,但是如果配置正确,eon 模式和企业模式数据库在相同环境中的性能大致相同。
eon 模式将数据存储在称为公共存储的共享对象存储中,将计算过程与数据库的公共存储层分开,这种分离使您能够将数据存储在单个位置。
1、可扩展性
eon 模式适合各种需求和数据量。由于计算和存储是分开的,因此可以分别扩展:
2、共享存储(communal storage)
eon 使用的是共享存储来存储所有数据和目录(元数据),感觉跟 oracle rac
有点相似。
共享存储具有以下特性:
- 与存储在单个机器的磁盘上相比,云中的公共存储更具弹性,并且更不容易因存储故障而导致数据丢失。
- 任何节点都可以使用相同的路径读取任何数据。
- 容量不受节点磁盘空间的限制。
- 由于数据是公共存储的,您可以弹性扩展集群以满足不断变化的需求。如果数据本地存储在节点上,添加或删除节点将需要在节点之间移动大量数据,以将其从被删除的节点移出,或移到新创建的节点上。
共享存储位置列在 storage_locations
系统表中可以查询,sharing_type
为 communal
。
3、仓库存储(depot)
共享存储的一个潜在缺点是它的 速度
,尤其是在云环境中。从共享云位置访问数据比从本地磁盘读取数据慢。此外,如果许多节点同时从中读取数据,则与共享存储的连接可能会成为瓶颈。
为了提高数据访问速度,eon 模式数据库中的节点维护一个本地磁盘数据缓存,称为仓库。执行查询时,节点首先检查它需要的数据是否在仓库中。如果是,则节点使用数据的本地副本完成查询。如果数据不在仓库中,则节点从公共存储中获取数据,并将副本保存在仓库中。
- 节点在将新加载的数据发送到公共存储之前将其存储在库中。
- 仓库的大小默认为本地磁盘空间的 60%,可以手动设置
alter_location_size
,区间在 60%~80% 之间。 - 每个节点还存储数据库目录的本地副本。
每个节点还存储数据库目录的本地副本。
4、加载数据
在 eon 模式下,copy
语句通常写入读取节点仓库中的优化存储 (ros) 文件以提高性能。copy 语句分段、排序和压缩以实现高度优化。在语句提交之前,vertica将 ros 文件发送到公共存储。
下图显示了 copy 语句期间的数据流。
在云环境中部署时,vertica 将其数据存储在基于云的存储容器中,例如 aws s3
存储桶。在本地部署时,vertica将数据存储在本地部署的对象存储中,例如 pure storage flashblade 设备。将持久数据存储与计算资源(加载数据和处理查询的节点)分开提供了灵活性。
三、企业模式
在企业模式 vertica 数据库中,物理架构旨在将数据尽可能靠近计算资源。
企业模式数据库中的数据分布在数据库中的节点之间。理想情况下,数据是均匀分布的,以确保每个节点具有等量的分析工作负载。
每个节点负责存储和处理一部分数据。数据位于基于云和本地数据库的节点上。让数据靠近计算能力提供了一系列不同的优势。
1、混合数据存储
在企业模式下运行时,vertica 将数据库中的数据存储在读取优化存储 (ros) 容器中。ros 数据经过分段、排序和压缩以实现高度优化。为避免多个小型 ros 容器之间的数据碎片化,vertica 会定期执行合并操作,将 ros 数据合并到更少和更大的容器中。
2、数据冗余
在企业模式下,vertica 数据库的每个节点都在本地存储和操作数据。如果没有某种形式的冗余,节点的丢失将迫使您的数据库关闭,因为它的某些数据将无法用于服务查询。
所以,通常选择让企业模式数据库冗余存储数据,以防止节点关闭时数据丢失和服务中断。
四、优势对比
eon 模式和企业模式存储数据的不同方式使每种模式在不同的环境中都具有优势。
特点 | 优势 | |
---|---|---|
环境 | eon | 企业 |
云 | 1、轻松扩展或缩减以满足不断变化的工作负载并降低成本。 2、工作负载可以隔离到节点的子集群。 3、对数据库大小几乎没有限制。大多数云提供商提供基本上无限制的数据存储(收费)。 |
适用于大多数云平台。eon 模式适用于特定的云提供商。 |
本地 | 1、可以将工作负载隔离到称为子集群的节点子集。 2、可以在不添加节点的情况下增加存储(并且,如果对象存储支持热插拔,则无需停机)。 |
除了构成数据库集群的服务器之外,不需要额外的硬件。 |
📢 注意: 当然了,模式间数据是可以切换迁移的,可以使用元函数 migrate_enterprise_to_eon
将企业模式数据库迁移到 eon,为上云提供了良好的支持!
本文讲解了 vertica 架构的两种数据库模式,在了解了各自的特点和优势后,相信大家对架构的选型应该有了自己的想法。