图数据库评估难?一篇教你搞定图数据库产品评估

news2024/10/3 16:19:55

随着数字经济时代全面开启,数据作为重要的生产要素,赋能作用日渐凸显,企业逐渐开始关注自身数字化水平和数据资产价值。而当各企业数智水平提升,其业务环境和计算场景呈现数据间关系交错复杂的特点。在面对需要深度挖掘数据间复杂关联关系的场景时,传统关系型数据库无法满足企业海量、复杂、多变数据的实时处理、运算和分析需求。图数据库这种天然适配关联关系复杂场景的新型数据库,成为下一个市场爆点。

图数据库由于其在数据深链分析场景的优异性能,是当前业内备受关注的非关系型数据库。相比于关系型数据库,图数据库直接将实体和关系以点和边的图结构进行存储,可以实现千亿甚至万亿级别大图的关联查询分析和处理,这是关系型数据库和其他NoSQL数据库做不到的。

目前,市场上可供选择的图数据库种类繁多,企业或厂商选型时,从哪些维度评估、如何评估成为难点。在本文中,笔者将从架构设计、功能、性能等多个维度介绍图数据库产品间的核心差异,介绍图数据库原生图存储和非原生图存储的区别,常用图查询语言,是否具备ACID特性,如何确保高可用性、可扩展性等,帮助读者理解优秀的图数据库需要涵盖的基础能力。

性能与安全的保证——原生图存储和处理

IDC在2022中国人工智能与大数据技术现状与趋势分析报告对明确建议用户采用原生图数据库,而不是声称支持图的其他数据库类型。分析师把原生作为选型的重要标准,是因为原生架构可以带来的性能与安全性的巨大优势。 根据中国信息通信研究院发布的《图数据库白皮书》,图数据库根据底层存储实现的不同,可分为原生和非原生两种。原生图存储的图数据库,其数据存储模式专门为存储和处理图而设计优化,可支持各类图算法的快速遍历,是保证图数据库完整性和性能优异的基础。它将现实世界的实体和关系提取为数据,以图结构直接存储在底层,并根据业务场景,将存储数据直接映射至所需的图数据模型。这样的存储方式,无需经过二次处理,使得应用程序的开发变得十分直观和高效。另一方面,原生图数据库不依赖第三方开源系统实现原生图存储,在安全性上优于采用第三方存储系统的图数据库。

在这里插入图片描述
非原生图存储的图数据库,在数据层采用关系型、文档型、多模数据库等进行数据存储,在处理层构建多表之间的索引,在业务层以图的呈现方式模拟图功能。此类图数据库的内核设计方案无需对数据层与处理层进行重构,只需在业务接口层构建图语义即可赋能一些简单的图应用。优点在于当面对数据量较小的场景时,数据表间关系简单,解决方案的开发成本会很低。但面对数据量庞大、关联关系复杂的场景,数据表之间存在大量全局索引,将造成额外的开销,导致查询效率极大下降,甚至查询失败。

除了上述原生图存储的概念,原生还体现在图查询和处理方面,读者在进行评估比较时,应探明图数据库在执行图查询处理时,是否将数据转换隐藏在其中。在这里,笔者将提供另一判断依据——是否在存储层实现免索引邻接。免索引邻接允许快速遍历复杂的图数据集,数据库内存储有从当前节点指向下一个节点的指针,无需通过中间节点转跳的方式。非原生图存储的图数据库采用第三方存储组件,在处理层利用数据转化模拟图功能,近似实现了免索引邻接,虽然具备原生图处理能力,但仍牺牲了其部分系统性能。而采用原生图存储的图数据库,可在存储层直接实现免索引邻接,极大释放图数据库性能。

讲明白上述原生图存储和原生图处理的含义后,读者就很好理解完全非原生的图数据库概念,其在处理层未实现免索引邻接,在数据层使用第三方存储系统进行数据存储,封装完成后,仅在业务可视化层面展示图功能。面对数据规模大,关联关系复杂的图数据时,完全非原生的图数据库查询性能是非常不理想的。

