
DuckDB 的 Adaptive Radix Tree 源码分析
ART 索引是由 Viktor Leis, Alfons Kemper, Thomas Neumann 等人提出,它相比于 B+ 树的主要区别在于 B+ 树是面向磁盘的,而 ART 则是面向内存的,即 ART 索引是需要全部加载到内存中
ART 索引是由 Viktor Leis, Alfons Kemper, Thomas Neumann 等人提出,它相比于 B+ 树的主要区别在于 B+ 树是面向磁盘的,而 ART 则是面向内存的,即 ART 索引是需要全部加载到内存中
为了使不同的文件系统共存, Linux 内核在用户层与具体文件 系统之前增加了虚拟文件系统中间层,它对复杂的系统进行抽象化,对用户提供了统一的文件操作接口。无论是 ext2/3/4、FAT32、NTFS 存储的文件,还是 /proc、/sys 提供 的信息还是硬件设备,无论内容是在本地还是网络上,都使用一样的 open、read、write 来访问,使得 “一切皆文件” 的理念被实现,这也正是软件中间层的魅力。
要将 4 个 SSD 组成一个 All-flash Array,可以通过 RAID 技术来完成,常见的方式是使用 Linux 软件 RAID(mdadm)来配置一个 RAID 阵列。这些 SSD 可以通过不同的 RAID 模式(如 RAID 0、RAID 1、RAID 5、RAID 10 等)组合在一起,具体选择哪种 RAID 取决于你对性能、冗余和容错的需求。
在使用 libpmemobj 库时,不需要直接使用 mmap。libpmemobj 提供了高级的 API 来管理持久内存池和分配内存。mmap 通常用于更底层的内存映射操作,而 libpmemobj 封装了这些操作,使得管理持久内存更加方便和安全。