当前位置: 首页 > news >正文

最新常见的图数据库对比,选型,架构,性能对比

图数据库排名

  • 地址:https://db-engines.com/en/ranking/graph+dbms

知识图谱查询语言

SPARQL、Cypher、Gremlin、PGQL 和 G-CORE

语法 / 语义 / 特性

SPARQL

Cypher

Gremlin

PGQL

G-CORE

图模式匹配查询

语法

CGP

CGP

CGP(无可选)1

CGP

CGP

语义

子图同态、包 2

无重复边、包 2

子图同态、包 2

子图同构 3、包 2

子图同态、包 2

导航式查询

语法

RPQ 超集 (增加反向边和属性集上的否定)

RPQ 子集 (* 只能作用在单边)

RPQ 超集 (增加通过表达式比较属性值)

RPQ 超集 (增加比较路径上的顶点和边)

RPQ 超集 (增加复杂路径表达式)

语义

任意路径、集合 4

无重复边 5、包 2

任意路径 6、包 2

最短路径 7、包 8

最短路径 9、包 2

分析型查询

聚合函数

聚合函数

聚合函数、PageRank、PeerPressure 聚类

聚合函数

聚合函数

查询可组合性

数据更新语言 DML

CRUD10

CRUD

CR

数据定义语言 DDL

实现系统

Jena、RDF4J、gStore、Virtuoso 等

Neo4j、AgensGraph 等

TinkerTop 等

Oracle PGX

  1. Gremlin 不显式支持可选 (optional) 操作, 但可以通过其他语法特性等价模拟.

  2. 可通过 DISTINCT 关键字支持集合语义.

  3. PGQL 默认的图模式匹配查询语义是子图同构, 可使用 ALL 关键字改为子图同态.

  4. SPARQL 中只有当使用 * 运算使得属性路径查询无法等价写为 CGP 时才使用集合语义.

  5. Cypher 可通过 shortestPath 函数支持最短路径语义.

  6. Gremlin 中其他语义可以被模拟出来.

  7. PGQL 路径查询可通过用户定义函数实现其他语义.

  8. PGQL 路径查询返回单条最短路径, 集合和包语义相同.

  9. G-CORE 路径查询可通过 ALL 关键字改为任意路径语义.

  10. CRUD 分别代表 CREATE 创建、READ 读取、UPDATE 更新和 DELETE 删除

知识图谱存储方式

  • 关系型存储

存储大规模知识图谱,且便于对知识进行更新,但当知识图谱查询的选择性较大时,查询性能明显下降

  • 原生图存储

无邻接索引的特性能够高效处理复杂的知识图谱查询,但有限的存储容量和不灵活的更新机制使得原生图存储不能很好地应用于大规模知识图谱中

基于关系的知识图谱存储管理

关系数据库目前仍是使用最多的数据库管理系统。基于关系的知识图谱存储方案, 包括: 三元组表、水平表、属性表、垂直划分、六重索引和 DB2RDF。

三元组表

三元组表 (triple table) 是将知识图谱存储到关系数据库的最简单、最直接的办法, 就是在关系数据库中建立 一张具有 3 列的表, 该表的模式为 triple_table(subject,predicate,object),subject、predicate 和 object 这 3 列分别表示主语、谓语和宾语。

  • 三元组表存储方案虽然简单明了,但三元组表的行数与知识图谱的边数相等,其最大问题在于将知识图谱查询翻译为 SQL 查询后会产生三元组表的大量自连接操作

  • RDF 数据库系统 3store

水平表

水平表 (horizontal table) 存储方案同样非常简单。水平表的每行记录存储知识图谱中一个主语的所有谓语 和宾语。实际上, 水平表相当于知识图谱的邻接表。水平表的列数是知识图谱中不同谓语的数量, 行数是知识图 谱中不同主语的数量。

  • RDF 数据库系统 DLDB

  • 水平表的缺点在于:

    • (1) 所需列的数目等于知识图谱中不同谓语数量,在真实知识图谱数据集中,不同 谓语数量可能为几千个到上万个,很可能超出关系数据库所允许的表中列数目上限

    • (2) 对于一行来说,仅在极 少数列上具有值, 表中存在大量空值, 空值过多会影响表的存储、索引和查询性能

    • (3) 在知识图谱中,同一主语 和谓语可能具有多个不同宾语,即一对多联系或多值属性,而水平表的一行一列上只能存储一个值,无法应对这种情况 (可以将多个值用分隔符连接存储为一个值,但这违反了关系数据库设计的第一范式);

    • (4) 知识图谱的更新往往会引起谓语的增加、修改或删除,即水平表中列的增加、修改或删除,这是对于表结构的改变,成本很高。