创邻科技的核心产品Galaxybase是一款原生图数据库产品,具备存储层免索引邻接性能。在保持原生图数据库特性的基础上,Galaxybase采用分布式架构,对图数据的存储和处理进行了深度匹配优化,横向扩展性能优异,符合当前大数据时代背景下,企业或组织对高效数据存储和处理的需求。

查询性能

基于评估维度的不同,图数据库的查询性能分为简单查询性能复杂交互类查询性能。简单查询性能测试内容包括数据落盘大小和时间、K跳邻居查询、最短路径查询、全图算法查询等,具体测试项根据产品侧重点调整,是大部分图数据库厂商进行产品性能横向对比的常用方法。如下图广度优先搜索,是一种基本的简单查询图遍历算法,普遍用于K跳邻居查询、最短路径查询等。方法为从一个选定的顶点开始,依次遍历的该顶点所有的邻居,遍历完成后再遍历它邻居的邻居,遍历过的顶点不再遍历,直到不能遍历为止。例如K跳邻居查询,返回从第1跳到第K跳的全部邻居数量,下图即为返回的2跳邻居数量。

在这里插入图片描述
此类简单查询测试的优点是查询结构清晰,查询结果一目了然,使读者能快速对市面上主流图数据库进行评估,但由于各厂商推出的测试标准各有不同、产品版本参差不齐,内容存在一定的主观性。

复杂交互类查询性能测试通过模拟真实交互查询场景,考察图数据库在真实生产环境下的正确性、稳定性、查询性能。当前市面上做复杂交互类查询测试的机构数量繁多,其中LDBC是国际关联数据基准委员会(Linked Data Benchmark Council)的英文缩写,这是一个非营利组织,旨在定义标准的图测试基准,以促进图处理技术社区的发展,被业内认为是具有公信力的图基准委员会。LDBC-SNB(Social Network Benchmark)是其中知名度最高、使用者最多的一种测试方案,该方案将生成不同规模的社交数据集,模拟真实交互查询场景以全方位考察图数据库,在并发情况下进行交互式复杂查询和更新的性能。上图为官方生成的29项复杂交互类查询之一,需要遍历不同类型的点边来匹配图模式,在查询复杂度上较简单查询有数量级增长。

不同于其它基准测试的理想环境,LDBC测试机制是多请求并发执行的,各项任务会互相竞争资源,这种混合压力的情况更符合真实生产环境的使用场景,能够公平严谨的评估图数据库正确性、稳定性、查询性能等指标,因此被各大厂商、机构广泛使用。

简单查询性能评估

创邻科技选取了市面上四款主流的图数据库与Galaxybase,在相同软硬件部署环境下,用公开数据集作横向对比测试,主要测试内容包括K跳邻居查询性能、最短路径查询性能、全图算法查询性能等,完整内容较多,文中仅截选K跳邻居查询性能进行说明。创邻科技将详细的测试方法、测试内容、结果分析公开在官网和GitHub,感兴趣的读者可以登录官网查看报告或进入GitHub测试项目进行复现。

K跳邻居查询结果(单位:毫秒;数据集:Twitter-2010)

产品名称一跳二跳三跳四跳五跳六跳
Galaxybase经典版54578052185692259223291
国外某厂商(闭源)5145812416243262655327435
国内某厂商(开源)6182682142757N/AN/AN/A
国外某厂商(开源)2774558N/AN/AN/AN/A
国外某厂商(开源)5802945089456110884115195115923

从查询结果可以看到,在二跳及以上查询时,Galaxybase对比其它图数据库有显著优势。面对四跳及以上查询时,部分图数据库已无法完成,即使能够查询成功,所需的时间是非常漫长的。

复杂交互类查询性能测试

