Elasticsearch源码解析与优化实战-Elasticsearch介绍

基本概念和原理Elasticsearch是实时的分布式搜索分析引擎,内部使用Lucene做索引与搜索。何谓实时?新增到ES中的数据在1秒后就可以被检索到,这种新增数据对搜索的可见性称为准实时搜索。分布式意味着可以动态调整集群规模,弹性扩容,而这一切操作起来都非常简便,用户甚至不必了解集群原理就可以实

MySQL复制技术

复制技术的演进实际上有两条路线,一条路线为基于数据安全的复制技术演进;另一条路线为基于复制效率的复制技术演进。复制格式概述接触过MySQL的朋友都或多或少地知道,MySQL的复制是基于binlog(二进制日志)实现主从实例之间的数据同步的。binlog的格式可以分为三种,从某种意义上来说,也可以说对

MySQL性能优化

InnoDB存储引擎体系结构结合上图,我们可以看到,InnoDB存储引擎体系结构主要包含如下组件,分为两大部分。1、内存结构Buffer Pool:缓冲池是InnoDB在启动时分配的一个内存区域,用于InnoDB在访问数据时缓存表和索引数据。利用缓冲池,可以合并一些对经常访问的数据的操作,直接从内存

Mybatis技术内幕

日志在Java开发中常用的日志框架有Log4j、Log4j2、Apache Commons Log、java.util.logging、slf4j等,这些工具对外的接口不尽相同。为了统一这些工具的接口,Mybatis定义了一套统一的日志接口供上层使用,并为上述常用的日志框架提供了相应的适配器。适配器

Redis设计与实现-集群

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。节点一个Redis集群通常由多个节点组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,我们必须将各个独立的节点连接起

Redis设计与实现-RDB持久化

Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。因为Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不想办法将存储在内存中的数据库状态保存到

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