属性表

属性表 (property table) 存储方案是对水平表的细分,将同类主语存到一个表中,解决了表中列数目过多的问题。

  • RDF 三元组库 Jena

  • 属性表既克服了三元组表的自连接问题,又解决了水平表中列数目过多的问题。实际上,水平表就是属性表的一种极端情况,即水平表是将所有主语划归为一类,因此属性表中的空值问题得到很大的缓解。

  • 属性表仍存 在如下一些缺点:

    • (1) 对于规模稍大的真实知识图谱数据,主语的类别可能有几千到上万个,需要建立几千到上万个表,这往往超过了关系数据库的限制

    • (2) 即使在同一类型中,不同主语具有的谓语集合也可能差异较大,会造成与水平表中类似的空值问题

    • (3) 水平表中存在的一对多联系或多值属性存储问题在属性表中仍然存在

垂直划分

垂直划分 (vertical partitioning) 存储方案,为每种谓语建立一张两列的表(subject,object), 表中存放知识图谱中由该谓语连接的主语和宾 语, 表的总数量即知识图谱中不同谓语的数量.

  • SW-Store

  • 优点:

    • (1) 谓语表仅存储出现在 知识图谱中的三元组, 解决了空值问题;

    • (2) 一个主语的一对多联系或多值属性存储在谓语表的多行中, 解决了 多值问题;

    • (3) 每个谓语表都按主语列的值进行排序, 能够使用归并排序连接 (merge-sort join) 快速执行不同谓 语表的连接查询操作.

  • 缺点:

    • (1) 需要创建的表的数目与知识图谱中不同谓语数目相等,而大规模的真实知识图谱 (如 DBpedia、YAGO、WikiData 等) 中谓语数目可能超过几千个,在关系数据库中维护如此规模的表需要花费很大开销

    • (2) 越是复杂的知识图谱查询操作,需要执行的表连接操作数量越多,而对于未指定谓语的三元组查询,将发生需要连接全部谓语表进行查询的极端情况

    • (3) 谓语表的数量越多,数据更新维护代价越大,对于一个主语的更新将涉及多张表,产生很高的更新时 I/O 开销。

六重索引

六重索引 (sextuple indexing) 存储方案是对三元组表的扩展,是一种典型的 “空间换时间” 策略,其将三元组全部 6 种排列对应地建立为 6 张表,即 spo(主语,谓语,宾语)、pos(谓语,宾语,主语)、osp(宾语,主语,谓语)、sop(主语,宾语,谓语)、pso(谓语,主语,宾语)和 ops(宾语,谓语,主语)。不难看出,其中 spo 表就是原来的三元组表。六重索引通过 6 张表的连接操作不仅缓解了三元组表的单表自连接问题,而且提高了某些典型知识图谱查询的效率。

  • RDF-3X , Hexastore

  • 优点:

    • (1) 知识图谱查询中的每种三元组模式查询都可以直接使用相应的索引进行快速 前缀范围查找;

    • (2) 可以通过不同索引表之间的连接操作 直接加速知识图谱上的连接查询.

  • 缺点:

    • (1) 虽然部分缓解了三元组表的单表自连接问题, 但需要花费 6 倍的存 储空间开销、索引维护代价和数据更新时的一致性维护代价, 随着知识图谱规模的增大, 该问题会愈加突出;

    • (2) 当知识图谱查询变得复杂时, 会产生大量的连接索引表查询操作, 依然不可避免索引表的自连接.

  • DB2RDF 是一种面向实体的 RDF 知识图谱存储方案

    • IBM DB2

原生知识图谱存储管理

Neo4j

