数速云数据仓库 Scudata Cloud Datawarehouse

数据仓库上云有很多方面需要考虑,存算分离、弹性扩展、Serverless、开放性等都要求不能简单把传统数据库搬到云上,同时还要为用户充分节约成本。数速云数据仓库(Scudata Cloud Datawarehouse,简称 SCD),是一款支持私有部署的云原生数据仓库,具备高性能、低代码、全功能、开放性等特点,与其他云数仓有很大不同。

SCD 中涉及多个部件和概念,这里先了解一下。

QDB:全称 QDBase,是 SCD 的核心,负责数据处理并提供服务。

QVM:全称 QDBase Virtual Machine ,是 SCD 的计算资源,与云虚拟机绑定,根据请求需要动态创建或销毁。每个 QVM 自带 QDB 服务程序用于处理计算任务。

QVA:全称 QDBase Virtual Allocator ,QVM 的分配系统,每个 QVA 管理一批虚拟机,响应任务请求后分配虚拟机并启动 QVM。

QVS:全称 QDBase Virtual Service,用户自行部署的服务程序,用于接受并处理计算请求。QVS 可以嵌入方式或服务器方式运行在用户自己的机器上(可以是云虚拟机),配置有用户云对象存储信息。

SPL:全称 Structured Process Language,是 QDB 的形式化语言,面向结构化和半结构化数据。

SCD 的应用形态有两种,可以直接使用公有云服务,也可以在公有云上进行私有化部署。

应用形态

公有云

SCD 目前支持 AWS、GCP 和 Azure 三种云。

从架构图上可以看到 SCD 的应用结构为存储层、计算层和应用层。

存储层分为两部分,都采用云上对象存储。左边蓝色部分属于 SCD,是公有云的根存储,用于存储用户日志等系统信息,对用户透明,用户使用时不必关心。

存储层的右边灰色部分是云上用户数据,这里尤其注意的是这部分并不属于 SCD,也就是用户不必将数据上传到 SCD 中,可以仍然使用原来的云上对象存储,只需将访问接口开放给 SCD 即可。这样做的好处显而易见,使用更加灵活、成本更低,天然支持多租户更加安全等。用户自管理数据是 SCD 与其他产品非常不同的地方,关于这个特点我们下面还会着重介绍。

计算层整体运行在云上虚拟机上,主要运行 QVA 和 QVM 服务。计算层左边的 QVA 是整个 SCD 的管理服务,永久运行,主要用于系统的运维管理,用户管理和分配 / 回收 QVM 资源。

计算层中间部分是用于实际计算的虚拟机,QVA 根据用户请求动态创建 QVM(启动虚拟机)进行计算,完成后再回收计算资源(销毁虚拟机)。QVM 会将用户使用的热数据在虚拟机本地缓存以进行高性能计算。

计算层右边部分是用于开发调试的 QVS 服务。与用户数据存储在自己的云上类似,用于调试服务的 QVS 也部署在用户自己的虚拟机上,可以是云上,也可以在本地。调试过程不会消耗 SCD 资源(不产生费用),为用户私有,因此被称为私有调试。

应用层包括开发以及用户应用(APP)以及应用内置的 QVS。APP 如有计算需求需要通过其内置 QVS 向 QVA 申请 QVM,直连 QVM 完成计算任务,并不需要通过其他服务中转,QVM 读取存储层用户数据(或缓存)进行计算。内置 QVS 可以是独立服务器也可以与应用嵌入,APP 和其内置的 QVS 可安装在本地或用户自行购买的虚拟机上。

用户直接基于私有调试服务 QVS 进行脚本开发调试,并支持本地脚本上传和远程脚本下载。

从整个架构来看,SCD(蓝色部分)与其他产品最大不同的地方在于用户数据和调试均为用户私有,SCD 并不拥有用户数据,也不会因为调试增加用户成本。除此以外,SCD 更大的优势还在于开发效率和运算性能上,开发效率高可以有效降低开发成本,而高性能则会降低硬件成本。

公有云上的私有部署

SCD 可以作为云软件由用户自己部署在公有云上。私有部署的结构与公有云类似,唯一不同在于整体全部为用户私有。系统日志与用户数据可以直接存放在公有云对象存储中。

两种使用方式可以根据实际需要进行选择,比较灵活。

SCD 特性

存算分离

从架构可以明确看到 SCD 支持存储与计算分离。数据存储在云上对象存储中,由用户自行管理,而计算则由云上 SCD 的 QVM 完成。对象存储(如 S3)的成本很低,而 SCD 默认使用文件存储数据,文件与对象存储一一对应,可以完美实现相互转换。

SCD 在计算的 QVM 上还提供了高速缓存用于本地高性能计算。缓存由具体任务使用的数据实时决定,用到哪些缓存哪些(热数据)。数据一旦缓存会存在 QVM 所在虚拟机的硬盘上,直到硬盘写满才会失效(先进先出),这样有利于缓存复用。

弹性扩展

有了存算分离支持后,用户就可以根据需要单独对存储或计算资源进行扩展。云存储由用户自行管理不必多说。计算则由 QVA 根据需求动态创建或销毁计算资源(QVM),自动弹性扩展。

基于前述提到的缓存机制,QVA 在分配任务时会采用就近调度策略,将任务分配给历史用过且空闲的虚拟机上,复用缓存不仅计算效率高,不需要再缓存数据还会降低使用成本。

