diff --git a/_posts/2024-07-19-2023-qcon-gz.md b/_posts/2024-07-19-2023-qcon-gz.md
new file mode 100644
index 0000000..2965cec
--- /dev/null
+++ b/_posts/2024-07-19-2023-qcon-gz.md
@@ -0,0 +1,158 @@
+---
+layout: post
+title: qcon2023广州PPT速览
+categories: [database]
+tags: [byconity, antkv, rocksdb, clickhouse]
+---
+ppt在这里 https://www.modb.pro/topic/640977
+
+只有两个感兴趣
+
+https://wanghenshui.github.io/pdf/byconity.pdf
+
+
+https://wanghenshui.github.io/pdf/antkv.pdf
+
+
+
+### AntKV: 蚂蚁实时计算 KV 分离5x性能提升实践
+
+WiscKey的rocksdb改造工作
+
+AntKV 核心功能
+- KV分离
+ - 元数据管理
+- 空间回收
+ - GC
+ - TTL
+- 数据版本
+ - Checkpoint
+ - Ingest Value Log Files
+- 特性支持
+ - 异步恢复Checkpoint
+ - Table API
+- 性能优化
+ - **Scan 优化**
+ - 流控优化
+ - **Learned Index**
+
+
+**Scan优化**
+
+kv分离现状
+- value 是vlog追加模式
+- 访问value多一跳
+- 导致scan局部性差
+
+优化策略,并发prefetch
+- 根据用户访问 Pattern 或者 Range Hint 发起异步预取
+- 发挥 NVMe SSD 能力并行预取
+- 利用 Block Cache 实现数据同步
+
+
+
+
+新的问题
+- 中等大小(如256B)Value 情况下,Scan 仍然比 RocksDB 差很多
+
+
+原因
+- Block 中数据不连续,磁盘带宽即便打满,大多内容都是无效数据
+
+优化策略 Diffkv ATC 21: Differentiated Key-Value Storage Management for Balanced I/O Performance
+
+
+核心思路
+- 对于中等大小的 KV pairs,对 Value Log Files也进行分层处理,增强局部连续性
+ - Level N-2 及以下的层级不做重写
+ - Level N-1 及以上的层级在 Compaction 时重写Value Log Files
+
+
+
+- 针对 Scan 优化的重写:
+ - Compaction 过程中,对本轮参与的 Value Log Files 进行重叠记数
+ - 当发现某文件重叠记数超过阈值,则标记相关文件后续进行重写
+
+
+
+
+收益 写入降低30% 但scan提升巨大
+
+这种还是要考虑业务来使用,但是这个工作是很亮眼的
+
+**借助 Learned Index 优化查询**
+
+Learned Index主要是要设计构建算法,这里需要展开一下
+
+
+
+
+
+
+
+因为实际 SST 保存的 key 为 string 类型,非 integer,因此需要进行转换
+- 要求
+ - 唯一性:不同的 key,转换出来的 key_digest 不能相同
+ - 保序性:如果 key1 < key2,那么转换后的 key_digest_1 < key_digest_2
+- 问题
+ - 字符串长度是随机的,并且可能很长
+
+
+
+
+
+Learned Index非常小,读效率非常高
+
+Learned Index: 生成过程
+
+- 在构建新的SST过程中,会缓存待写入的所有KV数据,在Finish时进行建模并持久化相关参数。
+ - 不会在L0构建Learned Index
+ - 不会对大小在阈值以下的SST进行构建
+ - 当不满足构建条件时,退化为默认的Binary Index
+
+
+### ByConity:基于云原⽣架构的开源实时数仓系
+
+clickhouse痛点
+- Shared Nothing架构
+ - 运维困难:扩缩容、读写分离、资源隔离困难
+ - 资源浪费:存储和计算⽆法独⽴扩容、弹性伸缩
+- 事务⽀持缺失
+ - 不满⾜对数据⼀致性要求⾼的场景
+ - 提⾼了使⽤和运维成本
+ - 复杂查询性能差(如多表Join)
+
+架构
+
+设计考虑
+
+- 需要统⼀的元信息管理系统
+- 分布式⽂件系统⼤多数存在元信息管理压⼒问题
+- 分布式统⼀存储系统⼤多不⽀持rewrite,⼀些对象存储系统甚⾄不⽀持append
+- 分布式对象存储系统⼤多move代价都⽐较⾼
+- io latency通常情况对⽐本地⽂件系统下都存在增加的情况
+
+数据缓存
+
+- ⼀致性hash分配parts
+- 热数据worker节点⾃动缓存
+- 改进bucket-lru算法
+- 避免数据reshuffling
+
+ByConity事务
+- 隐式(开源)和显示事务(待开源)
+- Read Committed 隔离级别,写不阻塞读
+- 两阶段提交实现,⽀持海量数据的原⼦写⼊
+- 具备灵活可控的并发控制的功能
+
+
+中⼼授时服务TSO(TimeStamp Oracle)
+- Timestamp ordering
+- 创建事务:为事务分配开始时间t_s
+- 提交事务:为事务分配提交时间t_c
+- 可⻅性判断:对t_s为TS的事务,能读到所有已提交且t_c < TS的事务数据
+
+说的东西还是非常多的,直接看pdf比我复述直观
+
+
+https://wanghenshui.github.io/pdf/byconity.pdf
\ No newline at end of file
diff --git a/_posts/2024-07-19-arch-summit2023-sh.md b/_posts/2024-07-19-arch-summit2023-sh.md
new file mode 100644
index 0000000..c3ec75f
--- /dev/null
+++ b/_posts/2024-07-19-arch-summit2023-sh.md
@@ -0,0 +1,193 @@
+---
+layout: post
+title: ArchSummit上海2023 PPT速览
+categories: [database]
+tags: [mysql]
+---
+
+ppt在这里 https://www.modb.pro/topic/640976
+
+
+
+### 云原生存储CubeFS在大数据和机器学习的探索和实践
+
+主要是提了个缓存加速
+
+- 元数据缓存:缓存inode和dentry信息,可以大量减少fuse客户端的lookup和open读文件的开销。
+- 数据缓存:数据缓存可以利用GPU本地云盘,无需申请额外存储资源,在保证数据安全同时提升效率。
+
+
+其他的就是常规的东西,raft和分布式文件系统相关优化(raft,存储纠删码,NWR,攒批写(小文件聚集写)等等)
+
+
+### 字节跳动时序存储引擎的探索和实践
+
+Workload分析和对应的挑战
+- 写远大于读,写入量非常大
+ - 线性扩展
+- 查询以分析为主,点查为辅
+ - 面向分析查询优化的同时兼顾点查性能
+- 超高维度
+ - 在单机亿级活跃维度情况下依然保证写入和查询性能
+- Noisy Neighbours
+ - 租户间的隔离
+ - 防止个别超大metric影响整体可用性
+
+
+
+
+如何线性扩展
+- 二级一致性Hash分区
+ - 先按照Metric做一次Hash分区
+ - 再按照序列做第二次Hash分区
+- Metrics级别的动态分区
+ - 不同维度的Metric可以拥有不同的二级Hash分片数
+
+
+
+
+编码优化
+
+观察数据特征
+- 大部分序列拥有相同的TagKeys 每个序列的所有TagKeys称为TagKeySet
+ - 直接编码整个TagKeySet
+ - TagSet中只存储一个id
+ - Encode时只做一次Hash
+
+Datapoint Set
+- RingBuffer用于处理乱序写入,存储原始数据点
+ - 数据点划出RingBuffer后,写入TimeBuffer和ValueBuffer
+ - TimeBuffer使用delta of delta压缩
+ - ValueBuffer使用Gorilla压缩
+- 乱序写入优化
+ - Question:
+ - RingBuffer容量有限
+ - Gorilla压缩算法只能append
+ - Answer:
+ - 反向Gorilla压缩,能够Popback
+ - 乱序很久的点不写入ValueBuffer,查询时合并
+
+查询优化
+
+- 支持所有Filter下推,减少数据传输量
+ - 包括wildcard和regex,利用索引加速
+- 自适应执行
+ - 根据结果集大小动态选择查询索引或者Scan
+- 并行Scan
+- 轻重查询隔离
+ - 轻重查询使用不同的线程池
+ - 根据维度和查询时长预估查询代价
+
+
+Khronos存储引擎
+- 降低内存使用,更低成本地支持单实例高维度数据
+- 数据全部持久化,提升数据可靠性
+- 保持高写入吞吐、低查询时延,提供高效的扫描,同时支持较好的点查性能
+- 能够以较低的成本支持较长时间的存储,提供较高的压缩率以及对机械盘友好的存储格式
+- 兼容Tsdc,最低成本接入现有集群
+
+
+
+
+- 每个Shard内部都是一棵独立的LSMT
+ - 一共分为三层
+ - 每一层都有一个虚拟的时间分区
+- sstable文件不会跨时间分区
+- Compaction在分区内调度
+- 乱序写入的场景减少写放大
+
+Memtable
+
+- 基本延用了Tsdc的内存结构
+- SeriesMap采用有序结构,Compaction依赖Series有序
+- SeriesKey = SeriesHashCode + TagSet
+ - 节省比较开销
+ - 快速拆分range,方便做分区内并行查询
+
+SST
+
+- 由于Metric数量非常多,所以将多个Metric数据混合存储在一个文件中
+- 文件尾部有Metric Index指向Metric的位置
+ - MetricIndex是一个Btree
+ - Page内部使用前缀压缩
+
+
+Metric格式
+
+- 类Parquet格式,行列混存
+- 每行一个序列
+- 大Metric会划分为多个SeriesGroup,减少内存占用
+- 字典/Raw/Bitshuffle encoding
+- Page索引加速查询
+
+Flush优化
+- 大量小Metric
+ - 存储格式Overhead大
+ - write次数太多,性能差
+- BufferWrite
+ - 预先Fallocate一段空间然后mmap
+ - 数据通过mmap写入,减少syscall
+- PaxLayout
+ - 所有Column写在一个Page
+ - 减少IO次数,减少元数据开销
+
+SSTable查询优化
+- 延迟投影
+ - 先读取带过滤条件的列
+ - 每过滤一个列都缩小下一个列的读取范围
+ - 最后投影非过滤列
+ - 数量级性能提升
+- PageCache
+ - Cache中缓存解压后的Page,避免重复的解压和CRC校验
+ - 更进一步,直接Cache PageReader对象,节省构造开销
+
+
+他们的工作做的确实挺多
+
+### 云原生数据库的架构演进
+
+就是回顾架构设计
+
+**主从**
+
+- 架构痛点
+ - 弹性升降配困难 确实。规格钉死
+ - 只读扩展效率低延迟高 -> 这个可能就要根据一致性放松一点了
+ - 存储瓶颈 -> 路由分裂啊
+- 业务痛点
+ - 提前评估规格资源浪费 -> 那就从最小集群慢慢扩容呗?
+ - 临时峰值稳定性问题 -> 确实,只好限流熔断/backup request
+ - 读扩展提前拆库 路由分裂确实存在运营压力
+ - 容量拆库 这个也是要结合路由分裂,存在运营压力/资源浪费
+
+**存算分离一写多读**
+
+- 架构痛点
+ - 弹性升降配 要断链
+ - 无法无感知跨机弹性?
+ - 只读节点延迟问题
+- 业务痛点
+ - 业务不接受闪断
+ - 容量规划/突发流量处理?和主从一样没有解决
+ - 电商/微服务不接受读延迟
+ - 预留水位 资源浪费
+
+**阿里第二代serverless设计**
+
+- 无感弹性变更规格/跨机迁移
+- 高性能全局一致性
+- 跨机serverless
+- 动态扩缩RO
+
+- 存储资源降低80%,计算资源降低45%,TCO降低 40%
+- 共享存储,RO无延迟
+- 秒级扩缩容RW/RO,异常恢复速度快
+- 运维工作量低
+- 实现了一站式聚合查询和分析,提升数据向下游传送效率
+- 秒级增删节点
+- 透明智能代理实现智能读写分流
+- 全局binlog向下游提供增量数据的抽取
+- 全局RO支持汇聚业务,ePQ有效提高业务查询性能
+- 用户通过多节点进行有效的资源隔离
+
+其实阿里这么玩的前提是有一个资源池管理
\ No newline at end of file
diff --git a/assets/antkv-li1.png b/assets/antkv-li1.png
new file mode 100644
index 0000000..fc11d5a
Binary files /dev/null and b/assets/antkv-li1.png differ
diff --git a/assets/antkv-li2.png b/assets/antkv-li2.png
new file mode 100644
index 0000000..4b7fb66
Binary files /dev/null and b/assets/antkv-li2.png differ
diff --git a/assets/antkv-li3.png b/assets/antkv-li3.png
new file mode 100644
index 0000000..7791dc8
Binary files /dev/null and b/assets/antkv-li3.png differ
diff --git a/assets/bytedance-khronos1.png b/assets/bytedance-khronos1.png
new file mode 100644
index 0000000..2413df8
Binary files /dev/null and b/assets/bytedance-khronos1.png differ
diff --git a/assets/bytedance-tsdb1.png b/assets/bytedance-tsdb1.png
new file mode 100644
index 0000000..6946166
Binary files /dev/null and b/assets/bytedance-tsdb1.png differ
diff --git a/assets/bytedance-tsdb2.png b/assets/bytedance-tsdb2.png
new file mode 100644
index 0000000..612a1c1
Binary files /dev/null and b/assets/bytedance-tsdb2.png differ
diff --git a/assets/bytedance-tsdc.png b/assets/bytedance-tsdc.png
new file mode 100644
index 0000000..270067a
Binary files /dev/null and b/assets/bytedance-tsdc.png differ