近期,杭州悦数科技有限公司与阿里云计算巢达成合作,NebulaGraph 作为首款图数据库产品正式入驻阿里云计算巢,为用户带来了云端一键部署企业级图数据库集群的全新体验。同时,该服务集成了多款 NebulaGraph 周边可视化图数据库管理工具,让用户在云端也可以快速从数据中获得洞察力。
近年来,图数据库的概念被越来越多的企业反复提及。图(Graph)是一种存储实体,及实体之间关系的数据结构,而图数据库(Graph Database)则是一个使用图数据进行存储,同时使用图结构进行语义查询的数据库。
图数据库能够高效地将关联数据的实体作为顶点(vertex)存储,关系作为边(edge)存储,并允许对这些点边结构进行高性能的检索和查询,也可以为这些点和边添加属性。正因为具有这些特性,才使得图数据库能够以最接近直观认知的形式存储数据,并且能够将这些关系完美地呈现出来。
关系型数据库实现了快速的逐行访问和数据一致性(ACID 事务),但当数据规模变大且数据间关系变得复杂时,使用关系模型检索时需要多个表的属性执行连接操作,数据写入时也需考虑外键约束,从而导致较大的额外开销,对性能有极高的要求。而图数据库则在处理复杂关系上有着天然优势,尤其在海量数据多对多的复杂实体联系场景中有着异常突出的表现,主要体现在性能、灵活性和敏捷性三个方面。
关系数据库 vs 图数据库(多跳查询)
其次,图数据库是基于图模型以一种直观的方式存储和展示这些关系。因为是基于事物关系的模型表达,图因此也具有天然的可解释性。
目前,图数据技术因其在处理海量关联数据时的天然优势和符合人脑直观印象的展示形式正被应用在多个行业的生产环境和业务实践场景中。例如,数据集成(知识图谱)、个性化推荐、欺诈与威胁检测、风险分析与合规、身份(与控制权)验证、IT 基础 设施管理、供应链与物流、社交网络研究等,甚至于 AI 机器学习、NLP(自然语言处理)、区块链等新兴技术领域,你都可以看到图数据技术的身影。
根据 Gartner 的预计,云服务一直保持较快的增速和渗透率。大量的商业软件,正在从 10 年前完全私有本地逐步转向基于云服务的商业模式。云服务的一大优点是其提供了近乎无限的弹性能力,这也要求各种基于云基础设施的软件必须有更好的快速弹性扩缩容能力。
在此背景下,开源分布式图数据库 NebulaGraph 成为了阿里云计算巢上第一家图数据库合作伙伴,与阿里云一起帮助更多企业用户更好地进行低成本、高效率的云上图数据库部署。
“对于数据库产品来说,底层基础设施的稳定性以及安全性对于客户来说至关重要。阿里云是国内领先的云计算提供商,我们看重其稳定的基础设施和安全性,此次与阿里云计算巢的合作,通过阿里云计算巢更高效地利用底层资源的弹性扩缩容以及便捷的服务编排等能力,可以使我们的客户放心、省心地使用基于云上的 NebulaGraph 产品。”NebulaGraph 创始人兼 CEO 叶小萌表示。
云原生,即云上内生的云能力,天然就“生于云,长于云”,基于统一的架构和云原生基础设施,实现多云/混合云解决方案、边云协同等能力。云原生时代下,企业应用数据的方式发生了根本性变化,即基于统一云基础设施的云原生数据库、大数据解决方案,将成为企业数字化转型的数据底座。
传统模式下,企业采购硬件资源,数据库部署在自建 IDC 并由企业监管和运维。企业的开发人员则采用 DevOps 模式或安排 IT 人员来管控数据库。接入业务后要时刻关注数据库集群状态来保障可用性,这对数据库内部实现不太了解的用户来说是个巨大的挑战。而云计算作为技术载体,天然具备跨越时空的优势,云技术正在从单一的计算能力发展为体系化的创新。对于企业来说,“上云”是一个技术选择、是企业数字化的起点,而基于云构建新的生产关系,打造新的业务增长引擎则是一个战略选择。
NebulaGraph 是一个可靠的分布式、线性扩容、性能高效的图数据库,其 Shared Nothing 和存储计算分离的底层架构让它具有了云原生的特征,可以有效降低成本和弹性扩缩容。而云端部署则屏蔽了数据库部署、性能调优、运维等繁杂过程,几分钟内就可以在云上创建一个图数据库,并快速扩展计算、存储等资源。
作为能够容纳海量关联数据并进行毫秒级查询延时的高性能图数据库产品,NebulaGraph 已经被多家行业领先的科技和通信公司应用在反欺诈、风险控制、社区发现等场景,其中某头部互联网公司的 NLP 团队也基于 NebulaGraph 搭建了自己的图数据库平台,目前已经有 60 多条业务线接入使用,在智能助理、搜索召回等业务场景均已落地。
NebulaGraph 在阿里云上部署的架构图
由于云厂商提供了统一的基础设施,企业无需自行采购硬件,还可以根据业务的灵活度和资源需求弹性调配云资源,实现快速上线。基于阿里云计算巢提供的 ROS(资源编排),NebulaGraph 实现了云上自动化部署,几分钟内即可交付一个图数据库集群,相比传统以天、甚至以周为单位的交付周期,有极大的提升。
其次,NebulaGraph Cloud 支持包年包月与按量付费的灵活付费方式,节省新购设备、自建机房等一次性建设费用,当不再需要的时候可以及时销毁,显著降低了研发成本。为了进一步的优化体验,下一阶段 NebulaGraph 还将结合自身在云上的优化特性和测试结果,陆续推出高性价比的云服务器规格套餐,让用户以更低的价格获得更高的性能,大家不妨也拭目以待一下。
架构高可用
NebulaGraph 集群包含三类服务,即 Query Service、Storage Service 和 Meta Service。
1、Meta Service 采用 Leader/Follower 架构。Leader 由集群中所有的 Meta Service 节点选出,然后对外提供服务;Followers 处于待命状态,并从 Leader 复制更新的数据。一旦 Leader 节点 Down 掉,会再选举其中一个 Follower 成为新的 Leader。
2、Query Service 对应的进程是 nebula-graphd ,它由完全对等、无状态、无关联的计算节点组成,计算节点之间相互无通信。
3、Storage Service 采用 Shared-nothing 的分布式架构设计,共有三层,最底层是 Store Engine,它是一个单机版 Local Store Engine,提供了对本地数据的 get/put/scan/delete 操作,该层定义了数据操作接口,用户可以根据自己的需求定制开发相关 Local Store Plugin。
在 Local Store Engine 之上是 Consensus 层,实现了 Multi Group Raft,每一个 Partition 都对应了一组 Raft Group。
数据可靠性
NebulaGraph 数据存储使用阿里云的云盘产品。云盘是阿里云为云服务器 ECS 提供的数据块级别的块存储产品,具有低时延、高性能、持久性、高可靠等特点。云盘采用分布式三副本机制,为 ECS 实例提供极高的数据可靠性保证。
NebulaGraph 采用存储与计算分离的架构。存储计算分离有诸多优势,最直接的优势就是,计算层和存储层可以根据各自的情况弹性扩容、缩容。存储计算分离还带来了另一个优势:使水平扩展成为可能,通过云上极致弹性能力,保障自身扩缩容需要。
NebulaGraph 在集群部署时会创建两个弹性伸缩组,一个对应 Graph 服务,另一个对应 Storage 服务。为了更好的扩缩容体验,我们做了以下考量:
将部分控制权交到用户手里。如果是 Graph 服务只需要将 ECS 资源按照目标数量弹性伸缩即可,因为 Graph 本身是无状态的;如果是 Storage 服务,我们会在编排页面提供一个控制开关,用于弹性扩容后是否自动平衡数据,因为在业务高峰期时数据搬迁会影响服务稳定性,所以何时去执行 balance 操作可以由用户自己来完成,部署的 Dashboard 工具也支持这个操作。
安全保护策略。大家都知道数据库服务数据不丢失是第一要素,因此我们对 Storage 伸缩组启用了删除保护开关以防止用户误操作,另外当用户需要缩容时,需要先在 Dashboard 界面找到对应伸缩组管理的 Storage 节点执行数据分片移除操作,等到数据分片清空后才会接受弹性伸缩 lifecycle-hook 请求。
除此之外,阿里云的弹性扩缩容提供了丰富的伸缩规则与定时任务能力,用户可以针对业务波动情况以及应用场景(OLTP 或者 OLAP)动态伸缩 Graph 节点,针对 CPU 平均使用率弹性扩容 Storage 节点。
NebulaGraph 支持严格的角色访问控制和 LDAP(Lightweight Directory Access Protocol)等外部认证服务,能够有效提高数据安全性。当客户端连接到 NebulaGraph 时,NebulaGraph 会创建一个会话,会话中存储连接的各种信息,如果开启了身份验证,就会将会话映射到对应的用户。
同时,NebuaGraph 内置角色权限,用户可以把角色分配给创建的用户,从而实现访问控制。
目前,NebulaGraph 与阿里云计算巢正在开展限时免费试用活动,需要试用的用户登录到阿里云计算巢后,先申请试用权限,填写信息审批通过后,就可以看到一个完全白屏化的服务创建页面。
在引导步骤里填写必须的配置参数,一键提交后等待 5 分钟左右即可体验 NebulaGraph,随后正常使用图数据的各种功能即可,大大降低了用户部署数据库的门槛。
参考内容:
1. Gartner 2019 年十大数据和分析技术趋势
2.《NebulaGraph 白皮书》
3.《图数据库白皮书》:中国信息通信研究院 云计算与大数据研究所