Neo4j 是目前最流行的属性图数据库,其原生图存储层的最大特点是具有 “无索引邻接(index-free adjacency)” 特性。所谓 “无索引邻接” 是指,每个顶点维护着指向其邻接顶点的直接引用,相当于每个顶点都可看作是其邻接顶点的一个 “局部索引”,用其查找邻接顶点比使用“全局索引” 节省大量时间。这就意味着图导航操作代价与图大小无关,仅与图的遍历范围成正比

gStore

gStore 将 RDF 数据图中每个资源的所有属性和属性值映射到一个二进制位串上。具体而言,对于每个属性 或属性值,gStore 都定义一个固定长度的位串并将位串中所有位置为 0。然后利用若干个预先定义的字符串哈希函数将属性或属性值按照标识符映射到若干个小于位串长度的整数值,进而将位串上这些值所对应的位置置为 1。

分布式图数据库:JanusGraph

JanusGraph 是在原有 Titan 系统基础上继续开发的开源分布式图数据库。JanusGraph 的存储后端与查询引擎是分离的, 可使用分布式 Bigtable 存储库 Cassandra 或 HBase 作为存储后端。JanusGraph 借助第三方分布式索引库 ElasticSearch、Solr 和 Lucene 实现各类型数据的快速检索功能,包括地理信息数据、数值数据和全文搜索。JanusGraph 还具备基于 MapReduce 的图分析引擎,,可将 Gremlin 导航查询转化为 MapReduce 任务。

图计算框架(TinkerPop)

数据存储(Cassandra,HBase,BerkeleyDB)

索引存储(Elasticsearch,Solr,Lucene)

JanusGraph从其框架上来说,是起到一个桥梁的作用。将各种开源的软件连接到一起,形成一个大型图数据库。

OrientDB

OrientDB 最初是由 OrientDB 公司开发的多模型数据库管理系统。OrientDB 虽然支持图、文档、键值、对象、关系等多种数据模型, 但其底层实现主要面向图和文档数据存储管理的需求设计。其存储层中数据记录之间的联系并不是像关系数据库那样通过主外键的引用,而是通过记录之前直接的物理指针。OrientDB 对于数据模式的支持相对灵活,可以管理无模式数据 (schema-less),也可以像关系数据库那样定义完整的模式(schema-full),还可以适应介于两者之间的混合模式(schema-mixed) 数据。在查询语言方面,OrientDB 支持扩展的 SQL 和 Gremlin 用于图上的导航式查询;OrientDB 的 MATCH 语句实现了声明式的模式匹配,这类似于 Cypher 语言查询模式。

Cayley

Cayley 是由 Google 公司工程师开发的一款轻量级开源图数据库。Cayley 的开发受到了 Freebase 知识图谱和 Google 知识图谱背后的图数据存储的影响。Cayley 使用 Go 语言开发,可以作为 Go 类库使用;对外提供 REST API,具有内置的查询编辑器和可视化界面;支持多种查询语言,包括:基于 Gremlin 的 Gizmo、GraphQL 和 MQL;支持多种存储后端, 包括:键值数据库 Bolt、LevelDB, NoSQL 数据库 MongoDB、CouchDB、PouchDB、ElasticSearch,关系数据库 PostgreSQL、MySQL 等。

NebulaGraph

NebulaGraph 是一款完全由**杭州悦数科技有限公司自主研发的开源分布式图数据库产品,擅长处理千亿节点万亿条边的超大规模数据集,同时保持毫秒级查询延时。自 2019 年 5 月开源以来,被多家互联网头部企业竞相采用,广泛应用于金融风控、实时推荐、知识图谱等业务场景。早期采用者包括腾讯、美团、京东、360数科、微众银行、小红书、知乎、快手、BOSS****直聘等知名互联网企业,随着图数据库技术的日益普及以及业务场景的不断发掘,越来越多行业加入了 NebulaGraph 社区,包括中国移动、众安保险、****泰康人寿**等。

性能高效:高可用,高吞吐低时延

NebulaGraph 的图数据库采用原生分布式结构,得益于其 shared-nothing 以及存储与计算分离的架构设计,NebulaGraph 具备在线水平扩缩容能力;原生分布式架构,使用 Raft 协议保证数据一致性,确保集群高可用;同时兼容 openCypher,能够无缝对接 Neo4j 用户,降低学习及迁移成本。

