├── .nojekyll ├── INTRODUCTION.md ├── 02~关系型数据库 ├── README.md ├── 00~RDB 基础 │ └── README.link ├── MySQL │ └── README.link ├── PostgreSQL │ └── README.link ├── .DS_Store ├── 99~参考资料 │ ├── CMU 15-445|645 学习笔记 │ │ └── README.md │ └── 《数据库内核杂谈》 │ │ ├── README.md │ │ └── 01.实现一个基本功能的数据库.md ├── Sqlite │ ├── 99~参考资料 │ │ └── 2020-《Lets Build a Simple Database》 │ │ │ ├── README.md │ │ │ └── 01~简介和设置 REPL.md │ └── SQLite 引擎 │ │ └── 99~参考资料 │ │ └── 2024~SQLite Index Visualization: Structure.md └── SQLServer │ └── README.md ├── 03~键值型数据库 ├── Redis │ ├── 02~工程实践 │ │ ├── 自定义脚本.md │ │ └── 持久化 │ │ │ ├── RDB 机制.md │ │ │ ├── README.md │ │ │ └── AOF 机制.md │ ├── 04~架构机制 │ │ ├── README.md │ │ ├── 命令执行.md │ │ ├── 深入事件循环.md │ │ ├── 单线程架构.md │ │ ├── 多进程架构.md │ │ └── 客户端通信.md │ ├── 01~数据操作 │ │ ├── 事务与管道.md │ │ ├── 其他类型.md │ │ ├── README.md │ │ ├── 基础类型.md │ │ └── 键基础.md │ ├── .DS_Store │ ├── 06~从零实现 KV 数据库 │ │ └── 基于哈希索引的 KV 数据库.md │ ├── 03~集群 │ │ ├── README.md │ │ ├── Redis 分片.md │ │ ├── 哨兵模式 │ │ │ └── README.md │ │ └── 集群模式 │ │ │ └── README.md │ ├── README.md │ ├── 05~KeyDB │ │ ├── README.md │ │ └── 架构机制.md │ └── 99~参考资料 │ │ └── 2024~ByteByteGO~How Redis Architecture Envolves?.md ├── BoltDB │ └── README.md ├── RocksDB │ └── READNE.md ├── .DS_Store └── LevelDB │ ├── 架构机制.md │ ├── README.md │ └── 部署配置.md ├── 05~搜索引擎 ├── MeiliSearch │ └── README.md ├── ElasticSearch │ ├── 架构原理 │ │ └── README.md │ ├── 02~SDK 使用 │ │ └── Java.md │ ├── .DS_Store │ ├── README.md │ ├── 集群与高可用 │ │ └── README.md │ └── 01~基本操作 │ │ ├── 索引操作.md │ │ └── 数据检索.md ├── .DS_Store ├── README.md └── 搜索引擎原理 │ └── 99~参考资料 │ └── 2024~A search engine in 80 lines of Python.md ├── 06~时序数据库 ├── Prometheus │ ├── SDK │ │ ├── Go.md │ │ └── Java.md │ ├── 快速开始 │ │ ├── 集群部署.md │ │ ├── README.md │ │ └── 单机部署.md │ ├── PTSDB │ │ ├── 文件格式.md │ │ ├── 存储.md │ │ └── REAMDE.md │ ├── Alert │ │ ├── README.md │ │ ├── Alertmanager.md │ │ └── Alerting Rules.md │ ├── PromQL │ │ ├── 聚合操作.md │ │ ├── README.md │ │ ├── Recording Rules.md │ │ ├── 数据查询.md │ │ ├── 内置函数.md │ │ ├── HTTP API.md │ │ └── 操作符.md │ ├── Exporter │ │ └── README.md │ └── README.md ├── .DS_Store ├── AliyunTSDB │ └── README.md ├── InfluxDB │ ├── 部署配置.md │ ├── README.md │ ├── 数据模型.md │ └── 存储引擎.md ├── OpenTSDB │ ├── README.md │ └── 系统设计.md ├── 系统设计.md ├── 时序对比.md ├── README.md └── TimescaleDB │ ├── README.md │ └── 系统设计.md ├── 07~图数据库 ├── Neo4j │ └── README.md ├── .DS_Store ├── 系统设计 │ └── 图数据库案例.md ├── 查询语言 │ └── README.md └── README.md ├── 10~分布式数据库 ├── TiDB │ ├── TiFlash │ │ └── README.md │ ├── TiKV │ │ ├── 存储 │ │ │ ├── README.md │ │ │ ├── Raft 优化.md │ │ │ └── 存储架构.md │ │ └── 副本与分片.md │ ├── 99~参考资料 │ │ └── 2017-三篇文章了解 TiDB 技术内幕.md │ └── README.md ├── .DS_Store ├── README.md ├── Aurora │ └── README.md ├── F1 │ └── README.md └── 系统设计 │ └── README.md ├── .DS_Store ├── 01~数据库基础 ├── .DS_Store ├── 99~参考资料 │ ├── tontinton~Database Fundamentals │ │ └── README.md │ └── 2024~A Primer on Databases.md ├── 数据库分类 │ ├── README.md │ └── 数据模型 │ │ ├── 时序模型.md │ │ ├── 文档模型.md │ │ ├── README.md │ │ ├── 关系模型.md │ │ └── 查询语言.md ├── 数据库简史 │ ├── README.md │ ├── 02.DBMS.md │ ├── 04.数据库选择.md │ ├── 03.NoSQL.md │ └── 01~编年史.md ├── 数据库性能评测 │ └── 05.性能评测.md └── README.md ├── 99~参考资料 └── 《数据库系统概论》~5th │ ├── 数据库.xmind │ ├── 03~关系模型 │ └── 关系模型.xmind │ ├── 04~关系代数 │ └── 关系代数.xmind │ ├── 07~并发控制 │ └── 并发控制.xmind │ ├── 08~查询优化 │ └── 查询优化.xmind │ ├── 01~数据库绪论 │ └── 数据库绪论.xmind │ ├── 02~数据库设计 │ └── 数据库设计.xmind │ ├── 09~完整性约束 │ └── 完整性约束.xmind │ ├── 10~数据库恢复技术 │ └── 数据库恢复技术.xmind │ ├── 06~数据库语言 SQL │ └── 数据库语言SQL.xmind │ └── 05~关系数据库设计理论 │ └── 关系数据库设计理论.xmind ├── 08~向量数据库 └── Milvus │ ├── 99~参考资料 │ └── 2022-云原生向量数据库 Milvus 介绍.md │ └── README.md ├── .gitattributes ├── .gitignore ├── 04~文档型数据库 └── 1.Mongodb │ ├── README.md │ └── 04.复制.md ├── README.md └── index.html /.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /INTRODUCTION.md: -------------------------------------------------------------------------------- 1 | # 本篇导读 2 | -------------------------------------------------------------------------------- /02~关系型数据库/README.md: -------------------------------------------------------------------------------- 1 | # 关系型数据库 2 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/02~工程实践/自定义脚本.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05~搜索引擎/MeiliSearch/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06~时序数据库/Prometheus/SDK/Go.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06~时序数据库/Prometheus/SDK/Java.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06~时序数据库/Prometheus/快速开始/集群部署.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07~图数据库/Neo4j/README.md: -------------------------------------------------------------------------------- 1 | # Neo4j -------------------------------------------------------------------------------- /10~分布式数据库/TiDB/TiFlash/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05~搜索引擎/ElasticSearch/架构原理/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03~键值型数据库/BoltDB/README.md: -------------------------------------------------------------------------------- 1 | # BoltDB 2 | -------------------------------------------------------------------------------- /03~键值型数据库/RocksDB/READNE.md: -------------------------------------------------------------------------------- 1 | # RocksDB 2 | -------------------------------------------------------------------------------- /05~搜索引擎/ElasticSearch/02~SDK 使用/Java.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10~分布式数据库/TiDB/TiKV/存储/README.md: -------------------------------------------------------------------------------- 1 | # TiKV 存储 2 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/04~架构机制/README.md: -------------------------------------------------------------------------------- 1 | # Redis 架构机制 2 | 3 | # Links 4 | -------------------------------------------------------------------------------- /02~关系型数据库/00~RDB 基础/README.link: -------------------------------------------------------------------------------- 1 | https://ng-tech.icu/books/MySQL-Series 2 | -------------------------------------------------------------------------------- /02~关系型数据库/MySQL/README.link: -------------------------------------------------------------------------------- 1 | https://github.com/wx-chevalier/MySQL-Notes 2 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/.DS_Store -------------------------------------------------------------------------------- /02~关系型数据库/PostgreSQL/README.link: -------------------------------------------------------------------------------- 1 | https://github.com/wx-chevalier/PostgreSQL-Notes -------------------------------------------------------------------------------- /03~键值型数据库/Redis/01~数据操作/事务与管道.md: -------------------------------------------------------------------------------- 1 | # 事务与管道 2 | 3 | # Transaction | 事务 4 | 5 | # Pipeline | 管道 6 | -------------------------------------------------------------------------------- /01~数据库基础/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/01~数据库基础/.DS_Store -------------------------------------------------------------------------------- /02~关系型数据库/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/02~关系型数据库/.DS_Store -------------------------------------------------------------------------------- /02~关系型数据库/99~参考资料/CMU 15-445|645 学习笔记/README.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://zhenghe.gitbook.io/open-courses/) 2 | -------------------------------------------------------------------------------- /03~键值型数据库/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/03~键值型数据库/.DS_Store -------------------------------------------------------------------------------- /05~搜索引擎/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/05~搜索引擎/.DS_Store -------------------------------------------------------------------------------- /06~时序数据库/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/06~时序数据库/.DS_Store -------------------------------------------------------------------------------- /07~图数据库/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/07~图数据库/.DS_Store -------------------------------------------------------------------------------- /10~分布式数据库/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/10~分布式数据库/.DS_Store -------------------------------------------------------------------------------- /03~键值型数据库/Redis/04~架构机制/命令执行.md: -------------------------------------------------------------------------------- 1 | # Redis 中的命令执行与处理 2 | 3 | # Links 4 | 5 | - https://draveness.me/redis-cli 6 | -------------------------------------------------------------------------------- /07~图数据库/系统设计/图数据库案例.md: -------------------------------------------------------------------------------- 1 | # 图数据库案例 2 | 3 | # Links 4 | 5 | - https://mp.weixin.qq.com/s/0v3O_JHKHOT98n86J-Wxog 6 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/03~键值型数据库/Redis/.DS_Store -------------------------------------------------------------------------------- /01~数据库基础/99~参考资料/tontinton~Database Fundamentals/README.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://tontinton.com/posts/database-fundementals/) 2 | -------------------------------------------------------------------------------- /02~关系型数据库/Sqlite/99~参考资料/2020-《Lets Build a Simple Database》/README.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://github.com/cstack/db_tutorial) 2 | -------------------------------------------------------------------------------- /05~搜索引擎/README.md: -------------------------------------------------------------------------------- 1 | # 搜索引擎 2 | 3 | ![搜索引擎示意](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230424144300.png) 4 | -------------------------------------------------------------------------------- /05~搜索引擎/ElasticSearch/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/05~搜索引擎/ElasticSearch/.DS_Store -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/数据库.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/数据库.xmind -------------------------------------------------------------------------------- /03~键值型数据库/LevelDB/架构机制.md: -------------------------------------------------------------------------------- 1 | # LevelDB 架构与机制 2 | 3 | # Links 4 | 5 | - https://blog.csdn.net/anderscloud/article/details/7182165 6 | -------------------------------------------------------------------------------- /01~数据库基础/数据库分类/README.md: -------------------------------------------------------------------------------- 1 | # 数据库分类 2 | 3 | ![ByteByteGo 数据库分类](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230619142414.png) 4 | -------------------------------------------------------------------------------- /06~时序数据库/Prometheus/PTSDB/文件格式.md: -------------------------------------------------------------------------------- 1 | # 文件格式 2 | 3 | # Links 4 | 5 | - https://github.com/prometheus/prometheus/tree/master/tsdb/docs/format 6 | -------------------------------------------------------------------------------- /08~向量数据库/Milvus/99~参考资料/2022-云原生向量数据库 Milvus 介绍.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://developer.aliyun.com/article/1065666) TODO! 2 | 3 | # 云原生向量数据库 Milvus 4 | -------------------------------------------------------------------------------- /10~分布式数据库/TiDB/99~参考资料/2017-三篇文章了解 TiDB 技术内幕.md: -------------------------------------------------------------------------------- 1 | # 三篇文章了解 TiDB 技术内幕 2 | 3 | # Links 4 | 5 | - https://pingcap.com/blog-cn/tidb-internal-2 6 | -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/03~关系模型/关系模型.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/03~关系模型/关系模型.xmind -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/04~关系代数/关系代数.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/04~关系代数/关系代数.xmind -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/07~并发控制/并发控制.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/07~并发控制/并发控制.xmind -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/08~查询优化/查询优化.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/08~查询优化/查询优化.xmind -------------------------------------------------------------------------------- /01~数据库基础/99~参考资料/2024~A Primer on Databases.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://www.generativevalue.com/p/a-primer-on-databases) 2 | 3 | # A Primer on Databases 4 | -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/01~数据库绪论/数据库绪论.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/01~数据库绪论/数据库绪论.xmind -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/02~数据库设计/数据库设计.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/02~数据库设计/数据库设计.xmind -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/09~完整性约束/完整性约束.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/09~完整性约束/完整性约束.xmind -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.xmind filter=lfs diff=lfs merge=lfs -text 2 | *.zip filter=lfs diff=lfs merge=lfs -text 3 | *.pdf filter=lfs diff=lfs merge=lfs -text 4 | -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/10~数据库恢复技术/数据库恢复技术.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/10~数据库恢复技术/数据库恢复技术.xmind -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/06~数据库语言 SQL/数据库语言SQL.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/06~数据库语言 SQL/数据库语言SQL.xmind -------------------------------------------------------------------------------- /99~参考资料/《数据库系统概论》~5th/05~关系数据库设计理论/关系数据库设计理论.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/Database-Notes/master/99~参考资料/《数据库系统概论》~5th/05~关系数据库设计理论/关系数据库设计理论.xmind -------------------------------------------------------------------------------- /10~分布式数据库/README.md: -------------------------------------------------------------------------------- 1 | # NewSQL 2 | 3 | 新型分布式数据库的管理和应用方向则集中在两个领域。第一,大数据分析相关,针对海量数据的挖掘、复杂的分析计算;第二,在线数据操作,包括分布式交易型操作、和海量数据的实时访问与高并发查询操作。一般来说,用户会根据业务场景以及对数据处理结果的期望选择不同的分布式数据库产品。 4 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/01~数据操作/其他类型.md: -------------------------------------------------------------------------------- 1 | # Geo 地理与位置信息 2 | 3 | # Links 4 | 5 | - [introducing-the-geo-api-in-redis](http://cristian.regolo.cc/2015/07/07/introducing-the-geo-api-in-redis.html) 6 | -------------------------------------------------------------------------------- /03~键值型数据库/LevelDB/README.md: -------------------------------------------------------------------------------- 1 | # LevelDB 2 | 3 | LevelDB 作为底层键值数据库,被广泛地运用在其他的 KV 数据库、时序型数据库上。 4 | 5 | # 背景分析 6 | 7 | # Links 8 | 9 | - https://mp.weixin.qq.com/s/DfCO3RCjkDmYkkMlS3msDg 10 | -------------------------------------------------------------------------------- /05~搜索引擎/搜索引擎原理/99~参考资料/2024~A search engine in 80 lines of Python.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://www.alexmolas.com/2024/02/05/a-search-engine-in-80-lines.html) 2 | 3 | # A search engine in 80 lines of Python 4 | -------------------------------------------------------------------------------- /07~图数据库/查询语言/README.md: -------------------------------------------------------------------------------- 1 | # 查询语言 2 | 3 | # Links 4 | 5 | - [2020~Graph Query Language Comparison Series #Series#](https://nebula-graph.io/en/posts/graph-query-language-comparison-cypher-gremlin-ngql/) 6 | -------------------------------------------------------------------------------- /02~关系型数据库/Sqlite/SQLite 引擎/99~参考资料/2024~SQLite Index Visualization: Structure.md: -------------------------------------------------------------------------------- 1 | ``` 2 | 原文地址:https://mrsuh.com/articles/2024/sqlite-index-visualization-structure/ 3 | ``` 4 | 5 | # SQLite Index Visualization: Structure 6 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/04~架构机制/深入事件循环.md: -------------------------------------------------------------------------------- 1 | # Redis 中的多路复用与事件循环 2 | 3 | # Links 4 | 5 | - https://draveness.me/redis-io-multiplexing 6 | - https://draveness.me/redis-eventloop 7 | - https://hellokangning.github.io/en/post/redis-internals-file-event-handling/ 8 | -------------------------------------------------------------------------------- /01~数据库基础/数据库简史/README.md: -------------------------------------------------------------------------------- 1 | # 数据库简史 2 | 3 | 在信息革命之前,对于数据的管理、存储哪有数据库的概念,其实更多地是依靠人工来进行管理。彼时在以 0 和 1 为基础的数字化时代拉开帷幕之际,对于计算机而言,从硬件角度来看,外存只有纸带、卡片、磁带等概念,而软件也尚未有完善的操作系统诞生,这个时候更多的是依靠分拣机、制表机、纪录机等工具,人工手动地记录各种完整的数据。值得一提的是,如今已经 108 岁蓝色巨头 IBM 在这个时期正是凭借着打字机、处理机、以及大规模定制企业的信息技术和业务解决方案而逐渐壮大。 4 | -------------------------------------------------------------------------------- /06~时序数据库/Prometheus/Alert/README.md: -------------------------------------------------------------------------------- 1 | # 告警和通知 2 | 3 | 作为一个监控系统,最重要的功能,还是应该能及时发现系统问题,并及时通知给系统负责人,这就是 Alerting(告警)。Prometheus 的告警功能被分成两部分:一个是告警规则的配置和检测,并将告警发送给 Alertmanager,另一个是 Alertmanager,它负责管理这些告警,去除重复数据,分组,并路由到对应的接收方式,发出报警。常见的接收方式有:Email、PagerDuty、HipChat、Slack、OpsGenie、WebHook 等。 4 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/06~从零实现 KV 数据库/基于哈希索引的 KV 数据库.md: -------------------------------------------------------------------------------- 1 | # 基于哈希索引的 KV 数据库 2 | 3 | # Links 4 | 5 | - https://mp.weixin.qq.com/s?__biz=MzU4MTgyOTk1Mw==&mid=2247483763&idx=1&sn=2e586c99dc2be4611e03fe66c7937e8c&chksm=fd40d55dca375c4bc4912fea3a5f8b308440a72c4e15ece5935dac9b4b2c1ef5e3aa38df0021&token=1990353405&lang=zh_CN#rd -------------------------------------------------------------------------------- /03~键值型数据库/Redis/03~集群/README.md: -------------------------------------------------------------------------------- 1 | # Redis 集群 2 | 3 | # Links 4 | 5 | - https://mp.weixin.qq.com/s/N8GF9ofyFKS7qDeHD5y7Yw 6 | 7 | - https://mp.weixin.qq.com/s/zJnqmZqlwYGkC8BXHwjzjw 8 | 9 | - https://blog.csdn.net/angjunqiang/article/details/81190562 10 | 11 | - https://cubox.pro/c/YT3uQR Redis专题:深入解读哨兵模式 -------------------------------------------------------------------------------- /06~时序数据库/AliyunTSDB/README.md: -------------------------------------------------------------------------------- 1 | # TSDB 2 | 3 | TSDB( Time Series and Spatial-Temporal Database, 简称 TSDB) 是一种集时序时空数据高效读写,压缩存储,实时计算能力为一体的数据库服务。可广泛应用于物联网和互联网领域,实现对设备及业务服务的实时监控,实时预测告警等等。阿里巴巴 TSDB 在集团内部孵化,聚焦于业务逐步经历了 3 个阶段的演进。 4 | 5 | - 第一阶段以 HiStore+HBase 双引擎接入 OpenTSDB 体系。 6 | - 第二阶段自研 TSDB 核心引擎(倒排+压缩+流式聚合)。 7 | - 第三阶段形成整体生态体系:边云一体,TSQL,Prometheus 兼容,时空引擎等等。 8 | -------------------------------------------------------------------------------- /01~数据库基础/数据库分类/数据模型/时序模型.md: -------------------------------------------------------------------------------- 1 | # Time Series Model | 时间序列模型 2 | 3 | 时间序列模型是我们为消息数据场景创建的新数据模型。它可以满足消息数据场景的特殊要求,保留消息顺序,海量消息存储和实时同步。 4 | 5 | - Time series ID: 唯一标识时间序列。 6 | - Time series Meta: 时间序列元数据,可以包含任何键值对属性。 7 | - Message Sequence: 它包含时间序列中的所有消息。消息按顺序存储,并根据写入顺序分配增量 ID。消息序列可以携带无限数量的消息。可以随机使用消息 ID 来定位序列内的消息,并且可以提供按升序或降序扫描。 8 | - Message Entry: 它包含消息的详细内容,可以包含任何键值对。 9 | -------------------------------------------------------------------------------- /02~关系型数据库/99~参考资料/《数据库内核杂谈》/README.md: -------------------------------------------------------------------------------- 1 | # 数据库内核杂谈 2 | 3 | 为什么要写数据库内核杂谈这个系列呢?原因很简单,我看到过很多关于如何使用某些数据库的博客,但是从来没有看到过系统介绍数据库内部的文章,所以数据库内核杂谈这个系列会深入浅出地介绍数据库系统内部各个子系统是如何工作,又是如何协作来完成复杂工作的。 4 | 5 | 整个系列不仅会覆盖所有经典系统的部分,也会跟进最新的技术趋势,例如 code gen 和 vectorized execution 等。希望通过阅读这个系列能够给读者知其然,知其所以然的感悟,如果能达到触类旁通的境界,就更好啦。 6 | 7 | # Links 8 | 9 | - 原文地址:https://www.infoq.cn/theme/46 10 | -------------------------------------------------------------------------------- /08~向量数据库/Milvus/README.md: -------------------------------------------------------------------------------- 1 | # Milvus 2 | 3 | Milvus 是一个具有分布式系统原生后端的矢量数据库。它是专门为处理索引、存储和查询 10 亿规模的矢量数据而设计的。Milvus 使用多层和多种类型的工作节点,以实现易于扩展的设计。除了使用多个单一用途的节点,Milvus 还使用分段数据,以提高索引的效率。Milvus 使用 512MB 的数据段,这些数据段在填充后不会被改变,并对其进行并行查询,以提供整个行业的最低延迟。 4 | 5 | ![High-level overview of Milvus's architecture](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/architecture_diagram_c2acfbe310.png) 6 | -------------------------------------------------------------------------------- /10~分布式数据库/Aurora/README.md: -------------------------------------------------------------------------------- 1 | # Aurora 2 | 3 | - 实践了“日志即数据库”(参考《High Performance Transactions in Deuteronomy》) 的理念。 4 | 5 | - 事务引擎和存储引擎分离。数据缓冲区提前预热。 6 | 7 | - REDO 日志从事务引擎中剥离,归并到存储引擎中。 8 | 9 | - 储存层可以有 6 个副本,多个副本之间通过 Gossip 协议可以保障数据的“自愈”能力。 10 | 11 | - 主备服务的备机可达 15 份,提供强大的读服务能力。 12 | 13 | - 持续可靠的云数据库服务能力。 14 | 15 | - 数据存储跨多个区:提供了多级别容灾能力。 16 | 17 | - 数据容灾能力:数据冗余、备份、实时恢复等多种能力集成到云服务,提高数据保障能力。 18 | -------------------------------------------------------------------------------- /06~时序数据库/InfluxDB/部署配置.md: -------------------------------------------------------------------------------- 1 | # InfluxDB 部署配置 2 | 3 | # CentOS 4 | 5 | ```sh 6 | cat <> /etc/sysctl.conf 14 | ``` 15 | 16 | ```sh 17 | # 将服务部署到 Swarm 集群中 18 | $ docker stack deploy -c $(pwd)/docker-compose.yml elk 19 | 20 | # Find the Elasticsearch service ID 21 | $ docker service ls 22 | 23 | # Scale out the service to include more replicas: 24 | $ docker service update --replicas=3 25 | ``` 26 | 27 | ## 多集群 28 | 29 | # Links 30 | 31 | - https://logz.io/blog/elasticsearch-cluster-tutorial/ 32 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/04~架构机制/单线程架构.md: -------------------------------------------------------------------------------- 1 | # Redis 单线程架构 2 | 3 | # Links 4 | 5 | - https://sctrack.sendcloud.net/track/click/eyJuZXRlYXNlIjogImZhbHNlIiwgIm1haWxsaXN0X2lkIjogMCwgInRhc2tfaWQiOiAiIiwgImVtYWlsX2lkIjogIjE2MTYxNDk0OTY4NzNfMTg3XzEyNTAzXzg5MTIuc2MtMTBfOV81NV8xMi1pbmJvdW5kMCQzODQ5MjQ1NTJAcXEuY29tIiwgInNpZ24iOiAiNTBlMzMyOTY4NTEyMGU1ZGM2NDE5YTBiMTk0ZThlZjIiLCAidXNlcl9oZWFkZXJzIjoge30sICJsYWJlbCI6ICI2MTkyMDMwIiwgInRyYWNrX2RvbWFpbiI6ICJzY3RyYWNrLnNlbmRjbG91ZC5uZXQiLCAicmVhbF90eXBlIjogIiIsICJsaW5rIjogImh0dHBzJTNBLy92aXAubWFub25nLmlvL2JvdW5jZSUzRm5pZCUzRDQ1JTI2YWlkJTNEMTg5MCUyNnVybCUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGdG91dGlhby5pbyUyNTJGayUyNTJGdnN4d2pwZiUyNm4lM0RNVE15Ljcwa3lyQmNnSXU4c0lkeWdYMThFWFFkUkVhSSIsICJvdXRfaXAiOiAiMTA2Ljc1LjIuMzIiLCAiY29udGVudF90eXBlIjogIjAiLCAidXNlcl9pZCI6IDE4NywgIm92ZXJzZWFzIjogImZhbHNlIiwgImNhdGVnb3J5X2lkIjogNjAzNDl9.html Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了? 6 | 7 | - https://cubox.pro/c/Szrm3D Redis 是单线程凭什么能支撑高并发? -------------------------------------------------------------------------------- /10~分布式数据库/TiDB/README.md: -------------------------------------------------------------------------------- 1 | # TiDB 2 | 3 | ![image](https://user-images.githubusercontent.com/5803001/51458039-bcb43900-1d8e-11e9-8bb6-9c984ffeafbd.png) 4 | 5 | 最底层 TiKV 层,是分布式数据库的存储引擎层,不只是用来存取和管理数据,同时也负责执行对数据的并行运算。在 TiKV 之上即是 TiDB 层,为分布式数据库的 SQL 引擎层,处理关系型数据库诸如连接会话管理、权限控制、SQL 解析、优化器优化、执行器等核心功能。此外,还有一个承担集群大脑角色的集中调度器,叫做“PD”,同时整体架构中还会融合一些运维管理工具,包括部署、调度、监控、备份等。 6 | 7 | TiDB 可实现自动水平伸缩,强一致性的分布式事务,基于 Raft 算法的多副本复制等重要 NewSQL 特性,并且也满足我行对于高可用、高性能、高可扩展性的要求。TiDB 部署简单,在线弹性扩容不影响业务,异地多活及自动故障恢复保障数据安全,同时兼容 MySQL 协议,使迁移使用成本降到极低。 8 | 9 | # HTAP 10 | 11 | TiDB 4.0 提供一套完备的 Hybrid transaction/analytical processing (HTAP) 解决方案,那就是 TiDB + TiFlash 。 12 | 13 | ![HTAP](https://s1.ax1x.com/2020/06/06/ty7Sr6.md.png) 14 | 15 | 简单来说,我们会在 TiDB 里面处理 OLTP 类型业务,在 TiFlash 里面处理 OLAP 类型业务,相比于传统的 ETL 方案,或者其他的 HTAP 解决方案,我们做了更多: 16 | 17 | - 实时的强一致性。在 TiDB 里面更新的数据会实时的同步到 TiFlash,保证 TiFlash 在处理的时候一定能读取到最新的数据。 18 | 19 | - TiDB 可以智能判断选择行存或者列存,以应对各种不同的查询场景,无需用户干预。 20 | -------------------------------------------------------------------------------- /01~数据库基础/数据库简史/02.DBMS.md: -------------------------------------------------------------------------------- 1 | # DBMS 2 | 3 | 后来到了 20 世纪 50 年代后期,随着磁盘、操作系统、磁芯存储器等数据存储设备的出现,新的数据处理系统迅猛发展起来。其中在操作系统中,也诞生了一种专门管理数据的软件,而它被称之为文件系统。彼时的文件系统对于企业而言,通常被视为一种存储着无数离散的对象的文件柜,不过这也实现了记录内的结构化。 4 | 5 | 20 世纪 60 年代,当计算机开始广泛应用于数据管理,以及大量信息的涌入时,业界发现传统的文件系统已经远远无法满足对于查询、存储、管理数据的需求,恰逢此时能够统一管理和共享数据的数据库管理系统(DBMS)应运而生,最终基于 DBMS,用户可以更加方便快捷地编组大量数据。1964 年前后,来自军事信息系统的工作人员创下了(Data Base)数据库一词,用以表示由分时共享计算机系统终端用户共享的数据集合,可以视作数据库概念的真正诞生。 6 | 7 | 数据库系统的萌芽出现于 60 年代。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要。能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。1961 年通用电气公司(General ElectricCo.)的 Charles Bachman 成功地开发出世界上第一个网状 DBMS 也是第一个数据库管理系统---- 集成数据存储(Integrated DataStore IDS),奠定了网状数据库的基础。 8 | 9 | 1970 年,IBM 的研究员 E.F.Codd 博士在刊物 Communication of the ACM 上发表了一篇名为"A Relational Modelof Data for Large Shared Data Banks"的论文,提出了关系模型的概念,奠定了关系模型的理论基础。1974 年,IBM 的 Ray Boyce 和 DonChamberlin 将 Codd 关系数据库的 12 条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了 SQL(Structured Query Language)语言。在很长的时间内,关系数据库(如 MySQL 和 Oracle)对于开发任何类型的应用程序都是首选,巨石型架构也是应用程序开发的标准架构。 10 | -------------------------------------------------------------------------------- /06~时序数据库/InfluxDB/README.md: -------------------------------------------------------------------------------- 1 | ![InfluxDB 架构图](https://s2.ax1x.com/2019/11/20/MWuNZQ.md.png) 2 | 3 | # InfluxDB 4 | 5 | InfluxDB 是一个由 InfluxData 开发的开源时序型数据库。它由 Go 写成,着力于高性能地查询与存储时序型数据。InfluxDB 被广泛应用于存储系统的监控数据,它还是没有额外依赖的开源时序数据库,用于记录 metrics、events,进行数据分析。 6 | 7 | # 背景特性 8 | 9 | ## 存储引擎的演进 10 | 11 | 尽管 InfluxDB 自发布以来历时三年多,其存储引擎的技术架构已经做过几次重大的改动, 以下将简要介绍一下 InfluxDB 的存储引擎演进的过程。并且 InfluxDB 的集群版已在 0.12 版就不再开源。 12 | 13 | - 版本 0.9.0 之前:基于 LevelDB 的 LSMTree 方案 14 | 15 | - 版本 0.9.0 ~ 0.9.4:基于 BoltDB 的 mmap COW B+tree 方案 16 | 17 | - 版本 0.9.5 ~ 1.2:基于自研的 WAL + TSMFile 方案(TSMFile 方案是 0.9.6 版本正式启用,0.9.5 只是提供了原型) 18 | 19 | - 版本 1.3 ~至今:基于自研的 WAL + TSMFile + TSIFile 方案 20 | 21 | InfluxDB 的存储引擎先后尝试过包括 LevelDB,BoltDB 在内的多种方案。但是对于 InfluxDB 的下述诉求终不能完美地支持: 22 | 23 | - 时序数据在降采样后会存在大批量的数据删除 => LevelDB 的 LSMTree 删除代价过高。 24 | 25 | - 单机环境存放大量数据时不能占用过多文件句柄 => LevelDB 会随着时间增长产生大量小文件。 26 | 27 | - 大数据场景下写吞吐量要跟得上 => BoltDB 的 B+tree 写操作吞吐量成瓶颈 28 | 29 | - 存储需具备良好的压缩性能 => BoltDB 不支持压缩 30 | 31 | 基于上述痛点,InfluxDB 团队决定自己做一个存储引擎的实现。 32 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/05~KeyDB/README.md: -------------------------------------------------------------------------------- 1 | # KeyDB 2 | 3 | https://s2.ax1x.com/2019/10/08/ufeL6J.png 4 | 5 | https://s2.ax1x.com/2019/10/08/ufeql4.png 6 | 7 | For the first charts comparing Redis and KeyDB, the following commands were used: 8 | 9 | Memtier: memtier_benchmark -s <'ip of test instance> -p 6379 –hide-histogram --authenticate <'yourpassword> --threads 32 –data-size 10 | 11 | KeyDB: keydb-server --port 6379 --requirepass <'yourpassword> --server-threads 7 --server-thread-affinity true 12 | 13 | Redis: redis-server --port 6379 --requirepass <'yourpassword> 14 | 15 | For the chart comparing KeyDB ops/sec vs #threads enabled: Memtier: memtier_benchmark -s <'ip of test instance> -p 6379 --hide-histogram --authenticate --threads 32 --data-size 32 16 | 17 | KeyDB pinned: keydb-server --port 6379 --requirepass <'yourpassword> --server-threads <#threads used for test> --server-thread-affinity true 18 | 19 | KeyDB unpinned: keydb-server --port 6379 --requirepass <'yourpassword> --server-threads <#threads used for test> 20 | -------------------------------------------------------------------------------- /03~键值型数据库/LevelDB/部署配置.md: -------------------------------------------------------------------------------- 1 | # LevelDB 背景与配置 2 | 3 | Google BigTable 的设计已总所周知,但许多细节 BigTable 论文中并不详细,LevelDB 可看作是 Bigtable 中 Tablet Server 的开源版本,亦即可认为是一个 K-V 持久化引擎,此项目由 BigTable 设计者发起。LevelDB 可以作为一个独立的持久化引擎来使用,淘宝的 Tair 就选择了 LevelDB 来做持久化,已在主流 NoSQL 系统中广泛使用,除开 BigTable/HBase,还有 Cassandra 等。 4 | 5 | LevelDb 就是 Jeff Dean 和 Sanjay Ghemawat 这两位大神级别的工程师发起的开源项目,简而言之,LevelDb 是能够处理十亿级别规模 Key-Value 型数据持久性存储的 C++ 程序库。如果了解 Bigtable 的话,应该知道在这个影响深远的分布式存储系统中有两个核心的部分:Master Server 和 Tablet Server。其中 Master Server 做一些管理数据的存储以及分布式调度工作,实际的分布式数据存储以及读写操作是由 Tablet Server 完成的,而 LevelDb 则可以理解为一个简化版的 Tablet Server。 6 | 7 | LevelDb 有如下一些特点: 8 | 9 | - 首先,LevelDb 是一个持久化存储的 KV 系统,和 Redis 这种内存型的 KV 系统不同,LevelDb 不会像 Redis 一样狂吃内存,而是将大部分数据存储到磁盘上。 10 | - 其次,LevleDb 在存储数据时,是根据记录的 key 值有序存储的,就是说相邻的 key 值在存储文件中是依次顺序存储的,而应用可以自定义 key 大小比较函数,LevleDb 会按照用户定义的比较函数依序存储这些记录。 11 | - 再次,像大多数 KV 系统一样,LevelDb 的操作接口很简单,基本操作包括写记录,读记录以及删除记录。也支持针对多条操作的原子批量操作。 12 | - 另外,LevelDb 支持数据快照(snapshot)功能,使得读取操作不受写操作影响,可以在读操作过程中始终看到一致的数据。 13 | - 除此外,LevelDb 还支持数据压缩等操作,这对于减小存储空间以及增快 IO 效率都有直接的帮助。 14 | 15 | LevelDb 性能非常突出,官方网站报道其随机写性能达到 40 万条记录每秒,而随机读性能达到 6 万条记录每秒。总体来说,LevelDb 的写操作要大大快于读操作,而顺序读写操作则大大快于随机读写操作。 16 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/02~工程实践/持久化/RDB 机制.md: -------------------------------------------------------------------------------- 1 | # RDB 机制 2 | 3 | RDB 机制是以指定的时间间隔将 Redis 中的数据生成快照并保存到硬盘中,它更适合于定时备份数据的应用场景。可以通过手动或者自动的方式来触发 RDB 机制: 4 | 5 | ### 2.1 手动触发 6 | 7 | 可以通过以下两种方式来手动触发 RDB 机制: 8 | 9 | - **save** :save 命令会阻塞当前 Redis 服务,直到 RDB 备份过程完成,在这个时间内,客户端的所有查询都会被阻塞; 10 | - **bgsave** :Redis 进程会 fork 出一个子进程,阻塞只会发生在 fork 阶段,之后持久化的操作则由子进程来完成。 11 | 12 | ### 2.2 自动触发 13 | 14 | 除了手动使用命令触发外,在某些场景下也会自动触发 Redis 的 RDB 机制: 15 | 16 | - 在 `redis.conf` 中配置了 `save m n` ,表示如果在 m 秒内存在了 n 次修改操作时,则自动触发 `bgsave`; 17 | - 如果从节点执行全量复制操作,则主节点自动执行 `bgsave`,并将生成的 RDB 文件发送给从节点; 18 | - 执行 `debug reload` 命令重新加载 Redis 时,会触发 `save` 操作; 19 | - 执行 `shutdown` 命令时候,如果没有启用 AOF 持久化则默认采用 `bgsave ` 进行持久化。 20 | 21 | ### 2.3 相关配置 22 | 23 | **1. 文件目录** 24 | 25 | RDB 文件默认保存在 Redis 的工作目录下,默认文件名为 `dump.rdb`,可以通过静态或动态方式修改: 26 | 27 | - 静态配置:通过修改 `redis.conf` 中的工作目录 `dir` 和数据库存储文件名 `dbfilename` 两个配置; 28 | 29 | - 动态修改:通过在命令行中执行以下命令: 30 | 31 | ```shell 32 | config set dir{newDir} 33 | config set dbfilename{newFileName} 34 | ``` 35 | 36 | **2. 压缩算法** 37 | 38 | Redis 默认采用 LZF 算法对生成的 RDB 文件做压缩处理,这样可以减少占用空间和网络传输的数据量,但是压缩过程会耗费 CPU 的计算资源,你可以按照实际情况,选择是否启用。可以通过修改 `redis.conf` 中的 `rdbcompression` 配置或使用以下命令来进行动态修改: 39 | 40 | ```shell 41 | config set rdbcompression{yes|no} 42 | ``` 43 | -------------------------------------------------------------------------------- /03~键值型数据库/Redis/04~架构机制/多进程架构.md: -------------------------------------------------------------------------------- 1 | # Redis 线程架构 2 | 3 | # 单进程架构 4 | 5 | 我们在使用 Redis 的时候,通常是多个客户端连接 Redis 服务器,然后各自发送命令请求(例如 Get、Set)到 Redis 服务器,最后 Redis 处理这些请求返回结果。Redis 除了处理客户端的命令请求还有诸如 RDB 持久化、AOF 重写这样的事情要做,而在做这些事情的时候,Redis 会 fork 子进程去完成。但对于 accept 客户端连接、处理客户端请求、返回命令结果等等这些,Redis 是使用主进程及主线程来完成的。 6 | 7 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/20230416204329.png) 8 | 9 | # Reactor 架构 10 | 11 | Redis 如此高效的原因就是其使用了 IO 多路复用的模式 Reactor。首先,Redis 服务器中有两类事件,文件事件和时间事件: 12 | 13 | - 文件事件(file event):Redis 客户端通过 socket 与 Redis 服务器连接,而文件事件就是服务器对套接字操作的抽象。例如,客户端发了一个 GET 命令请求,对于 Redis 服务器来说就是一个文件事件。 14 | - 时间事件(time event):服务器定时或周期性执行的事件。例如,定期执行 RDB 持久化。 15 | 16 | 在这个模型中,Redis 服务器用主线程执行 IO 多路复用程序、文件事件分派器以及事件处理器。而且,尽管多个文件事件可能会并发出现,Redis 服务器是顺序处理各个文件事件的。Redis 服务器主线程的执行流程在 Redis.c 的 main 函数中体现,而关于处理文件事件的主要的有这几行: 17 | 18 | ```c 19 | int main(int argc, char **argv) { 20 | ... 21 | initServer(); 22 | ... 23 | aeMain(); 24 | ... 25 | aeDeleteEventLoop(server.el); 26 | return 0; 27 | } 28 | ``` 29 | 30 | 在 `initServer()` 中,建立各个事件处理器;在 `aeMain()` 中,执行事件处理循环;在 `aeDeleteEventLoop(server.el)` 中关闭停止事件处理循环;最后退出。 31 | 32 | # 多进程架构 33 | 34 | # Links 35 | 36 | - 多进程架构 https://www.alibabacloud.com/blog/improving-redis-performance-through-multi-thread-processing_594150 37 | -------------------------------------------------------------------------------- /06~时序数据库/Prometheus/快速开始/README.md: -------------------------------------------------------------------------------- 1 | # 部署配置 2 | 3 | Prometheus 生态系统包含了几个关键的组件:Prometheus server、Pushgateway、Alertmanager、Web UI 等。 4 | 5 | ![架构组件](https://s2.ax1x.com/2020/01/03/lU802Q.png) 6 | 7 | 上侧是服务发现,Prometheus 支持监控对象的自动发现机制,从而可以动态获取监控对象。图片中间是 Prometheus Server,Retrieval 模块定时拉取数据,并通过 Storage 模块保存数据。PromQL 为 Prometheus 提供的查询语法,PromQL 模块通过解析语法树,调用 Storage 模块查询接口获取监控数据。图片右侧是告警和页面展现,Prometheus 将告警推送到 alertmanger,然后通过 alertmanger 对告警进行处理并执行相应动作。数据展现除了 Prometheus 自带的 WebUI,还可以通过 Grafana 等组件查询 Prometheus 监控数据。 8 | 9 | ![组成模块](https://s2.ax1x.com/2019/11/20/MW5ixH.png) 10 | 11 | 具体而言,Prometheus 的整体技术架构可以分为几个重要模块: 12 | 13 | - Main function:作为入口承担着各个组件的启动,连接,管理。以 Actor-Like 的模式协调组件的运行 14 | 15 | - Configuration:配置项的解析,验证,加载 16 | 17 | - Scrape discovery manager:服务发现管理器同抓取服务器通过同步 channel 通信,当配置改变时需要重启服务生效。 18 | 19 | - Scrape manager:抓取指标并发送到存储组件 20 | 21 | - Storage: 22 | 23 | - Fanout Storage:存储的代理抽象层,屏蔽底层 local storage 和 remote storage 细节,samples 向下双写,合并读取。 24 | - Remote Storage:Remote Storage 创建了一个 Queue 管理器,基于负载轮流发送,读取客户端 merge 来自远端的数据。 25 | - Local Storage:基于本地磁盘的轻量级时序数据库。 26 | 27 | - PromQL engine:查询表达式解析为抽象语法树和可执行查询,以 Lazy Load 的方式加载数据。 28 | 29 | - Rule manager:告警规则管理 30 | 31 | - Notifier:通知派发管理器 32 | 33 | - Notifier discovery:通知服务发现 34 | 35 | - Web UI and API:内嵌的管控界面,可运行查询表达式解析,结果展示。 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore all 2 | * 3 | 4 | # Unignore all with extensions 5 | !*.* 6 | 7 | # Unignore all dirs 8 | !*/ 9 | 10 | .DS_Store 11 | 12 | # Logs 13 | logs 14 | *.log 15 | npm-debug.log* 16 | yarn-debug.log* 17 | yarn-error.log* 18 | 19 | # Runtime data 20 | pids 21 | *.pid 22 | *.seed 23 | *.pid.lock 24 | 25 | # Directory for instrumented libs generated by jscoverage/JSCover 26 | lib-cov 27 | 28 | # Coverage directory used by tools like istanbul 29 | coverage 30 | 31 | # nyc test coverage 32 | .nyc_output 33 | 34 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 35 | .grunt 36 | 37 | # Bower dependency directory (https://bower.io/) 38 | bower_components 39 | 40 | # node-waf configuration 41 | .lock-wscript 42 | 43 | # Compiled binary addons (https://nodejs.org/api/addons.html) 44 | build/Release 45 | 46 | # Dependency directories 47 | node_modules/ 48 | jspm_packages/ 49 | 50 | # TypeScript v1 declaration files 51 | typings/ 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Optional REPL history 60 | .node_repl_history 61 | 62 | # Output of 'npm pack' 63 | *.tgz 64 | 65 | # Yarn Integrity file 66 | .yarn-integrity 67 | 68 | # dotenv environment variables file 69 | .env 70 | 71 | # next.js build output 72 | .next 73 | -------------------------------------------------------------------------------- /06~时序数据库/Prometheus/PromQL/聚合操作.md: -------------------------------------------------------------------------------- 1 | # 聚合操作 2 | 3 | Prometheus 还提供了下列内置的聚合操作符,这些操作符作用域瞬时向量。可以将瞬时表达式返回的样本数据进行聚合,形成一个新的时间序列。 4 | 5 | - `sum` (求和) 6 | - `min` (最小值) 7 | - `max` (最大值) 8 | - `avg` (平均值) 9 | - `stddev` (标准差) 10 | - `stdvar` (标准差异) 11 | - `count` (计数) 12 | - `count_values` (对 value 进行计数) 13 | - `bottomk` (后 n 条时序) 14 | - `topk` (前 n 条时序) 15 | - `quantile` (分布统计) 16 | 17 | ```s 18 | ([parameter,] ) [without|by (