道阻且长,行则将至

Scroll Down

Redis设计与实现-数据库

服务器中的数据库Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组中的每个项都是一个redis.h/redisDb结构,每个redisdb结构代表一个数据库。dbnum属性的值由服务器配置的database选项决定,默认情况下,该选项的值为

Redis设计与实现-对象

Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面介绍的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来

Redis设计与实现-数据结构与对象

简单动态字符串Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。在Redis里面,C字符串只会作为字符串字面量(st

Zookeeper阅读笔记-Zookeeper技术内幕

系统模型我们首先将从数据模型、节点特性、版本、Watcher和ACL五方面来讲述Zookeeper的系统模型。数据模型Zookeeper的试图结构和标准的Unix文件系统非常类似,但没有引入传统文件系统中目录和文件等相关概念,而是使用了其特有的数据节点概念,我们称之为ZNode。ZNode点是Zoo

Zookeeper阅读笔记-Zookeeper与Paxos

Zookeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,Zookeeper并没有直接采用Paxos算法,而是采用了一种被称为ZAB(Zookeeper Atomic Broadcast)的一致性协议。初

Zookeeper阅读笔记-一致性协议

2PC与3PC在分布式系统中,每一个机器节点虽然能够明确地知道自己在进行事务操作过程中的结果是成功或失败,但却无法直接获取到其他分布式节点的操作结果。因此,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID特性,就需要引入一个称为协调者(Coordinator)的组件来统一调度所

InnoDB存储引擎笔记-事务

事务的实现事务的隔离性由锁来实现的。原子性、一致性、持久性通过数据库的redo log和undo log来完成的。redo log称为重做日志,用来保证事务的原子性和持久性。undo log用来保证事务的一致性。redo和undo的作用可以视为是一种恢复操作,redo恢复提交事务修改的页操作,而un

InnoDB存储引擎笔记-锁

开发多用户,数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另外一方面还要确保每个用户能以一致的方式读取和修改数据。为此就有了锁(locking)机制,同时这也是数据库系统区别于文件系统的一个关键特性。什么是锁锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对

InnoDB存储引擎笔记-索引与算法

索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会收到影响。而索引太少,对查询性能又会产生影响。要找到一个合适的平衡点,这对应用程序的性能至关重要。InnoDB存储引擎索引概述InnoDB存储引擎支持以下几种常见的索引:B+树索引全文索引哈希索引前文已经提到过,InnoDB存储

InnoDB存储引擎笔记-表

本章将从InnoDB存储引擎表的逻辑存储及实现开始进行介绍,然后将重点分析表的物理存储特征,即数据在表中是如何组织和存放的。简单来说,表就是关于特定实体的数据集合,这也是关系型数据库模型的核心。索引组织表在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(inde