开源社区:数千名成员,日常互动活跃

NebulaGraph 的开发者社区聚集了几千名社区成员和超百位社区代码贡献者,项目在 GitHub 上积累了超过 7800 个 star。近期被 CSDN 选为 2021 年的 “年度开源项目”。英国投资公司 OXX.VC 也将 NebulaGraph 评选为 2021 年成长最快的开源公司,与 Airbyte、Supabase 等广受欢迎的开源项目并列。

官网:https://www.nebula-graph.com.cn/

git:https://github.com/vesoft-inc/nebula

性能对比:https://discuss.nebula-graph.com.cn/t/topic/11727

文档:https://docs.nebula-graph.com.cn/3.6.0/1.introduction/1.what-is-nebula-graph/

其他原生图数据库

Amazon 云平台的 Amazon Neptune 多模型图数据库 Arango DB 微软的 Azure CosmosDB DataStax 的 Enterprise Graph Sparsity 的 Sparksee TigerGraph

图数据库选型准则

在图数据库的选型上我们主要考虑了以下 5 点:

  • (A) 项目开源,暂不考虑需付费的图数据库

  • (B) 分布式架构设计,具备良好的可扩展性

  • © 毫秒级的多跳查询延迟

  • (D) 支持千亿量级点边存储

  • (E) 具备批量从数仓导入数据的能力

针对主流图数据库,进行选型分析

DB-Engines Ranking of Graph DBMS 剔除不开源的项目,可分为:

  1. Neo4j、ArangoDB、Virtuoso、TigerGraph、RedisGraph。 此类图数据库只有单机版本开源可用,性能优秀,但不能应对分布式场景中数据的规模增长,即不满足选型要求(B)、(D)。

  2. JanusGraph、HugeGraph。 此类图数据库在现有存储系统之上新增了通用的图语义解释层,图语义层提供了图遍历的能力,但是受到存储层或者架构限制,不支持完整的计算下推,多跳遍历的性能较差,很难满足 OLTP(on-line transaction processing)场景下对低延时的要求,即不满足选型要求(C)。

  3. DGraph、NebulaGraph。 此类图数据库根据图数据的特点对数据存储模型、点边分布、执行引擎进行了全新设计,对图的多跳遍历进行了深度优化,基本满足我们的选型要求。

图数据库对比
NebulaGraph vs. Dgraph vs. HugeGraph

NebulaGraph vs. Dgraph vs. HugeGraph 的对比分析

部署方案

实时数据写入

查询对比

Neo4j vs HugeGraph vs NebulaGraph

Neo4j vs HugeGraph vs NebulaGraph 的对比分析

图形数据大小

平台

数据导入

一跳查询

两查询

共享好友查询

1000 万条边

Neo4j

26 秒

6.618 秒

6.644 秒

6.661 秒

HugeGraph

89 秒

16 毫秒

22 毫秒

72 毫秒

NebulaGraph

32.63 秒

1.482 毫秒

3.095 毫秒

0.994 毫秒

1 亿条边

Neo4j

1 分 21 秒

42.921 秒

43.332 秒

44.072 秒

HugeGraph

10 分

19 毫秒

20 毫秒

5 秒

NebulaGraph

3 分 52 秒

1.971 毫秒

4.34 毫秒

4.147 毫秒

10 亿条边

Neo4j

8 分 34 秒

165.397 秒

176.272 秒

168.256 秒

HugeGraph

65 分

19 毫秒

651 毫秒

3.8 秒

NebulaGraph

29 分 35 秒

2.035 秒

22.48 毫秒

1.761 毫秒

80 亿条边缘

Neo4j

1 小时 23 分钟

314.34 秒

393.18 秒

608.27 秒

HugeGraph

16 小时

68 毫秒

24 秒

541 毫秒

NebulaGraph

~30 分钟

小于 1s

小于 5 秒

小于 1s

架构:

Dgraph vs. HugeGraph vs. JanusGraph vs. NebulaGraph vs. Neo4j

Dgraph vs. HugeGraph vs. JanusGraph vs. NebulaGraph vs. Neo4j 的对比分析

主要知识图谱数据库对比

常见知识图谱数据库管理系统的比较

类型

名称

许可证

数据模型 / 存储方案