图数据库在实际使用场景中,为了被充分体现出属性图建模的优势,人们往往会使用多种点边类型、点边上带有不同属性的复杂图模型,并涉及到基于图模式匹配、图随机游走等场景的图查询分析算法,因此上文中简单的多跳查询、最短路径查询、全图算法查询等测试方法,无法完全的体现出图数据库在真实业务场景下的复杂查询性能,这就需要与业务逻辑高度相关的复杂交互类查询测试来评估图数据库的性能。
在这里插入图片描述
目前国内完成LDBC-SNB测试的厂商有创邻科技、蚂蚁集团。蚂蚁集团的TuGraph在通过官方的事务性和正确性测试后,在吞吐率上超过了Galaxybase在今年五月公布的上榜数据,但阅读测试报告我们可以发现,TuGraph的测试环境发生了改变(机器数不一致),测试方式进行了调整(及时率存在5%的调整空间),其结果不存在可比性。而创邻科技Galaxybase图数据库与前记录在使用完全相同系统配置前提下,最高记录吞吐量提升了70%,平均查询性能达6倍以上提升,最高查询性能提升72倍。在调整测试方法后,在与当前记录保持一致的情况下,Galaxybase 5月份的测试包比TuGraph最新的测试包吞吐量高37%。

图数据库的基准测试是复杂且成本高昂的事情,目前,创邻科技正积极参与推进图数据库复杂查询测试的建设,打造国内自主的图数据库基准评估模式,而各厂商做到客观公正的对比也有利于促进图技术的良性发展。

ACID特性

ACID,是用来声明数据库事务的四大特性,即原子性 (Atomicity)、 一致性(Consistency)、隔离性(Isolation) 和持久性(Durability)。图数据库属于非关系型数据库,是数据库类型的一种,图数据库管理系统在写入或更新数据的过程中,为保证事务是正确可靠的,必须具备ACID特性。事务是指:由一系列数据库操作组成的一个完整的逻辑过程,该过程要么完全地执行,要么完全地不执行。 例如去超市买东西:第一步,数据库从你的账户扣除金额;第二部,数据库在目标账户添加对应金额。这两步数据库操作的总和,构成一个完整的逻辑过程,不可拆分,该过程即为一个事务。

不具备ACID特性的图数据库,当一个事务只完成了一部分而其它部分失败时(比如转账过程手机突然关机),图数据库可能会处于损坏状态。该状态下图数据库可能面临以下情况:实体删除后关系被悬空、实体引用不存在的属性、节点指向被破坏等。随着图数据库写入和更新的操作继续进行,上述情况会导致忽略关系,甚至在不存在关系的情况下虚构关系,但查询结果却看起来正常。因此,图数据库损坏造成的最糟糕结果就是,业务人员在不知情的情况下,基于错误的结果来完成业务计划和决策。

Galaxybase图数据库严格遵循ACID特性,保证图数据库在写入或更新数据过程中数据不被损坏,确保用户查询结果的正确性,从而更好的辅助业务人员进行决策。

可扩展性

可扩展性是高性能图数据库厂商面临的重大挑战,当需要处理万亿点边的超级大图时,服务器的性能存在单机极限从而无法满足用户需求。当前,图数据库厂商往往采用将图数据切片的方式,分区分布在服务器之间维护产品性能。

当然,并不是说分布式多机一定优于单机,需视具体需求而定。 当用户的业务数据总量和增量不大,且无需分配内存去跑耗时的算法,也没有高并发的查询计算需求,这种情况下,用户可以考虑采购单机的图数据库。否则,用户需考虑到未来数据的增量庞大,图数据库面临的业务场景多且复杂,需足够的内存空间满足多用户协同和算法实时响应,此类情况就需采用分布式多机的图数据库。

