B+树

前言 首先,为什么要总结B树、B+树的知识呢?最近在学习数据库索引调优相关知识,数据库系统普遍采用B-/+Tree作为索引结构(例如mysql的InnoDB引擎使用的B+树),理解不透彻B树,则无法理解数据库的索引机制;接下来将用最简洁直白的内容来了解B树、B+树的数据结构 ...

2023-10-19 10:30 · 11 min · 5442 words · Reid

分布式事务

分布式事务初探 分布式事务主要有两部分组成。第一个是并发控制(Concurrency Control)第二个是原子提交(Atomic Commit)。 之所以提及分布式事务,是因为对于拥有大量数据的人来说,他们通常会将数据进行分割或者分片到许多不同的服务器上。假设你运行了一个银行,你一半用户的账户在一个服务器,另一半用户的账户在另一个服务器,这样的话可以同时满足负载分担和存储空间的要求。对于其他的场景也有类似的分片,比如说对网站上文章的投票,或许有上亿篇文章,那么可以在一个服务器上对一半的文章进行投票,在另一个服务器对另一半进行投票。 ...

2023-10-18 14:54 · 36 min · 17701 words · Reid

CPU缓存基础知识

CPU缓存 CPU缓存(CPU Cache)的目的是为了提高访问内存(RAM)的效率,这虽然已经涉及到硬件的领域,但它仍然与我们息息相关,了解了它的一些原理,能让我们写出更高效的程序,另外在多线程程序中,一些不可思议的问题也与缓存有关。 ...

2023-10-17 11:11 · 10 min · 4959 words · Reid

Zookeeper一致保证

Zookpeer 的先行一致性介绍 Zookeeper的确有一些一致性的保证,用来帮助那些使用基于Zookeeper开发应用程序的人,来理解他们的应用程序,以及理解当他们运行程序时,会发生什么。与线性一致一样,这些保证与序列有关。Zookeeper有两个主要的保证,它们在论文的2.3有提及。 ...

2023-10-11 18:00 · 9 min · 4217 words · Reid

知识图谱存储技术

RDF和属性图 首先来介绍 RDF 和属性图。大家知道世界万物是普遍联系的,Internet 带来了信息的连通,IoT 带来了设备的连通,像微信、微博、抖音、快手这些 APP 带来了人际关系的连通。随着社交、零售、金融、电信、物流等行业的快速发展,当今社会支起了一张庞大而复杂的关系网,在人们的生产和生活过程中,每时每刻都产生着大量的数据。随着技术的发展,我们对这些数据的分析和使用也不再局限于从统计的角度进行一些相关性的分析,而是希望从关联的角度揭示数据的一些因果联系。这里的关联,指的是相互连接的 connectivity,而不是统计意义上的 correlation。 ...

2023-08-25 11:38 · 12 min · 5910 words · Reid

RocksDB Sstable

概述 如我们之前提到的,leveldb是典型的LSM树(Log Structured-Merge Tree)实现,即一次leveldb的写入过程并不是直接将数据持久化到磁盘文件中,而是将写操作首先写入日志文件中,其次将写操作应用在memtable上。 ...

2023-03-16 19:35 · 15 min · 7394 words · Reid

RocksDB

简介 RocksDB 是由 Facebook 基于 LevelDB 开发的一款提供键值存储与读写功能的 LSM-tree 架构引擎。用户写入的键值对会先写入磁盘上的 WAL (Write Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类存储引擎更高的写吞吐。 ...

2023-03-16 19:35 · 8 min · 3611 words · Reid

MySql高频面试问题

本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水。 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面试文章,发现其中的一些问题自己也回答不好,虽然知识点大部分都知道,但是无法将知识串联起来。 ...

2023-03-16 19:35 · 20 min · 9777 words · Reid

MySql索引介绍

什么是索引,索引的作用 当我们要在新华字典里查某个字(如「先」)具体含义的时候,通常都会拿起一本新华字典来查,你可以先从头到尾查询每一页是否有「先」这个字,这样做(对应数据库中的全表扫描)确实能找到,但效率无疑是非常低下的,更高效的方相信大家也都知道,就是在首页的索引里先查找「先」对应的页数,然后直接跳到相应的页面查找,这样查询时候大大减少了,可以为是 O(1)。 ...

2023-03-16 19:35 · 18 min · 8822 words · Reid

MySql索引优化

数据库表结构: 1 2 3 4 5 6 7 8 9 create table user ( id int primary key, name varchar(20), sex varchar(5), index(name) )engine=innodb; select id,name where name='shenjian' select id,name,sex where name='shenjian' 多查询了一个属性,为何检索过程完全不同? 什么是回表查询? ...

2023-03-16 19:35 · 4 min · 1678 words · Reid