查询语言

是否活跃

基于关系

3store

开源

RDF 图 / 三元组表

SPARQL

DLDB

研究原型

RDF 图 / 水平表

SPARQL

早期系统, 水平表存储方案的代表性系统

Jena

开源

RDF 图 / 属性表

SPARQL

主流的语义 Web 工具库、RDF 数据库和 OWL 推理工具

SW-Store

研究原型

RDF 图 / 垂直划分

SPARQL

科研原型系统, 垂直划分存储方案的代表性系统

IBM DB2

商业

RDF 图 / DB2RDF

SPARQL/ SQL

支持 RDF 的主流商业数据库

Oracle 18c

商业

RDF 图 / 关系存储

SPARQL/ PGQL

支持 RDF 的主流商业数据库

RDF 三元组库

RDF4J

开源

RDF 图 / SAIL API

SPARQL

RDF-3X

开源

RDF 图 / 六重索引

SPARQL

科研原型系统, 六重索引存储方案的代表性系统

gStore

开源研究原型

RDF 图 / VS * 树

SPARQL

科研原型系统, 原生图存储, 使用了基于位串图存储技术

Virtuoso

商业 / 开源

RDF 图 / 多模型混合

SPARQL/ SQL

语义 Web 项目常用的 RDF 数据库, 基于成熟的 SQL 引擎

AllegroGraph

商业

RDF 图 / 三元组索引

SPARQL

对语义推理功能具有较为完善的支持

GraphDB

商业

RDF 图 / 三元组索引

SPARQL

支持语义 Web 标准的主流产品, 支持 SAIL 层推理功能

BlazeGraph

商业

RDF 图 / 三元组索引

SPARQL/ Gremlin

基于 RDF 三元组库的图数据库, 实现了 SPARQL 和 Gremlin

StarDog

商业

RDF 图 / 三元组索引

SPARQL

对 OWL2 推理机制具有良好的支持

原生图数据库

Neo4j

商业 / 开源

属性图 / 原生图存储

Cypher

JanusGraph

开源

属性图分布式存储

Gremlin

分布式图数据库, 存储后端与查询引擎分离, 实现了 Gremlin

OrientDB

商业

属性图 / 原生图存储

SQL/ Gremlin

支持多模型的原生图数据管理系统, 对数据模式的灵活支持

Cayley

开源

RDF 图 / 外部存储

Gremlin/ GraphQL

轻量级开源图数据库, 易于扩展对新语言和存储后端的支持

分布式系统与框架

Sempala

开源研究原型

RDF 图 / 分布式存储

SPARQL

TriAD

开源研究原型

RDF 图 / 分布式存储六重索引

SPARQL

基于 MPI 框架的异步通信协议

H2RDF+

开源研究原型

RDF 图 / 分布式存储六重索引

SPARQL

基于 HBase 构建六重索引

S2RDF

开源研究原型

RDF 图 / 分布式存储垂直划分

SPARQL

基于 Spark 框架建立大量索引

Stylus

开源研究原型

RDF 图 / 分布式存储属性表优化

SPARQL

基于分布式内存键值库的 RDF 三元组库

Apache Rya

开源

RDF 图 / 分布式存储三元组索引

SPARQL

基于列存储 Accumulo 的 RDF 三元组库

Cypher for Apache Spark

开源

属性图 / 分布式存储 DataFrame

Cypher

基于 Spark 框架的 Cypher 引擎

JanusGraph(尚可)、Neo4j(老牌先入为主不一定最佳)、Dgraph(尚可)、NebulaGraph(推荐) 四款图数据库比较。

特性

JanusGraph

Neo4j

Dgraph

NebulaGraph

首次发布

2017 年

2007 年

2016 年

2019 年

开发语言

Java

Java

Go

C++

开源

属性图模型

完整的属性图模型

完整的属性图模型

类 RDF 存储

完整的属性图模型

架构

分布式

单机

分布式

分布式

存储后端

Hbase、Cassandra、
BerkeleyDB

自定义文件格式

键值数据库 BadgerDB

键值数据库
RocksDB

高可用性

支 持

不支持

支持

支持

高可靠性

支 持

不支持

支持

支持

一致性协议

Paxos 等

RAFT

RAFT

