mirror of https://github.com/dunwu/db-tutorial.git
02ac223c9e | ||
---|---|---|
.github/workflows | ||
assets/elasticsearch | ||
codes | ||
docs | ||
scripts | ||
utils | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
LICENSE | ||
README.md | ||
package.json | ||
prettier.config.js |
README.md
DB-TUTORIAL
💾 db-tutorial 是一个数据库教程。
- 🔁 项目同步维护:Github | Gitee
- 📖 电子书阅读:Github Pages | Gitee Pages
数据库综合
分布式存储原理
- 分布式简介
- 分布式基础理论 - 关键词:
拜占庭将军
、CAP
、BASE
- 分布式算法 Paxos - 关键词:
共识性算法
- 分布式算法 Raft - 关键词:
共识性算法
- 负载均衡 - 关键词:
轮询
、随机
、最少连接
、源地址哈希
、一致性哈希
、虚拟 hash 槽
- 消息队列 - 关键词:
重复消费
、消息丢失
、消息顺序性
、消息积压
- 分布式存储 - 关键词:
读写分离
、分库分表
、迁移
、扩容
- 分布式缓存 - 关键词:
进程内缓存
、分布式缓存
、缓存雪崩
、缓存穿透
、缓存击穿
、缓存更新
、缓存预热
、缓存降级
- 分布式锁 - 关键词:
数据库
、Redis
、ZooKeeper
、互斥
、可重入
、死锁
、容错
、自旋尝试
- 分布式 ID - 关键词:
UUID
、自增序列
、雪花算法
、Leaf
- 分布式事务 - 关键词:
2PC
、3PC
、TCC
、本地消息表
、MQ 消息
、SAGA
- 分布式会话 - 关键词:
粘性 Session
、Session 复制共享
、基于缓存的 session 共享
- 流量控制 - 关键词:
计数器法
、时间窗口法
、令牌桶法
、漏桶法
其他
数据库中间件
关系型数据库
关系型数据库 整理主流关系型数据库知识点。
公共知识
- 关系型数据库面试总结 💯
- SQL Cheat Sheet 是一个 SQL 入门教程。
- 扩展 SQL 是一个 SQL 入门教程。
Mysql
- Mysql 应用指南 ⚡
- Mysql 工作流 - 关键词:
连接
、缓存
、语法分析
、优化
、执行引擎
、redo log
、bin log
、两阶段提交
- Mysql 事务 - 关键词:
ACID
、AUTOCOMMIT
、事务隔离级别
、死锁
、分布式事务
- Mysql 锁 - 关键词:
乐观锁
、表级锁
、行级锁
、意向锁
、MVCC
、Next-key 锁
- Mysql 索引 - 关键词:
Hash
、B 树
、聚簇索引
、回表
- Mysql 性能优化
- Mysql 运维 🔨
- Mysql 配置 🔨
- Mysql 问题
其他
文档数据库
MongoDB
MongoDB 是一个基于文档的分布式数据库,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品。它是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。
MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
- MongoDB 应用指南
- MongoDB 的 CRUD 操作
- MongoDB 聚合操作
- MongoDB 事务
- MongoDB 建模
- MongoDB 建模示例
- MongoDB 索引
- MongoDB 复制
- MongoDB 分片
- MongoDB 运维
KV 数据库
Redis
- Redis 面试总结 💯
- Redis 应用指南 ⚡ - 关键词:
内存淘汰
、事件
、事务
、管道
、发布与订阅
- Redis 数据类型和应用 - 关键词:
STRING
、HASH
、LIST
、SET
、ZSET
、BitMap
、HyperLogLog
、Geo
- Redis 持久化 - 关键词:
RDB
、AOF
、SAVE
、BGSAVE
、appendfsync
- Redis 复制 - 关键词:
SLAVEOF
、SYNC
、PSYNC
、REPLCONF ACK
- Redis 哨兵 - 关键词:
Sentinel
、PING
、INFO
、Raft
- Redis 集群 - 关键词:
CLUSTER MEET
、Hash slot
、MOVED
、ASK
、SLAVEOF no one
、redis-trib
- Redis 实战 - 关键词:
缓存
、分布式锁
、布隆过滤器
- Redis 运维 🔨 - 关键词:
安装
、命令
、集群
、客户端
列式数据库
HBase
HBase 📚 因为常用于大数据项目,所以将其文档和源码整理在 bigdata-tutorial 项目中。
搜索引擎数据库
Elasticsearch
Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。
- Elasticsearch 面试总结 💯
- Elasticsearch 快速入门
- Elasticsearch 简介
- Elasticsearch 索引
- Elasticsearch 查询
- Elasticsearch 高亮
- Elasticsearch 排序
- Elasticsearch 聚合
- Elasticsearch 分析器
- Elasticsearch 性能优化
- Elasticsearch Rest API
- ElasticSearch Java API 之 High Level REST Client
- Elasticsearch 集群和分片
- Elasticsearch 运维
Elastic
- Elastic 快速入门
- Elastic 技术栈之 Filebeat
- Filebeat 运维
- Elastic 技术栈之 Kibana
- Kibana 运维
- Elastic 技术栈之 Logstash
- Logstash 运维
资料 📚
数据库综合资料
- DB-Engines - 数据库流行度排名
- 书籍
- 《数据密集型应用系统设计》 - 这可能是目前最好的分布式存储书籍,强力推荐【进阶】
- 教程
- CMU 15445 数据库基础课程
- CMU 15721 数据库高级课程
- 检索技术核心 20 讲 - 极客教程【进阶】
- 后端存储实战课 - 极客教程【入门】:讲解存储在电商领域的种种应用和一些基本特性
- 论文
- 文章
关系型数据库资料
- 综合资料
- 《数据库的索引设计与优化》
- 《SQL 必知必会》 - SQL 的基本概念和语法【入门】
- Oracle 资料
Mysql 资料
- 官方
- Mysql 官网
- Mysql 官方文档
- 官方 PPT
- 书籍
- 《高性能 MySQL》 - 经典,适合 DBA 或作为开发者的参考手册【进阶】
- 《MySQL 技术内幕:InnoDB 存储引擎》
- 《MySQL 必知必会》 - Mysql 的基本概念和语法【入门】
- 教程
- runoob.com MySQL 教程 - 入门级 SQL 教程
- mysql-tutorial
- 文章
- MySQL 索引背后的数据结构及算法原理
- Some study on database storage internals
- Sharding Pinterest: How we scaled our MySQL fleet
- Guide to MySQL High Availability
- Choosing MySQL High Availability Solutions
- High availability with MariaDB TX: The definitive guide
- Mysql 相关经验
- Booking.com: Evolution of MySQL System Design ,Booking.com 的 MySQL 数据库使用的演化,其中有很多不错的经验分享,我相信也是很多公司会遇到的的问题。
- Tracking the Money - Scaling Financial Reporting at Airbnb ,Airbnb 的数据库扩展的经验分享。
- Why Uber Engineering Switched from Postgres to MySQL ,无意比较两个数据库谁好谁不好,推荐这篇 Uber 的长文,主要是想让你从中学习到一些经验和技术细节,这是一篇很不错的文章。
- Mysql 集群复制
- Monitoring Delayed Replication, With A Focus On MySQL
- Mitigating replication lag and reducing read load with freno
- Better Parallel Replication for MySQL
- Evaluating MySQL Parallel Replication Part 2: Slave Group Commit
- Evaluating MySQL Parallel Replication Part 3: Benchmarks in Production
- Evaluating MySQL Parallel Replication Part 4: More Benchmarks in Production
- Evaluating MySQL Parallel Replication Part 4, Annex: Under the Hood
- Mysql 数据分区
- StackOverflow: MySQL sharding approaches?
- Why you don’t want to shard
- [How to Scale Big Data Applications](https://www.percona.com/sites/default/files/presentations/How to Scale Big Data Applications.pdf)
- MySQL Sharding with ProxySQL
- 各公司的 Mysql 数据分区经验分享
- 更多资源
- awesome-mysql - MySQL 的资源列表
Nosql 数据库综合
- Martin Fowler 在 YouTube 上分享的 NoSQL 介绍 Introduction To NoSQL, 以及他参与编写的 NoSQL Distilled - NoSQL 精粹,这本书才 100 多页,是本难得的关于 NoSQL 的书,很不错,非常易读。
- NoSQL Databases: a Survey and Decision Guidance,这篇文章可以带你自上而下地从 CAP 原理到开始了解 NoSQL 的种种技术,是一篇非常不错的文章。
- Distribution, Data, Deployment: Software Architecture Convergence in Big Data Systems,这是卡内基·梅隆大学的一篇讲分布式大数据系统的论文。其中主要讨论了在大数据时代下的软件工程中的一些关键点,也说到了 NoSQL 数据库。
- No Relation: The Mixed Blessings of Non-Relational Databases,这篇论文虽然有点年代久远。但这篇论文是 HBase 的基础,你花上一点时间来读读,就可以了解到,对各种非关系型数据存储优缺点的一个很好的比较。
- NoSQL Data Modeling Techniques ,NoSQL 建模技术。这篇文章我曾经翻译在了 CoolShell 上,标题为 NoSQL 数据建模技术,供你参考。
- MongoDB - Data Modeling Introduction ,虽然这是 MongoDB 的数据建模介绍,但是其很多观点可以用于其它的 NoSQL 数据库。
- Firebase - Structure Your Database ,Google 的 Firebase 数据库使用 JSON 建模的一些最佳实践。
- 因为 CAP 原理,所以当你需要选择一个 NoSQL 数据库的时候,你应该看看这篇文档 Visual Guide to NoSQL Systems。
选 SQL 还是 NoSQL,这里有两篇文章,值得你看看。
列式数据库资料
Cassandra 资料
- 沃尔玛实验室有两篇文章值得一读。
- Yelp: How We Scaled Our Ad Analytics with Apache Cassandra ,Yelp 的这篇博客也有一些相关的经验和教训。
- Discord: How Discord Stores Billions of Messages ,Discord 公司分享的一个如何存储十亿级消息的技术文章。
- Cassandra at Instagram ,Instagram 的一个 PPT,其中介绍了 Instagram 中是怎么使用 Cassandra 的。
- Netflix: Benchmarking Cassandra Scalability on AWS - Over a million writes per second ,Netflix 公司在 AWS 上给 Cassandra 做的一个 Benchmark。
HBase 资料
- Imgur Notification: From MySQL to HBASE
- Pinterest: Improving HBase Backup Efficiency
- IBM : Tuning HBase performance
- HBase File Locality in HDFS
- Apache Hadoop Goes Realtime at Facebook
- Storage Infrastructure Behind Facebook Messages: Using HBase at Scale
- GitHub: Awesome HBase
针对于 HBase 有两本书你可以考虑一下。
- 首先,先推荐两本书,一本是偏实践的《HBase 实战》,另一本是偏大而全的手册型的《HBase 权威指南》。
- 当然,你也可以看看官方的 The Apache HBase™ Reference Guide
- 另外两个列数据库:
KV 数据库资料
Redis 资料
- 官网
- 书籍
- 源码
- 资源汇总
- Redis Client
- 文章
- Learn Redis the hard way (in production) at Trivago
- Twitter: How Twitter Uses Redis To Scale - 105TB RAM, 39MM QPS, 10,000+ Instances
- Slack: Scaling Slack’s Job Queue - Robustly Handling Billions of Tasks in Milliseconds Using Kafka and Redis
- GitHub: Moving persistent data out of Redis at GitHub
- Instagram: Storing Hundreds of Millions of Simple Key-Value Pairs in Redis
- Redis in Chat Architecture of Twitch (from 27:22)
- Deliveroo: Optimizing Session Key Storage in Redis
- Deliveroo: Optimizing Redis Storage
- GitHub: Awesome Redis
文档数据库资料
- Couchbase Ecosystem at LinkedIn
- SimpleDB at Zendesk
- Data Points - What the Heck Are Document Databases?
MongoDB 资料
- 官方
- 教程
- 数据
- 文章
- 更多资源
搜索引擎数据库资料
ElasticSearch
- 官方
- Elasticsearch 官网
- Elasticsearch Github
- Elasticsearch 官方文档
- Elasticsearch: The Definitive Guide - ElasticSearch 官方学习资料
- 书籍
- 教程
- 文章
- 更多资源
图数据库
- 首先是 IBM Devloperworks 上的两个简介性的 PPT。
- 然后是一本免费的电子书《Graph Database》。
- 接下来是一些图数据库的介绍文章。
时序数据库
- What is Time-Series Data & Why We Need a Time-Series Database
- Time Series Data: Why and How to Use a Relational Database instead of NoSQL
- Beringei: High-performance Time Series Storage Engine @Facebook
- Introducing Atlas: Netflix’s Primary Telemetry Platform @Netflix
- Building a Scalable Time Series Database on PostgreSQL
- Scaling Time Series Data Storage - Part I @Netflix
- Design of a Cost Efficient Time Series Store for Big Data
- GitHub: Awesome Time-Series Database
传送 🚪
◾ 🏠 DB-TUTORIAL 首页 ◾ 🎯 我的博客 ◾