ray tracer in rust

borrow-checker 逻辑上违背原则 mutable borrow不能同时被用到多次,mutable borrow和imutable borrow不能同时出现。

lifetime 协变 lifetime 到类型系统, 不是正常的

GAT generic associate type

表达式向量化 整数

火山: 每来一个数据,执行一种相加操作 向量化:

过程宏 fn trait 类型体操

代码生成(go tidb),生成一个全新的文件。

泛型

nullable (int, null) in MySQL

simd优化

async function / async stream

dart / js / ts async stream

  1. implement stream trait
  2. async stream tokio 过程宏

rustfmt 不能为其fmt

borrow checker 引用cast 指针,之后cast 回引用

编译慢,polonius borrow checker, 不稳定

存储引擎实现方法:B+, LSM B+: sqlite, innodb, k8s LSM:rocksdb, level db, aggo db

rising light, AP parser, binder, planner storage, compute

业务层:用库来实现业务 数据库:业务之下,设计系统,完成调试 硬件层:操作系统,硬件调试,fpga不能断点,log

risingwave,流数据库,物化视图,每次查询没有开销,从存储层

实时物化视图,实时更新,流计算引擎,存储中间状态,

计算引擎,SQL层 存储引擎,kv存储->KVpair,到磁盘, LSM,盘上做compaction

LSM特点: 盘,存储访问方式不同, B+保证数据有序,随机写随机读 lsm memtable, wal 对盘的使用方式,追加写,随机读,后台做compaction 对象存储:完整写一个文件,对云原生存储友好,lsm写最小单位为文件, ssd内部写log,写请求转化为顺序写请求, lsm软件层将随机写打包成顺序写

算法上 lsm容易控制 rocksdb remote compaction, 计算和存储之间不影响。 适合云原生架构

lsm劣势:存储KV结构,SQL存储关系型数据,针对性优化 AP系统使用列式存储

compaction占用带宽和CPU,数据合并之后会得到有序的数据,读放大,写放大

flink 存储 中间状态 rocksdb,