跳至主要內容
Elasticsearch 架构

Elasticsearch 架构

存储流程

ES 存储数据的流程可以从三个角度来阐述:

  • 集群的角度来看,数据写入会先路由到主分片,在主分片上写入成功后,会并发写副本分片,最后响应给客户端。
  • 分片的角度来看,数据到达分片后需要对内容进行格式校验、分词处理然后再索引数据。
  • 节点的角度来看,ES 数据持久化的步骤可归纳为:Refresh、写 Translog、Flush、Merge。

钝悟...大约 13 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch存储索引
数据结构与数据库索引

数据结构与数据库索引

关键词:链表、数组、散列表、红黑树、B+ 树、LSM 树、跳表

引言

数据库是“按照 数据结构 来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

——上面这句定义对数据库的定义来自百度百科。通过这个定义,我们也能明显看出数据结构是实现数据库的基石。

从本质来看,数据库只负责两件事:读数据、写数据;而数据结构研究的是如何合理组织数据,尽可能提升读、写数据的效率,这恰好是数据库的核心问题。因此,数据结构与数据库这两个领域有非常多的交集。其中,数据库索引最能体现二者的紧密关联。


钝悟...大约 20 分钟数据库数据库综合数据库综合数据结构索引
Elasticsearch 存储

Elasticsearch 存储

逻辑存储设计

Elasticsearch 的逻辑存储被设计为层级结构,自上而下为:

index -> type -> mapping -> document -> field

钝悟...大约 23 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch存储索引
MongoDB 索引

MongoDB 索引

MongoDB 索引简介

索引的作用

MongoDB 在 collection 数据级别上定义索引

索引通常能够极大的提高查询的效率。如果没有索引,MongoDB 在读取数据时必须扫描 collection 中的每个 document 并选取那些符合查询条件的记录。

这种扫描全集合的查询是非常低效的,特别是在处理大量的数据时。查询可能要花费几十秒甚至几分钟,这种性能开销是不可接受的。


钝悟...大约 2 分钟数据库文档数据库MongoDB数据库文档数据库MongoDB索引
Mysql 索引

Mysql 索引

索引是提高 MySQL 查询性能的一个重要途径,但过多的索引可能会导致过高的磁盘使用率以及过高的内存占用,从而影响应用程序的整体性能。应当尽量避免事后才想起添加索引,因为事后可能需要监控大量的 SQL 才能定位到问题所在,而且添加索引的时间肯定是远大于初始添加索引所需要的时间,可见索引的添加也是非常有技术含量的。

接下来将向你展示一系列创建高性能索引的策略,以及每条策略其背后的工作原理。但在此之前,先了解与索引相关的一些算法和数据结构,将有助于更好的理解后文的内容。


钝悟...大约 23 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql索引