在这里插入图片描述
考虑到上述情况,创邻科技推出Galaxybase多种版本满足用户多样化需求。针对图数据库爱好者或数据分析师,Galaxybase经典版兼具高级版在单机环境下的多种功能,仅对存储容量做限制。由于所有数据都存储在一台服务器上,避免了分布式系统间数据传输的成本,在关联关系复杂、数据链路深的场景下查询性能会更优,足以满足普通用户对探索图数据库的需求。针对具有海量关联数据查询分析需求的用户,Galaxybase高级版其采用完全分布式架构,利用分区分片存储的模式,具备横向水平扩展能力。得益于此项架构,产品在理论上并无存储极限,用户需要存储多大规模的图,到达单机极限时水平扩展服务器即可,保证了图数据库的可扩展性。在图计算维度,数据以分片形式发送到节点,实现分布式并行计算,突破了单机限制,面对超大规模图时也可以实时返回计算结果。

高可用性

高可用性是分布式系统的重要指标之一,通常来讲,指一个系统经过专门设计,能够最大化减少宕机时间,保障服务的高度可用性,这项能力对于数据库企业来说至关重要。 对于单机或者伪分布式图数据库厂商来说,企业数据都存在一台服务器上,而随着连续性数据量的上涨,关键节点宕机可能直接导致图不可用,严重影响数据安全和客户关系。

Galaxybase采用在单节点上存储其它节点数据,即数据备份的方式,当该节点宕机时,其它节点可以及时恢复数据,避免产生数据丢失或业务失败的情况。此外,Galaxybase集群管理服务提供节点自动拉起功能,开启后系统将定时检测图集群节点的健康状态,当检测到节点发生异常离线时,会自动拉起离线节点并主动触发数据平衡,恢复图集群的运行,确保图数据库的高可用性。

图构建能力

图模型的构建是业务人员进行查询分析操作前所必须的一步,好比一辆车的框架,若框架建的不好,车子跑起来费力且不稳定。推及到图模型构建,优秀的图数据库需要具备可视化、配置化的图构建能力,同时满足开发人员和业务人员的图构建需求。 当面对需求变更需要调整图模型时,仅对点边和属性进行调整即可,无需重写图模型结构,降低图构建成本,提高产品易用性。当前图数据库厂商大多采用属性图进行图模型构建,如下图所示,人物“吴京”和电影“长津湖”作为顶点,出演电影作为边,人物顶点上具有属性“性别”、“年龄”等信息,电影顶点上具有属性“上映时间”、“票房”等信息,当应用程序查询图模型时,图数据库将遍历所连接的实体和关系,直到完成查询并返回匹配结果。

在这里插入图片描述
Galaxybase具备配置化的图构建能力,可供用户灵活的构建属性图模型。用户根据业务需求完成图模型构建后,可通过自动化映射的方法,将其它数据源数据转换成图的点边,随后点击加载数据按钮,即可转入图展示页面进行业务探索。其他采用固定属性图或RDF格式的图数据库,在面对需求变更的时候需要重写图模型结构,大大增加查询的代码量和开发周期。下图为Galaxybase图数据库的图模型构建举例,图中电影实体存在电影名、上映年份、语言、类型、评分、票房属性,当面对业务调整时,只需增删点边属性,而不用新建节点、新增关系,破坏图模型结构。
在这里插入图片描述
考虑到开发人员对通过拖拉点拽进行图构建的不适感,Galaxybase还提供GoAPI、JavaAPI、PythonAPI等编程接口,供开发人员通过自己熟悉的语言进行图模型构建。此外,在后续版本上,Galaxybase新增Cypher-Shell功能,开发人员仅需调用Cypher语言即可一键完成图模型构建,从而开启图数据库交互功能体验,极大的提高系统易用性。

数据全生命周期工具

声明式图查询语言

2019年9月,经过国际SQL标准委员会投票表决,决定将图查询语言(GQL)纳为一种新的数据库查询语言,但在实际推行上,GQL的制定仍需要一段时间。当前已有多种针对图数据库设计的查询语言,其中流行度、成熟度最高的查询语言之一是Cypher,此类声明式图查询语言与Java等命令式查询语言相比,更易学习、编写、读取和调试。无论是开发工程师,数据库管理员,还是运维工程师都可以轻松读懂,使用者只需专注于自身业务需求,不必花费时间在熟悉数据库的图模式和底层实现原理上,告诉图数据库要检索什么就能返回结果,大大降低了用户的学习负担和查询代码复杂度。

