DB 论文阅读:关系型数据库在 ANNS 上为什么慢? 本文是 Are There Fundamental Limitations in Supporting Vector Data Management in Relational Databases? A Case Study of PostgreSQL 的论文阅读记录,感兴趣的读者请参阅原论文了解更多细节。 该论文的通讯作者是 Jianguo Wang @ Purdue ,刚好也是 2024-08-07 数据库 > 读论文 #近似最近邻 #ANN #向量相似度检索 #PASE #Faiss
Git 实用命令 最近实习在公司内接触到了 Git 协作开发中一些比较实用的命令,在此记录供以后参考。 1. 多分支提交 在开发新特性或者进行 bug 修复时,可能会涉及到多个版本,因此我们需要将代码提交到多个分支。这时需要使用 git cherry-pick 命令: 12$ git checkout target-branch$ git cherry-pick commit-hash 其中 2024-08-04 工具 #Git
Dolphin DB 实习面经 前言: 最近在实习,博客很久没更新了。把一直想写却偷懒没写的 Dolphin DB 面试经历整理出来,以实现博客月更目标。本文同步更新于知乎:来聊聊大家在DolphinDB的面试感受? - zeta的回答。 先介绍下本人 BG,25 届科班硕,投递的岗位是内核开发实习生。今年五月开始陆续投递了几家公司的实习,在室友的推荐下投递了 Dolphin DB。DDB 给我留下的第一印象 2024-07-27 一支芦苇 #面试
GoogleTest 与 Benchmark 库使用:以位图 countOnes 函数为例 单元测试与性能测试都是我们实际进行项目开发中常见的需求,一个优秀的库能够帮助我们高效地完成上述需求,专注于项目本身逻辑的开发,而不是额外花费精力于单元测试库和性能测试库的编写。就 C++ 而言,最常用的单元测试和性能测试库应该就是 Google 开源的 GoogleTest 和 Benchmark 库了,二者源代码都可在 GitHub 获取。 本文中,我们以计算一块连续内存中的位 1 的数量 2024-06-30 工具 #GoogleTest #Benchmark #bitmap #countOnes
LevelDB 源码阅读三:工具函数一览 前面两篇文章,我们分别介绍了 LevelDB 的部分基础数据结构和 LevelDB 对操作系统功能的封装,本文我们继续按照自底向上的原则,来看 util 目录下的我们尚未阅读的源代码。涉及的源文件包括: util/arena.h 和 util/arena.cc util/coding.h 和 util/coding.cc util/crc32c.h 和 util/crc32c.cc 2024-06-14 数据库 > 读源码 #LevelDB
LevelDB 源码阅读二:操作系统接口封装 本文继续介绍 LevelDB 源码,重点是 LevelDB 中对操作系统相关接口的封装,也即 Env 接口及相关实现类。本文涉及的相关源码路径如下: include/leveldb/env.h util/env.cc util/posix_logger.h util/env_posix.cc 1 env.h 在 include/leveldb/env.h 源文件中,定义了 2024-06-03 数据库 > 读源码 #LevelDB #单例模式
LevelDB 源码阅读一:基础数据结构 继上文搭建完 LevelDB 调试环境后,我们开始阅读源码。本文介绍 LevelDB 中最基础的一些数据结构,按照源文件组织的层次结构,自底向上阅读源码。本文涉及的主要源代码包括以下文件: include/leveldb/export.h include/leveldb/slice.h port/thread_annotations.h port/port_stdcxx.h por 2024-05-29 数据库 > 读源码 #LevelDB #设计模式
LevelDB 调试环境搭建 LevelDB 是知名的 C++/数据库/K-V 存储/LSM Tree 相关的项目,由 Google 的 Jeffrey Dean 等知名大牛编写。阅读源码是学习提升的必经之路,这条道路上的第一个障碍就是如何把代码跑起来,并自己上手运行、调试。本文以 LevelDB 为例,介绍如何搭建 LevelDB 的调试环境,为后续阅读源码做好铺垫工作。 本文的环境为 Linux + VS Cod 2024-05-25 数据库 > 读源码 #LevelDB
重学操作系统:内存虚拟化 内存是操作系统需要管理的另一重要资源。同管理 CPU 类似,操作系统在管理物理内存时想要达到以下目的: 共享:多个进程可以同时使用物理内存,每个进程都感觉自己在独占内存空间。 安全:共享带来的另一个问题就是安全,操作系统要隔离不同进程的内存访问,确保它们访问的是属于进程本身的物理内存,而不可以随意读写其它进程的内存空间。 高效:尽可能减少时间空间资源的占用,以更高效的方式管理内存。 2024-05-24 操作系统 #内存虚拟化 #内存管理 #LRU
从 BusTub 看 Architecture of a Database System CMU 15-445/645 课程对应的项目 BusTub 以及数据库领域的经典综述论文 Architecture of a Database System 都可以说是入门数据库的必备材料。BusTub 通过几个 Project,让我们对数据库的缓冲区管理、索引、执行引擎、事务控制等关键模块有相对深入的了解;Architecture of a Database System 则介绍了数据 2024-05-13 数据库 #bustub #DBMS #CMU 15-445/645