轻量级 Serverless

SCD 体系中没有元数据的概念(schema-nothing),不仅应用直接与 QVM 交互进行计算,QVM 读取数据时也无需加载元数据(根本就没有),因此会带来更加高效的计算效率,以及更加开放的计算能力。

我们知道 SQL 体系是需要元数据的,只有加载元数据才能进行计算。元数据如果存储在管理服务上(大部分情况是这样),那在多任务并发时管理服务就很容易成为瓶颈,这时又要考虑管理服务的扩展能力,整体架构不仅更加复杂运维成本高,计算效率也差。而元数据分布再计算服务上则又会由于个性化导致弹性扩展受限,而且加载元数据会导致计算虚拟机启动过慢,同样影响效率。

没有元数据的体系会更加轻量,后台也不需要保持与前端用户相关的状态环境,天然实现 serverless。

用户自管数据

SCD 体系中并不包含用户数据,存放用户数据的云存储由用户自行准备和管理,数据不需要上传到 SCD 中,SCD 并不拥有用户数据,只需要开放相应访问接口供 SCD 访问就可以了。

用户自行管理数据会带来如下好处:

数据仍然是用户的私有资产,自己有完全的管理和使用控制权,会更加安全;

数据私有还会带来天然的用户间数据隔离,从而天然实现多租户,因为多租户的实现难点主要在于数据隔离,数据私有天然解决了这个问题。

私有调试

在云计算中,调试程序产生的成本往往会占到总成本的 1/3 以上。因为调试过程中会消耗计算资源并发生相应的数据传输,而云数仓并不能区分这些计算资源的目的是调试还是生产,都会一视同仁地计费。对于复杂且数据量较大的计算,调试成本消耗很大,这种成本构成和之前未上云时的开发模式相差巨大。

SCD 为解决这个问题采用了私有调试的形式。用户调试时均不消耗 SCD 的存储和计算资源,完全使用用户自有的资源,因此会有效降低使用成本。

私有调试分两种方式。

一种通过本地 IDE 连接部署在云上的 QVS 服务进行远程调试。这样数据在云上流转不会额外产生流量费用,同时具备更好的安全性。

另一种如果考虑开发调试效率,同时一定程度允许数据缓存在本地(本地调试效率相对远程肯定更高),那么可以通过 IDE 直接基于云存储进行开发调试,但可能会有一定的流量费用(视云服务商的规则)。

无论采用何种方式,SCD 在调试方面的应用成本都会更低,仅仅从调试这一方面就可以节约 30% 左右的成本。

开放性

SCD 在应用时不仅可以读取事先准备的对象存储,还可以连接其他云上多样性数据源(如公有云上的 RDB、Kafka、MongoDB、Redis、Elasticsearch、RESTful 等)进行计算,特别地还可以进行多数据源之间的混合计算。

基于多种数据源进行实时计算可以充分利用实时数据,为应用提供实时数据服务。有了这个能力就可以很好支撑微服务实现。

高性能低代码

SCD 除了在架构上的优势外,最大的优点还在于 SPL 的低代码和高计算性能。SPL 采用了与 SQL 完全不同的离散数据集理论模型,改善了关系代数在集合运算中的诸多问题(如有序利用、离散性等),提供了过程计算支持,内置了更加丰富的结构化数据计算类型(序表)和运算(有序计算等),在实现复杂计算时更加简单。

不仅代码实现简单,SPL 的运算效率也更高。在大量实际案例中,SPL 的运算效率往往超过 SQL 数倍到数百倍。高性能意味着硬件成本会更低。

关于低代码和高性能可以参考另外专门介绍 SPL 的材料:

应用成本低出 N 倍的数据分析引擎 esProc SPL

全功能

除了低代码和高性能,SPL 还具备全功能的特点。现在几乎所有数据库技术仍然基于 SQL 体系,而 SQL 在实现一些复杂计算时并不容易。比如计算用户流失率的电商漏斗分析用 SQL 几乎就写不出来,这时就需要编写 UDF 或借助 Java/Python 等其他技术实现。SQL+ 其他技术这样的应用方式在企业内部还行得通,但在云上就不可以了。云环境不会开放这些个性化的编程技术,大家只能硬着头皮使用 SQL。而 SQL 能力又有限,似乎就陷入了死循环。

SPL 的能力更加全面,可以看做是 SQL 与其他技术的结合体。SQL 能实现的自然不在话下,SQL 不容易做的也能实现。像漏斗分析用 SPL 不仅写得更短,代码也更通用,同时执行效率也更高。

功能全面会让技术栈更加简单,随之会带来更低的运维成本。

外部接口

在与应用结合方面,SCD 提供了两种应用接口。对于 Java 应用,可以直接使用 SPL 接口将其集成在应用内与 SCD 交互。对于非 Java 应用,则可以采用 HTTP 接口与 SCD 相连。

无论采用何种接口,应用都与 QVM(计算服务)直接相连。

应用在与 SCD 交互时只会赋予执行权限,而无权修改删除计算脚本,实现二层安全控制。

综合来看,SCD 云数仓的目标是给用户带来更多价值,低成本、高性能、开放灵活、功能全面等,这些目标在 SCD 的架构优势和引擎能力都能够很好实现。

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