如上所说,Cypher语言具有简单易学的特性,几乎所有的图数据库厂商都宣传直接或间接支持Cypher。但支持不等于兼容度高,由于各厂商产品底层设计原理的不同,对Cypher的兼容比例是不一样的。图数据库想拥有Cypher语言特性,需要其具备与官方语法完全一致的兼容。Galaxybase采用的OpenCypher是基于Cypher所开发的声明式图查询语言,其语法与官方发布的Cypher标准语法基本完全一致,语句项支持度占比高达96.8%,部分不支持项由数据库强弱类型不一样产生,不影响功能性使用。由于OpenCypher博采众长,具有丰富表达能力特性,能对图进行高效的查询和更新操作,同时满足开发人员和分析人员的需求。当前,创邻科技官网为用户提供了完备的OpenCypher学习文档,确保用户高效、便捷的使用Galaxybase解决业务需求。

编程接口

考虑到当前开发人员存在数量稀缺、成本高昂的特点,用户评估图数据库产品时,应该考虑其是否包含各种可调用的编程接口工具,方便开发人员使用自己擅长的编程语言快速准确构建图数据库应用程序。对有二次开发需求或定制化开发需求的用户,图数据库也应当提供封装好的图算法及编程接口,以供后续开发过程中的调用,减少客户端和服务端的交互成本。

目前,Galaxybase提供有Driver驱动下的GoAPI、JavaAPI、PythonAPI接口,用户可通过驱动对象连接到图数据库节点,使用编程语言与图数据库进行交互,方便开发人员创建、修改和维护图数据库系统,并调用图算法满足数据分析需求。针对有定制化开发需求的用户,Galaxybase提供了嵌入式图展示接口,可供用户将Galaxybase的图展示面板嵌入至第三方页面中,集成为一体化应用程序。

存储过程

随着图数据库应用领域的扩大,其内部封装的函数、预置接口等已无法覆盖所有业务需求。且由于驱动产生的网络影响和语言产生的调用链影响,用户也无法百分百发挥出图数据库的性能。举个例子,当用户面对上百条查询需求时,需要一条一条的重复调用查询语句,来回的数据传输成本严重影响产品性能和用户满意度。为此,能否允许用户自定义接口解决业务需求也成为图数据库的评估项之一。

在传统关系型数据库中,通过存储过程的方式解决上述问题,存储过程是作为可执行对象存放在数据库中的一个或多个SQL命令,通俗讲,就是能够完成一定操作的SQL语句集,在数据量特别庞大的情况下数据库利用存储过程能够达到倍速的效率提升。由于图数据库不存在SQL语句,一般将编程模块集或图查询语言集封装在底层,以接口调用的形式实现存储过程的功能。

针对上述需求,Galaxybase提供了差异化的编程接口——PAR API,PAR API全称为Parameterized Algorithm Routine,意为参数化算法程序,属于高级Java编程方式,可允许用户个性化定制接口。PAR API内有用户根据需求用Java语言编写好的代码集和Cypher语言编写的查询语句集,并将其封装在底层,使用时以Cypher语句调用即可,极大的提高了图数据库的计算效率。

数据应用生态工具

图可视化工具

除了上述的一系列开发工具和编程接口,图数据库还应满足数据科学家、业务人员、图数据库爱好者的多样化需求。图数据库可视化工具能够让用户通过拖拉点拽的简单交互方式,快速探索分析图数据中的关联关系,例如:图模型构建、数据映射、数据加载、过滤点边、遍历路径、群落分析等。

