关系型数据库索引设计原则

在关系型数据库系统中,不合适的索引是造成性能低下的最常见原因。普遍的情况包括没有足够多的索引、一些 SELECT 语句可能没有有效的索引、索引列的顺序不对等等。一些开发人员认为如果一个 SQL 语句使用了索引,那么这个语句得查询性能就会得到很大的提升,而且专业的索引设计应该由 DBA 来完成。但只要掌握数据库内部对任务的处理方式,我们也可以设计出高效的索引。

分布式一致性协议 Raft 原理

Raft 是一种基于消息传递通信模型、用来管理日志复制的一致性协议,它允许一组机器像一个整体一样工作,即使其中的一些机器出现错误也能正常提供服务。在 Raft 被提出来之前,Paxos 协议是第一个被证明的一致性算法,但是 Paxos 的原理理解与工程实现都很困难。Raft 是 Paxos 的一种实现方式,目标是提供更好理解的算法,并被证明可以提供与 Paxos 相同的容错性以及性能。

加密哈希算法的实现原理

哈希算法(Hash function)又称散列算法,是一种从任何数据中创建小的数字“指纹”的方法。哈希算法只需满足把一个散列对象映射到另一个区间的需求,因此根据使用场景的不同,可将哈希算法分为加密哈希与非加密哈希。

2019 年总结:教训、反思、新尝试

将年终总结以“教训、反思、新尝试”为主题未免感觉有些小题大作,但这也是我在 2019 年的心路历程。在这一年里除了工程能力上的提升,还在个人学习方式、团队协同工作方面进行了一些思考,对上半年比赛过程中产生的教训进行了反思,希望在未来的工作中少犯同类的错误。

Redis RDB 与 AOF 持久化 · Analyze

Redis 是内存数据库,将数据保存在内存中,以换取更快的读取速度。但由于内存是易失性存储器,一旦进程退出或者硬件设备出现故障,Redis 存储的数据可能就会丢失。为了解决数据持久化问题,Redis 提供了 RDB 快照与 AOF 写操作记录两种方案,这篇文章就这两种分案的实现方式进行分析。

Redis 慢查询日志 · Analyze

Redis 的慢查询日志功能用来记录执行时间超过给定时长的命令请求,我们可以利用这个功能分析和优化查询速度。本篇文章将会对 Redis 的慢查询日志功能的实现原理进行分析。

Redis RESP 通信协议 · Analyze

Redis 是 client-server 架构的软件,了解 Redis 客户端与服务端的通信原理,可以更好地理解 Redis 的工作方式。Redis 客户端和服务端之间使用 RESP(REdis Serialization Protocol) 二进制安全文本协议进行通信,该协议是专为 Redis 设计的,但由于该协议实现简单,也可以将其用于其他的项目中。