 ⽤ egg 孵化你的 SQL 优化器 - 王润基t(a, b) SELECT sum(count(b)) FROM t Validation ❌ 嵌套的聚合函数 SELECT a FROM t WHERE sum(b) > 10 ❌ WHERE 中的聚合函数 聚合函数提取 sum + count $1.1 聚合分析 count [] [count(Id(1))] [sum(Id(1))] [sum(Id(1)) [sum(Id(1)), count(Id(1))] Id=1 2 3 4 5 [count(Id(4))] ⚠ 嵌套聚合函数 ✅ 收集所有聚合函数 聚合函数提取 Filter $1.2 = “Bob” Hash Join $1.1 = $2.1 Scan $1.1, $1.2 Scan $2.1, $2.2 Projection $1.2 + $2.2 物理下标解析 Parser Binder Optimizer Executor SQL AST Table 基于 egg 的新版查询引擎 类型分析 Schema 分析 聚合分析 — 类型检查 — 通配符展开 — 聚合提取 常量分析 列分析 ⾏分析 类型分析 Schema 分析 — 类型解析 — 物理下标解析 — 常量折叠 — 算⼦下推 — 代价估计 — 其它优化0 码力 | 39 页 | 6.48 MB | 1 年前3 ⽤ egg 孵化你的 SQL 优化器 - 王润基t(a, b) SELECT sum(count(b)) FROM t Validation ❌ 嵌套的聚合函数 SELECT a FROM t WHERE sum(b) > 10 ❌ WHERE 中的聚合函数 聚合函数提取 sum + count $1.1 聚合分析 count [] [count(Id(1))] [sum(Id(1))] [sum(Id(1)) [sum(Id(1)), count(Id(1))] Id=1 2 3 4 5 [count(Id(4))] ⚠ 嵌套聚合函数 ✅ 收集所有聚合函数 聚合函数提取 Filter $1.2 = “Bob” Hash Join $1.1 = $2.1 Scan $1.1, $1.2 Scan $2.1, $2.2 Projection $1.2 + $2.2 物理下标解析 Parser Binder Optimizer Executor SQL AST Table 基于 egg 的新版查询引擎 类型分析 Schema 分析 聚合分析 — 类型检查 — 通配符展开 — 聚合提取 常量分析 列分析 ⾏分析 类型分析 Schema 分析 — 类型解析 — 物理下标解析 — 常量折叠 — 算⼦下推 — 代价估计 — 其它优化0 码力 | 39 页 | 6.48 MB | 1 年前3
 基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺简的时序数据处理平台。 采用关系型数据库模型  需要建库、建表,  为提升写入和查询效率,要求一个数据采集点一张表  为实现多表聚合,引入超级表概念  子表通过超级表创建,带有标签,通过标签实现多表 高效聚合 高效写入  支持标准 SQL 写入,支持批量写入  支持 Schemaless 写入  支持从 Kafaka, MQTT, OPC, PI System0 码力 | 29 页 | 2.26 MB | 1 年前3 基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺简的时序数据处理平台。 采用关系型数据库模型  需要建库、建表,  为提升写入和查询效率,要求一个数据采集点一张表  为实现多表聚合,引入超级表概念  子表通过超级表创建,带有标签,通过标签实现多表 高效聚合 高效写入  支持标准 SQL 写入,支持批量写入  支持 Schemaless 写入  支持从 Kafaka, MQTT, OPC, PI System0 码力 | 29 页 | 2.26 MB | 1 年前3
 Rust分布式账务系统 - 胡宇事务层与账户层分 离 ● 独立水平扩展 ● CQRS ● Event Sourcing ● 针对读场景,写场 景分别优化 ● 稳定的底层 API ● 灵活的顶层 API ● 树状结构 ● 聚合查询 ● 正确性:内存安全,线程安全 ● 可靠性: Raft 共识算法 raft-rs ● 高性能:关键路径无锁单线程 顶层架构 ● Gateway 路由层 ○ 业务 API 到底层0 码力 | 27 页 | 12.60 MB | 1 年前3 Rust分布式账务系统 - 胡宇事务层与账户层分 离 ● 独立水平扩展 ● CQRS ● Event Sourcing ● 针对读场景,写场 景分别优化 ● 稳定的底层 API ● 灵活的顶层 API ● 树状结构 ● 聚合查询 ● 正确性:内存安全,线程安全 ● 可靠性: Raft 共识算法 raft-rs ● 高性能:关键路径无锁单线程 顶层架构 ● Gateway 路由层 ○ 业务 API 到底层0 码力 | 27 页 | 12.60 MB | 1 年前3
 Rust 程序设计语言简体中文版义 枚举的定义 ch06-01-defining-an-enum.md commit bb7e429ad6b59d9a0c37db7434976364cbb9c6da 结构体给予你将字段和数据聚合在一起的方法,像 Rectangle 结构体有 width 和 height 两 个字段。而枚举给予你将一个值成为一个集合之一的方法。比如,我们想让 Rectangle 是一 些形状的集合,包含 用于存放发生 于世界各地的新闻故事,而结构体 Tweet 最多只能存放 280 个字符的内容,以及像是否转推 或是否是对推友的回复这样的元数据。 我们想要创建一个名为 aggregator 的多媒体聚合库用来显示可能储存在 NewsArticle 或 Tweet 实例中的数据摘要。为了实现功能,每个结构体都要能够获取摘要,这样的话就可以调 用实例的 summarize 方法来请求摘要。示例 体中可以有多个方法:一行一个方法签名且都以分号结尾。 215/600 Rust 程序设计语言 简体中文版 为类型实现 trait 现在我们定义了 Summary trait 的签名,接着就可以在多媒体聚合库中实现这个类型了。示例 10-13 中展示了 NewsArticle 结构体上 Summary trait 的一个实现,它使用标题、作者和创建 的位置作为 summarize 的返回值。对于0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版义 枚举的定义 ch06-01-defining-an-enum.md commit bb7e429ad6b59d9a0c37db7434976364cbb9c6da 结构体给予你将字段和数据聚合在一起的方法,像 Rectangle 结构体有 width 和 height 两 个字段。而枚举给予你将一个值成为一个集合之一的方法。比如,我们想让 Rectangle 是一 些形状的集合,包含 用于存放发生 于世界各地的新闻故事,而结构体 Tweet 最多只能存放 280 个字符的内容,以及像是否转推 或是否是对推友的回复这样的元数据。 我们想要创建一个名为 aggregator 的多媒体聚合库用来显示可能储存在 NewsArticle 或 Tweet 实例中的数据摘要。为了实现功能,每个结构体都要能够获取摘要,这样的话就可以调 用实例的 summarize 方法来请求摘要。示例 体中可以有多个方法:一行一个方法签名且都以分号结尾。 215/600 Rust 程序设计语言 简体中文版 为类型实现 trait 现在我们定义了 Summary trait 的签名,接着就可以在多媒体聚合库中实现这个类型了。示例 10-13 中展示了 NewsArticle 结构体上 Summary trait 的一个实现,它使用标题、作者和创建 的位置作为 summarize 的返回值。对于0 码力 | 600 页 | 12.99 MB | 1 年前3
 Rust 语言学习笔记age: 12, }; (14,person) } 4.1.2 结构体 在 Rust 中,结构体是一个跟 tuple 类似 的概念。我们同样可以将一些常用 的数据、属性聚合在一起,就形成了一个结构体。 所不同的是,Rust 的结构体有三种最基本的形式。 1.具名结构体:通常接触的基本都是这个类型的。 struct A { attr1: i32,0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记age: 12, }; (14,person) } 4.1.2 结构体 在 Rust 中,结构体是一个跟 tuple 类似 的概念。我们同样可以将一些常用 的数据、属性聚合在一起,就形成了一个结构体。 所不同的是,Rust 的结构体有三种最基本的形式。 1.具名结构体:通常接触的基本都是这个类型的。 struct A { attr1: i32,0 码力 | 117 页 | 2.24 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0表达式中用模式匹配,针对不同的枚举值编写相 应要执行的代码。最后会介绍 if let,另一个简洁方便处理代码中枚举的结构。 114/562Rust 程序设计语言 简体中文版 枚举的定义 结构体给予你将字段和数据聚合在一起的方法,像 Rectangle 结构体有 width 和 height 两个 字段。而枚举给予你一个途径去声明某个值是一个集合中的一员。比如,我们想让 Rectangle 是一些形状的集合,包含 世界各地的新闻故事,而结构体 SocialPost 最多只能存放 280 个字符的内容,以及指示该帖 子是新发布的、转发的还是对另一条帖子的回复的元数据。 我们想要创建一个名为 aggregator 的多媒体聚合库用来显示可能储存在 NewsArticle 或 SocialPost 实例中的数据摘要。为了实现功能,每个结构体都要能够获取摘要,这样的话就 可以调用实例的 summarize 方法来请求摘要。示例 签名的定义完全一致的 summarize 方法。 trait 体中可以有多个方法:一行一个方法签名且都以分号结尾。 为类型实现 trait 现在我们定义了 Summary trait 的签名,接着就可以在多媒体聚合库中实现这个类型了。示例 10-13 中展示了 NewsArticle 结构体上 Summary trait 的一个实现,它使用标题、作者和创建的 位置作为 summarize 的返回值。对于 SocialPost0 码力 | 562 页 | 3.23 MB | 25 天前3 Rust 程序设计语言 简体中文版 1.85.0表达式中用模式匹配,针对不同的枚举值编写相 应要执行的代码。最后会介绍 if let,另一个简洁方便处理代码中枚举的结构。 114/562Rust 程序设计语言 简体中文版 枚举的定义 结构体给予你将字段和数据聚合在一起的方法,像 Rectangle 结构体有 width 和 height 两个 字段。而枚举给予你一个途径去声明某个值是一个集合中的一员。比如,我们想让 Rectangle 是一些形状的集合,包含 世界各地的新闻故事,而结构体 SocialPost 最多只能存放 280 个字符的内容,以及指示该帖 子是新发布的、转发的还是对另一条帖子的回复的元数据。 我们想要创建一个名为 aggregator 的多媒体聚合库用来显示可能储存在 NewsArticle 或 SocialPost 实例中的数据摘要。为了实现功能,每个结构体都要能够获取摘要,这样的话就 可以调用实例的 summarize 方法来请求摘要。示例 签名的定义完全一致的 summarize 方法。 trait 体中可以有多个方法:一行一个方法签名且都以分号结尾。 为类型实现 trait 现在我们定义了 Summary trait 的签名,接着就可以在多媒体聚合库中实现这个类型了。示例 10-13 中展示了 NewsArticle 结构体上 Summary trait 的一个实现,它使用标题、作者和创建的 位置作为 summarize 的返回值。对于 SocialPost0 码力 | 562 页 | 3.23 MB | 25 天前3
 Rust算法教程 The Algos (algorithms)来更⾼的运⾏或者存储效率。数据结构往往 同⾼效的检索算法和索引技术有关 在计算机科学的发展过程中,数据结构也随之发展。程序设计中常⽤的数据结构包括如下⼏个。 1. 数组(Array) 数组是⼀种聚合数据类型,它是将具有相同类型的若⼲变量有序地组织在⼀起的 集合。数组可以说是最基本的数据结构,在各种编程语⾔中都有对应。⼀个数组可以分解为 多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、0 码力 | 270 页 | 8.46 MB | 1 年前3 Rust算法教程 The Algos (algorithms)来更⾼的运⾏或者存储效率。数据结构往往 同⾼效的检索算法和索引技术有关 在计算机科学的发展过程中,数据结构也随之发展。程序设计中常⽤的数据结构包括如下⼏个。 1. 数组(Array) 数组是⼀种聚合数据类型,它是将具有相同类型的若⼲变量有序地组织在⼀起的 集合。数组可以说是最基本的数据结构,在各种编程语⾔中都有对应。⼀个数组可以分解为 多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、0 码力 | 270 页 | 8.46 MB | 1 年前3
共 7 条
- 1