图可视化工具还应使用户能够深入挖掘图模型背后的含义、分析图数据价值、导出图模型、以自然语言进行探索等。Galaxybase提供了Galaxybase Studio可视化平台,这是一款无代码的图可视化工具,具备动态灵活的图构建能力、自定义可视化能力、丰富图探索能力,可以让图数据库小白、数据分析师、业务人员探索他们的数据。

Galaxybase Studio使用流程,用户根据业务场景以点边方式构建图模型后,通过自动化映射的方法将数据源数据转换为图模型内的点和边,并在数据加载后生成业务图谱。此外,用户可以根据需求自定义点边的颜色、样式、大小,调整全图的布局模式;在进行业务探索时,以鼠标拖拉点拽的方式实现数据分析,例如配置属性进行点边过滤、按点边条件进行深度扩展、在可视化视窗通过OpenCypher语言查询点边路径。下图是Galaxybase Studio关于Movie Demo的图谱展示,可以看到信息视窗内展示了点的各类信息、画布上方和左侧提供一系列交互工具。
在这里插入图片描述

图数据智能

图数据智能指基于内置图算法的图查询,并以图可视化分析的方式展示出来的能力,此项能力在图数据库技术的发展过程中起着举足轻重的作用。现实世界的实体、实体间的网络关系,在图数据库将被存储为图数据,而这背后的隐性关联关系是传统分析方式或传统关系型数据库无法挖掘探索的,图数据智能技术利用先进的图分析算法,使业务场景内的潜在驱动因素浮现,辅助分析人员更好的预测、决策。

图算法能够帮助用户轻松识别图数据内的模式、路径、链路、集群、相似度,从而得到图查询结果并为用户提供业务见解、助力AI自动化程序智能研判。基于图算法在图数据智能中的能力,图数据库供应商应该提供丰富的图算法库以支持多维复杂图分析需求,同时提供相关说明文档和培训内容供用户学习。此外,现代化的企业和厂商也通过采购合适的图数据库,利用图数据智能技术赋能市场预测和业务决策,从而降低生产成本、提高产品开发效率、提升客户满意度。

在这里插入图片描述
Galaxybase图数据库内置极简无编程可视化交互界面,拥有所见即所得的可视化图分析能力,能够让业务分析人员专注关联数据的商业核心价值;在图算法维度,Galaxybase图数据库提供7类55个单机算法和4类19个分布式算法,基本覆盖当前广泛使用的图算法类型,满足业务人员的多维复杂图分析需求。Galaxybase图数据库高度集成的图数据智能能力,与其它厂商拼凑出来的图数据库解决方案相比,能够支持的图规模更大(高达万亿点边规模大图)、覆盖的业务范围更广,最大限度的提高图数据库在业务场景下的能力和效率。

自主可控与上下游兼容

国际形势的不稳定性和动荡性是当前面临的现状,各个领域都存在没有硝烟的战争。今年俄乌冲突中,Oracle、SAP公司宣布暂停俄罗斯所有业务,Github考虑限制俄开发人员访问开源代码存储库的可能性。此类现象的产生,让我们看到国外开源项目的地缘政治性,因此有关信息技术安全可控与开放创新的问题得到了国家的空前重视。在图数据库领域,当前国内大部分厂商采用基于国外开源代码+自研的方式,纯自主研发的图数据库非常少数。采用此类方式搭建的图数据库,由于存在开源代码组件,所研发的图数据库产品在商用过程中容易违反开源许可协议,产生知识产权侵权风险。此外,软件都是程序员发开的,而人不可能不犯错,开源软件也一样存在bug,产生安全性或功能性漏洞,可能造成企业大量敏感信息与数据随着代码的共享而泄露。同时,在软件部署后,开源组件出现问题也容易造成牵一发而动全身的问题,产生高昂的维护成本。