跨数据中心复制

支 持

不支持

支持

不支持

事务

ACID 或 BASE

完全的 ACID

0mid 修改版

不支持

分区策略

随机分区,支持显式指定分区策略

不支持分区

自动分区

静态分区

大数据平台集成

Spark、Hadoop、Giraph

Spark

不支持

Spark、Flink

查询语言

Gremlin

Cypher

GraphQL

nGQL

全文检索

ElasticSearch、Solr、Lucene

内置

内置

ElasticSearch

多个图

支持创建任意多图

一个实例只能有一个图

一个集群只能有一个图

支持创建任意多图

属性图模式

多种约束方法

可选模式约束

无模式

强制模式约束

客户端协议

HTTP、WebSockets

HTTP、BOLT

HTTP、gRPC 等

HTTP

客户端语言

Java、Python、C#、Go、Ruby

Java、Python、Go 等

Java、Go、Python、等

Python、Java 等

相关文章:

最新常见的图数据库对比,选型,架构,性能对比

图数据库排名 地址:https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性 SPARQL Cypher Gremlin PGQL G-CORE 图模式匹配查询 语法 CGP CGP CGP(无可选)1 CGP CGP 语义 子…...

UE5材质节点Camera Vector/Reflection Vector

Camera Vector相机向量,输出像素到相机的方向,结果归一化 会随着相机移动而改变 Reflection Vector 反射向量,物体表面法线反射到相机的方向,x和y和camera vector相反 配合hdr使用...

NextCloud服务安装与配置教程

NextCloud服务安装与配置教程 什么是 NextCloud: Nextcloud 是一款开源的私有云存储和协作平台,允许用户在自己的服务器上托管数据并管理团队协作。它可以作为一个功能丰富、安全可靠的替代方案,与商业云服务(如 Google Drive、Dropbox)相比提供更多控制和隐私保护。简单来…...

详解GPT-信息抽取任务 (GPT-3 FAMILY LARGE LANGUAGE MODELS)

GPT-3 FAMILY LARGE LANGUAGE MODELS Information Extraction 自然语言处理信息提取任务(NLP-IE):从非结构化文本数据中提取结构化数据,例如提取实体、关系和事件 [164]。将非结构化文本数据转换为结构化数据可以实现高效的数据处…...

华为数通考试模拟真题(附带答案解析)题库领取

【多选题】 管理员想要更新华为路由器的VRP版本,则正确的方法有? A管理员把路由器配置为FTP服务器,通过FTP来传输VRP软件 B:管理员把路由器置为FTP客户端,通过FTP来传输VRP软件 C:管理员把路由器配置为TFTP客户端,通过TFTP来传…...

微信小程序:正确输出<小于,大于>符号

错误写法 1、如果直接输入<符号会直接报错&#xff0c;>能正常使用&#xff0c;如图标红的是错误写法 2、输入html的<&gt的写法&#xff0c;会原样输入符号 解决方法 采用变量的方式输出 1、js写入变量 2、wxml直接写...

Flink源码解析之:如何根据算法生成StreamGraph过程

Flink源码解析之&#xff1a;如何根据算法生成StreamGraph过程 在我们日常编写Flink应用的时候&#xff0c;会首先创建一个StreamExecutionEnvironment.getExecutionEnvironment()对象&#xff0c;在添加一些自定义处理算子后&#xff0c;会调用env.execute来执行定义好的Flin…...

矩阵简单问题(Java)

问题&#xff1a; 顺时针打印二维方阵&#xff1a; 1 2 3 4 15 5 6 7 8 14 9 10 11 12 13 13 14 15 16 public class Test1 {public static void main(String[] args) {int[][] arr new int[][]{{1, 2, 3, 4,100},{5, 6, 7, 8,101},{9, 10, 11, 12,102},{13, 14, 15, 16,…...

Elasticsearch DSL版

文章目录 1.索引库操作创建索引库&#xff1a;删除索引库&#xff1a;查询索引库&#xff1a;修改索引库&#xff1a;总结 2.文档操作创建文档&#xff1a;查询文档&#xff1a;删除文档&#xff1a;全量修改文档&#xff1a;增量修改文档&#xff1a;总结 3.DSL查询语法&#…...

