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