Galaxybase图数据库是国内首款全自主知识产权的图数据库产品,底层代码100%自研,不依赖任何第三方开/闭源组件,不存在系统间黑盒沟通成本,避免了修改一处、隐患四起的问题,实现了真正的自主可控。同时,Galaxybase的底层存储针对图数据做了优化,使后续查询计算更加高校,为用户提供极致体验。

国产软件生态链要实现闭环,需要依赖上下游厂商之间的配合,包括操作系统厂商、芯片厂商、软件厂商等。创邻科技作为国产化生态系统的重要成员,旗下产品Galaxybase已全面完成与国产软硬件的兼容性认证,目前支持的国产CPU平台:鲲鹏、飞腾、海光x86、兆芯、龙芯;支持的国产操作系统:UOS、银河麒麟、中标麒麟等。

Galaxybase:正确的图数据库选择

国际权威研究机构Gartner认为:“到2025年,图技术在数据和分析创新中的占比将从2021年的10%上升到80%,促进整个企业机构的快速决策”。基于图数据库在未来将发挥的重要作用,为企业或厂商评估出正确的图数据库是一项重要的决策。

上文从原生vs非原生、图可视化、图数据智能、自主可控等多角度、多维度探讨了企业或组织评估图数据库的关键,可以得出创邻科技旗下的Galaxybase,是一款适合有大规模多源异构关联数据实时分析需求客户使用的企业级图数据库产品,凭借其优异的性能、完善的配套工具、安全可控的保障,将为客户带来全方位的图数据智能体验。目前,创邻科技官网提供Galaxybase单机免费版下载试用,并限时附赠安装部署视频和GBCA学习大礼包,感兴趣的读者可以访问创邻科技官网下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/560512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言——存储类型

目录 1. auto 自动型2. static 静态2.1 修饰变量要知道👇(数据在Linux内核中的分配图) 2.2 static 的特点⭐⭐⭐⭐⭐:2.2 修饰函数 3. extern4. register 寄存器类型 存储类型 存储类型有:auto static extern register…

2023最全selenium面试题及答案,测试员没有碰到算我输.....

一、前言 Selenium,是一个开源的框架,主要用于做HTML页面的UI自动化测试。不过,selenium IDE在去年官方已宣告放弃维护了。官网上放着一句话,selenium IDE is Dead。Selenium IDE是火狐浏览器的一个插件,是Selenium的…

上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

今年的校招基本已经进入大规模的开奖季了,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好…

低功耗IC后端培训 | 盘点Power Switch Cell在实际项目中应用注意事项

下面直接进入今天的技术干货分享——全面盘点power gating cell在数字IC后端实现中的各种注意事项。 什么是Power Gating? 随着工艺制程越做越小和芯片规模越来越大,芯片的leakage的比重越来越高,数字后端实现时就得考虑leakage的优化。而leakage优化…

交通标志识别系统-卷积神经网络

介绍 使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名…

Linux 软件包管理工具

rpm命令管理软件包 1.学会看rpm包,通过rpm包的名字来了解这个软件包的一些基础信息xfsprogs-4.19.0-2.el8.x86_64.rpm xfsprogs 软件名字 4.19.0 版本号 2 发行次数 el8 适用于哪个操作系统(rel8) x86_64 软…

Streamlit应用程序使用Streamlit-Authenticator进行用户的安全身份验证实践(解决升级问题)

在Streamlit官方文档中,没有提供提供安全身份验证组件。目前,第三方streamlit-authenticator提供此功能,详见引用我原来的博文,在《Streamlit应用程序使用Streamlit-Authenticator进行用户的安全身份验证实践》文中,原…

Vue计算属性

1,为什么Vue会设计计算属性(computed property)? 答:一定程度上,Vue的作用就是管理呈现到HTML页面上的所有数据data的,每当一个data发生变化,Vue实例就会自动的去更新模板里面使用到data的地方,…

pytorch完整模型训练套路

