💾 db-tutorial 是一个数据库教程。
# 数据库综合
# 分布式存储原理
# 分布式理论
- 分布式一致性 (opens new window)
- 深入剖析共识性算法 Paxos (opens new window)
- 深入剖析共识性算法 Raft (opens new window)
- 分布式算法 Gossip (opens new window)
# 分布式关键技术
# 流量调度
- 流量控制 (opens new window)
- 负载均衡 (opens new window)
- 服务路由 (opens new window)
- 分布式会话基本原理 (opens new window)
# 数据调度
- 缓存基本原理 (opens new window)
- 读写分离基本原理 (opens new window)
- 分库分表基本原理 (opens new window)
- 分布式 ID 基本原理 (opens new window)
- 分布式事务基本原理 (opens new window)
- 分布式锁基本原理 (opens new window)
# 其他
# 数据库中间件
# 关系型数据库
关系型数据库 整理主流关系型数据库知识点。
# 关系型数据库综合
# 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 快速入门
- HBase 数据模型
- HBase Schema 设计
- HBase 架构
- HBase Java API 基础特性
- HBase Java API 高级特性之过滤器
- HBase Java API 高级特性之协处理器
- HBase Java API 其他高级特性
- HBase 运维
- HBase 命令
# 搜索引擎数据库
# 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 (opens new window) - 数据库流行度排名
- 书籍
- 《数据密集型应用系统设计》 (opens new window) - 这可能是目前最好的分布式存储书籍,强力推荐【进阶】
- 教程
- CMU 15445 数据库基础课程 (opens new window)
- CMU 15721 数据库高级课程 (opens new window)
- 检索技术核心 20 讲 (opens new window) - 极客教程【进阶】
- 后端存储实战课 (opens new window) - 极客教程【入门】:讲解存储在电商领域的种种应用和一些基本特性
- 论文
- 文章
# 关系型数据库资料
- 综合资料
- 《数据库的索引设计与优化》 (opens new window)
- 《SQL 必知必会》 (opens new window) - SQL 的基本概念和语法【入门】
- Oracle 资料
# Mysql 资料
- 官方
- Mysql 官网 (opens new window)
- Mysql 官方文档 (opens new window)
- 官方 PPT
- How to Analyze and Tune MySQL Queries for Better Performance (opens new window)
- MySQL Performance Tuning 101 (opens new window)
- MySQL Performance Schema & Sys Schema (opens new window)
- MySQL Performance: Demystified Tuning & Best Practices (opens new window)
- MySQL Security Best Practices (opens new window)
- MySQL Cluster Deployment Best Practices (opens new window)
- MySQL High Availability with InnoDB Cluster (opens new window)
- 书籍
- 《高性能 MySQL》 (opens new window) - 经典,适合 DBA 或作为开发者的参考手册【进阶】
- 《MySQL 技术内幕:InnoDB 存储引擎》 (opens new window)
- 《MySQL 必知必会》 (opens new window) - Mysql 的基本概念和语法【入门】
- 教程
- 文章
- MySQL 索引背后的数据结构及算法原理 (opens new window)
- Some study on database storage internals (opens new window)
- Sharding Pinterest: How we scaled our MySQL fleet (opens new window)
- Guide to MySQL High Availability (opens new window)
- Choosing MySQL High Availability Solutions (opens new window)
- High availability with MariaDB TX: The definitive guide (opens new window)
- Mysql 相关经验
- Booking.com: Evolution of MySQL System Design (opens new window) ,Booking.com 的 MySQL 数据库使用的演化,其中有很多不错的经验分享,我相信也是很多公司会遇到的的问题。
- Tracking the Money - Scaling Financial Reporting at Airbnb (opens new window) ,Airbnb 的数据库扩展的经验分享。
- Why Uber Engineering Switched from Postgres to MySQL (opens new window) ,无意比较两个数据库谁好谁不好,推荐这篇 Uber 的长文,主要是想让你从中学习到一些经验和技术细节,这是一篇很不错的文章。
- Mysql 集群复制
- Monitoring Delayed Replication, With A Focus On MySQL (opens new window)
- Mitigating replication lag and reducing read load with freno (opens new window)
- Better Parallel Replication for MySQL (opens new window)
- Evaluating MySQL Parallel Replication Part 2: Slave Group Commit (opens new window)
- Evaluating MySQL Parallel Replication Part 3: Benchmarks in Production (opens new window)
- Evaluating MySQL Parallel Replication Part 4: More Benchmarks in Production (opens new window)
- Evaluating MySQL Parallel Replication Part 4, Annex: Under the Hood (opens new window)
- Mysql 数据分区
- StackOverflow: MySQL sharding approaches? (opens new window)
- Why you don’t want to shard (opens new window)
- [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 (opens new window)
- 各公司的 Mysql 数据分区经验分享
- MailChimp: Using Shards to Accommodate Millions of Users (opens new window)
- Uber: Code Migration in Production: Rewriting the Sharding Layer of Uber’s Schemaless Datastore (opens new window)
- Sharding & IDs at Instagram (opens new window)
- Airbnb: How We Partitioned Airbnb’s Main Database in Two Weeks (opens new window)
- 更多资源
- awesome-mysql (opens new window) - MySQL 的资源列表
# Nosql 数据库综合
- Martin Fowler 在 YouTube 上分享的 NoSQL 介绍 Introduction To NoSQL (opens new window), 以及他参与编写的 NoSQL Distilled - NoSQL 精粹 (opens new window),这本书才 100 多页,是本难得的关于 NoSQL 的书,很不错,非常易读。
- NoSQL Databases: a Survey and Decision Guidance (opens new window),这篇文章可以带你自上而下地从 CAP 原理到开始了解 NoSQL 的种种技术,是一篇非常不错的文章。
- Distribution, Data, Deployment: Software Architecture Convergence in Big Data Systems (opens new window),这是卡内基·梅隆大学的一篇讲分布式大数据系统的论文。其中主要讨论了在大数据时代下的软件工程中的一些关键点,也说到了 NoSQL 数据库。
- No Relation: The Mixed Blessings of Non-Relational Databases (opens new window),这篇论文虽然有点年代久远。但这篇论文是 HBase 的基础,你花上一点时间来读读,就可以了解到,对各种非关系型数据存储优缺点的一个很好的比较。
- NoSQL Data Modeling Techniques (opens new window) ,NoSQL 建模技术。这篇文章我曾经翻译在了 CoolShell 上,标题为 NoSQL 数据建模技术 (opens new window),供你参考。
- MongoDB - Data Modeling Introduction (opens new window) ,虽然这是 MongoDB 的数据建模介绍,但是其很多观点可以用于其它的 NoSQL 数据库。
- Firebase - Structure Your Database (opens new window) ,Google 的 Firebase 数据库使用 JSON 建模的一些最佳实践。
- 因为 CAP 原理,所以当你需要选择一个 NoSQL 数据库的时候,你应该看看这篇文档 Visual Guide to NoSQL Systems (opens new window)。
选 SQL 还是 NoSQL,这里有两篇文章,值得你看看。
- SQL vs. NoSQL Databases: What’s the Difference? (opens new window)
- Salesforce: SQL or NoSQL (opens new window)
# 列式数据库资料
# Cassandra 资料
- 沃尔玛实验室有两篇文章值得一读。
- Yelp: How We Scaled Our Ad Analytics with Apache Cassandra (opens new window) ,Yelp 的这篇博客也有一些相关的经验和教训。
- Discord: How Discord Stores Billions of Messages (opens new window) ,Discord 公司分享的一个如何存储十亿级消息的技术文章。
- Cassandra at Instagram (opens new window) ,Instagram 的一个 PPT,其中介绍了 Instagram 中是怎么使用 Cassandra 的。
- Netflix: Benchmarking Cassandra Scalability on AWS - Over a million writes per second (opens new window) ,Netflix 公司在 AWS 上给 Cassandra 做的一个 Benchmark。
# HBase 资料
- Imgur Notification: From MySQL to HBASE (opens new window)
- Pinterest: Improving HBase Backup Efficiency (opens new window)
- IBM : Tuning HBase performance (opens new window)
- HBase File Locality in HDFS (opens new window)
- Apache Hadoop Goes Realtime at Facebook (opens new window)
- Storage Infrastructure Behind Facebook Messages: Using HBase at Scale (opens new window)
- GitHub: Awesome HBase (opens new window)
针对于 HBase 有两本书你可以考虑一下。
- 首先,先推荐两本书,一本是偏实践的《HBase 实战 (opens new window)》,另一本是偏大而全的手册型的《HBase 权威指南 (opens new window)》。
- 当然,你也可以看看官方的 The Apache HBase™ Reference Guide (opens new window)
- 另外两个列数据库:
# KV 数据库资料
# Redis 资料
- 官网
- 书籍
- 源码
- 资源汇总
- Redis Client
- 文章
- Learn Redis the hard way (in production) at Trivago (opens new window)
- Twitter: How Twitter Uses Redis To Scale - 105TB RAM, 39MM QPS, 10,000+ Instances (opens new window)
- Slack: Scaling Slack’s Job Queue - Robustly Handling Billions of Tasks in Milliseconds Using Kafka and Redis (opens new window)
- GitHub: Moving persistent data out of Redis at GitHub (opens new window)
- Instagram: Storing Hundreds of Millions of Simple Key-Value Pairs in Redis (opens new window)
- Redis in Chat Architecture of Twitch (from 27:22) (opens new window)
- Deliveroo: Optimizing Session Key Storage in Redis (opens new window)
- Deliveroo: Optimizing Redis Storage (opens new window)
- GitHub: Awesome Redis (opens new window)
# 文档数据库资料
- Couchbase Ecosystem at LinkedIn (opens new window)
- SimpleDB at Zendesk (opens new window)
- Data Points - What the Heck Are Document Databases? (opens new window)
# MongoDB 资料
- 官方
- 教程
- 数据
- 文章
- 更多资源
# 搜索引擎数据库资料
# ElasticSearch
- 官方
- 书籍
- 教程
- 文章
- 更多资源
# 图数据库
- 首先是 IBM Devloperworks 上的两个简介性的 PPT。
- 然后是一本免费的电子书《Graph Database (opens new window)》。
- 接下来是一些图数据库的介绍文章。
- Handling Billions of Edges in a Graph Database (opens new window)
- Neo4j case studies with Walmart, eBay, AirBnB, NASA, etc (opens new window)
- FlockDB: Distributed Graph Database for Storing Adjacency Lists at Twitter (opens new window)
- JanusGraph: Scalable Graph Database backed by Google, IBM and Hortonworks (opens new window)
- Amazon Neptune (opens new window)
# 时序数据库
- What is Time-Series Data & Why We Need a Time-Series Database (opens new window)
- Time Series Data: Why and How to Use a Relational Database instead of NoSQL (opens new window)
- Beringei: High-performance Time Series Storage Engine @Facebook (opens new window)
- Introducing Atlas: Netflix’s Primary Telemetry Platform @Netflix (opens new window)
- Building a Scalable Time Series Database on PostgreSQL (opens new window)
- Scaling Time Series Data Storage - Part I @Netflix (opens new window)
- Design of a Cost Efficient Time Series Store for Big Data (opens new window)
- GitHub: Awesome Time-Series Database (opens new window)
# 传送 🚪
◾ 💧 钝悟的 IT 知识图谱 (opens new window) ◾ 🎯 钝悟的博客 (opens new window) ◾