2024-12-29-sklearn学习(26)模型选择与评估-交叉验证:评估估算器的表现 今夜偏知春气暖,虫声新透绿窗纱。

文章目录 sklearn学习(26) 模型选择与评估-交叉验证&#xff1a;评估估算器的表现26.1 计算交叉验证的指标26.1.1 cross_validate 函数和多度量评估26.1.2 通过交叉验证获取预测 26.2 交叉验证迭代器26.2.1 交叉验证迭代器–循环遍历数据26.2.1.1 K 折26.2.1.2 重复 K-折交叉验…...

STM32CUBEIDE FreeRTOS操作教程(十二):std dynamic memory 标准动态内存

STM32CUBEIDE FreeRTOS操作教程&#xff08;十二&#xff09;&#xff1a;std dynamic memory 标准动态内存 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F40…...

异步爬虫之aiohttp的使用

在上一篇博客我们介绍了异步爬虫的基本原理和 asyncio 的基本用法&#xff0c;并且在最后简单提及了使用aiohttp 实现网页爬取的过程。本篇博客我们介绍一下 aiohttp 的常见用法。 基本介绍 前面介绍的 asyncio模块&#xff0c;其内部实现了对 TCP、UDP、SSL协议的异步操作&a…...

【Rust自学】9.1. 不可恢复的错误以及panic!

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 9.1.1. Rust错误处理概述 Rust拥有极高的可靠性&#xff0c;这也延伸到了错误处理的领域。比如说在大部分情况下&#xff0c;Rust会迫使你…...

【老张的程序人生】一天时间,我成软考高级系统分析师

今年下半年&#xff0c;我心血来潮报考了软考高级系统分析师。彼时的我&#xff0c;工作繁忙至极&#xff0c;一周十四节课&#xff0c;班主任的职责压身&#xff0c;还兼任教学管理事务&#xff0c;每日忙得晕头转向&#xff0c;那点可怜的闲暇时光&#xff0c;也都奉献给了游…...

vue使用el-select下拉框自定义复选框

在 Vue 开发中&#xff0c;高效且美观的组件能极大地提升用户体验和开发效率。在vue中使用elementplus 的 el-select下拉框实现了一个自定义的多选下拉框组件。 一、代码功能概述 这段代码创建了一个可多选的下拉框组件&#xff0c;通过el-select和el-checkbox-group结合的方…...

k8s基础(2)—Kubernetes-Namespace

一、Namespace概述 名字空间 在 Kubernetes 中&#xff0c;名字空间&#xff08;Namespace&#xff09; 提供一种机制&#xff0c;将同一集群中的资源划分为相互隔离的组。 同一名字空间内的资源名称要唯一&#xff0c;但跨名字空间时没有这个要求。 名字空间作用域仅针对带有…...

APM for Large Language Models

APM for Large Language Models 随着大语言模型&#xff08;LLMs&#xff09;在生产环境中的广泛应用&#xff0c;确保其可靠性和可观察性变得至关重要。应用性能监控&#xff08;APM&#xff09;在这一过程中发挥了关键作用&#xff0c;帮助开发者和运维人员深入了解LLM系统的…...

Spark Runtime Filter

Runtime Filter 参考链接&#xff1a; https://docs.google.com/document/d/16IEuyLeQlubQkH8YuVuXWKo2-grVIoDJqQpHZrE7q04/edit?tabt.0https://www.modb.pro/db/557718https://issues.apache.org/jira/browse/SPARK-32268https://github.com/apache/spark/pull/35789https…...

AI大模型系列之七:Transformer架构讲解

目录 Transformer网络是什么&#xff1f; 输入模块结构&#xff1a; 编码器模块结构&#xff1a; 解码器模块: 输出模块结构&#xff1a; Transformer 具体是如何工作的&#xff1f; Transformer核心思想是什么&#xff1f; Transformer的代码架构 自注意力机制是什么…...

基于51单片机(STC12C5A60S2)和8X8彩色点阵屏(WS2812B驱动)的小游戏《贪吃蛇》(普中开发板矩阵按键控制)

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、矩阵按键3、8X8彩色点阵屏 四、主函数总结 系列文章目录 前言 《贪吃蛇》&#xff0c;一款经典的、怀旧的小游戏&#xff0c;单片机入门必写程序。 以《贪吃蛇》为载体&#xff0c;熟悉各种屏幕的使…...