文章目录 CIFAR10数据集简介训练模型套路1、准备数据集2、加载数据集3、搭建神经网络4、创建网络模型、定义损失函数、优化器5、训练网络6、测试数据集7、添加tensorboard8、转化为正确率9、保存模型 完整代码 本文以 CIFAR10数据集为例,介绍一个完整的模型训练套路…

机器学习-线性代数-向量、基底及向量空间

概述 文章目录 概述向量理解向量运算 基底与向量的坐标表示基底与向量的深入基底与向量选取与表示基底的特殊性张成空间 向量 理解 直观理解 行向量:把数字排成一行A [ 4 5 ] [4~ 5] [4 5]列向量:把数字排成一列A [ 4 5 ] \ \left [ \begin{matrix}…

多线性开发实例分享

一. 概述 首先,在这里有必要和大家复现一下我使用该技术的背景: 在使用若依框架的时候,由于实际开发的需要,我需要配置四个数据源,并且通过mapper轮流去查每个库的指定用户数据,从而去判断改库是否存在目标…

构建一个简易数据库-用C语言从头写一个sqlite的克隆 0.前言

英文源地址 一个数据库是如何工作的? 数据是以什么格式存储的(在内存以及在磁盘)?何时从内存中转移到此磁盘上?为什么每张表只能有一个主键?回滚一个事务是如何工作的?索引是以什么格式组织的?什么时候会发生全表扫描, 以及它是如何进行的?准备好的语句是以什么格式保…

#C2#S2.2~S2.3# 加入 factory/objection/virtual interface 机制

2.2 加入factory 机制 factory机制的实现被集成在了一个宏中:uvm_component_utils。这个宏所做的事情非常多,其中之一就是将my_driver登记在 UVM内部的一张表中,这张表是factory功能实现的基础。只要在定义一个新的类时使用这个宏&#xff0…

斐波那契数列相关简化4

看这篇文章前需要看下前面三篇文章,最起码第一第二篇是需要看一下的 斐波那契数列数列相关简化1_鱼跃鹰飞的博客-CSDN博客 斐波那契数列数列相关简化2_鱼跃鹰飞的博客-CSDN博客 算法玩的就是套路,练练就熟悉了 再来一个: 用1*2的瓷砖&am…

如何在 CentOS Linux 上安装和配置 DRBD?实现高可用性和数据冗余

DRBD(Distributed Replicated Block Device)是一种用于实现高可用性和数据冗余的开源技术。它允许在不同的服务器之间实时同步数据,以提供数据的冗余和容错能力。本文将详细介绍如何在 CentOS Linux 上安装和配置 DRBD。 1. 确认系统要求 在…

一文带你了解MySQL之InnoDB统计数据是如何收集的

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 我们前边唠叨查询成本的时候经常用到一些统计数据,比如通过show table status可以看到关于表的统计数据,通过show index可以看到关于索引的统计数据,那…

MySQL之事务初步

0. 数据源 /*Navicat Premium Data TransferSource Server : localhost_3306Source Server Type : MySQLSource Server Version : 80016Source Host : localhost:3306Source Schema : tempdbTarget Server Type : MySQLTarget Server Version…

在线OJ常用输入规则

一、字符串输入规则 1.1 单行无空格字符串输入 输入连续字符串,cin默认空格/换行符为分割标志。 string s; //输入连续字符串,cin默认空格/换行符为分割标志。 cin >> s; 1.2 单行有空格字符串输入 getline函数接受带有空格的输入流&#xff…

C++——初识模板

文章目录 总述为什么要有模板函数模板概念函数模板使用方法函数模板的原理函数模板的实例化隐式示例化显式实例化 模板参数的匹配规则 类模板类模板的实例化 总述 本篇文章将带大家简单的了解一下c的模板方面的知识,带大家认识什么是模板,模板的作用&…

STL-常用算法(一.遍历 查找 排序)

目录 常用遍历算法: for_each和transform函数示例: 常用查找算法: find函数示例: find_if函数示例: adjacent_find示例: binary_search函数示例: count函数示例: count_if函…