遇到复杂的 递归查询sql 需要oracle 转pgsql 可以把数据表结构给ai

遇到复杂的 递归查询sql 需要oracle 转pgsql 可以把数据表结构给ai 并且 建立备份表 把需要的很少的数据放到表里面 这样 ai 可以很好的判断sql 咋写 还可以&#xff0c;让ai解释oracle sql 然后拿到描述和表和字段&#xff0c;给ai让他生成pgsql 的sql&#xff0c;亲测有效...

Zynq PS端外设之GPIO

1. GPIO&#xff08;通用输入/输出&#xff09; GPIO外设有4个Bank&#xff0c;Bank0/1通过MIO连接到PS的引脚上&#xff1b;Bank2/3通过EMIO连接到PL的引脚上。 注意&#xff1a;Bank1的电平要改成LVCOMS 1.8 GPIO寄存器 寄存器&#xff1a; DATA_RO&#xff1a; 读取GPIO的输…...

Spring Boot项目开发常见问题及解决方案(上)

启动相关问题 问题 1&#xff1a;项目启动时报错“找不到主类” 在使用 Spring Boot 打包成可执行 JAR 文件后启动&#xff0c;有时会遇到这个头疼的问题。通常是因为打包配置有误或者项目结构不符合要求。 解决方案&#xff1a; 首先&#xff0c;检查 pom.xml&#xff08;Ma…...

Elasticsearch: 高级搜索

这里写目录标题 一、match_all匹配所有文档1、介绍&#xff1a; 二、精确匹配1、term单字段精确匹配查询2、terms多字段精确匹配3、range范围查询4、exists是否存在查询5、ids根据一组id查询6、prefix前缀匹配7、wildcard通配符匹配8、fuzzy支持编辑距离的模糊查询9、regexp正则…...

STM32 拓展 电源控制

目录 电源控制 电源框图 VDDA供电区域 VDD供电区域 1.8V低电压区域 后备供电区域 电压调节器 上电复位和掉电复位 可编程电压检测器(PVD) 低功耗 睡眠模式(只有CUP(老板)睡眠) 进入睡眠模式 退出睡眠模式 停机(停止)模式(只留核心区域(上班)) 进入停…...

SpringBootWeb案例-1

文章目录 SpringBootWeb案例1. 准备工作1.1 需求&环境搭建1.1.1 需求说明1.1.2 环境搭建 1.2 开发规范 2. 部门管理2.1 查询部门2.1.1 原型和需求2.1.2 接口文档2.1.3 思路分析2.1.4 功能开发2.1.5 功能测试 2.2 前后端联调2.3 删除部门2.3.1 需求2.3.2 接口文档2.3.3 思路…...

HTML——57. type和name属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>type和name属性</title></head><body><!--1.input元素是最常用的表单控件--><!--2.input元素不仅可以在form标签内使用也可以在form标签外使用-…...

应用架构模式-总体思路

采用引导式设计方法&#xff1a;以企业级架构为指导&#xff0c;形成较为齐全的规范指引。在实践中总结重要设计形成决策要点&#xff0c;一个决策要点对应一个设计模式。自底向上总结采用该设计模式的必备条件&#xff0c;将之转化通过简单需求分析就能得到的业务特点&#xf…...

vue 虚拟滚动 vue-virtual-scroller RecycleScroller

vue 3 https://github.com/Akryum/vue-virtual-scroller/blob/master/packages/vue-virtual-scroller/README.md vue 2 https://github.com/Akryum/vue-virtual-scroller/tree/v1/packages/vue-virtual-scroller npm install --save vue-virtual-scrollernextmain.js // 虚拟滚…...

DC-DC 降压转换器设计提示和技巧

基本 DC-DC 降压转换器电路 在开始之前&#xff0c;我们先回顾一下DC-DC降压转换器的电路&#xff1a; 为了帮助您&#xff0c;我开发了降压设计中“什么影响什么”的矩阵&#xff1a; 主要的权衡是电感&#xff08;与 k 因子成反比&#xff0c;即峰峰值与平均电感电流之比&a…...