极客时间-左耳听风-程序员攻略-数据库
对于数据库方向,重点就是两种数据库,一种是以 SQL 为代表的关系型数据库,另一种是以非 SQL 为代表的 NoSQL 数据库。关系型数据库主要有三个:Oracle、MySQL 和 Postgres。
关系型数据库
Oracle,《Oracle Database 9i/10g/11g 编程艺术》
这本书中深入分析了 Oracle 数据库体系结构,包括文件、内存结构以及构成 Oracle 数据库和实例的底层进程,利用具体示例讨论了一些重要的数据库主题,如锁定、并发控制、事务等。同时分析了数据库中的物理结构,如表、索引和数据类型,并介绍采用哪些技术能最优地使用这些物理结构。
- MySQL 官方手册](https://dev.mysql.com/doc/)。
- 官方几个 PPT 。
- 《高性能 MySQL》
- MySQL 的内部原理《MySQL 技术内幕:InnoDB 存储引擎》。官网的MySQL Internals Manual 。
- 数据库的索引设计和优化《数据库的索引设计与优化》
和 MySQL 相关的文章。
- 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 的资源列表 Awesome MySQL,这个列表中有很多的工具和开发资源。
MySQL 有两个比较有名的分支,一个是 Percona,另一个是 MariaDB,其官网上的 Resources 页面。 Percona Resources、MariaDB Resources ,以及它们的开发博客中也有很多不错的文章,分别为 Percona Blog 和 MariaDB Blog。
关于 MySQL 的一些相关经验型的文章。
- Booking.com: Evolution of MySQL System Design
- Tracking the Money - Scaling Financial Reporting at Airbnb ,Airbnb 的数据库扩展的经验分享。
- Why Uber Engineering Switched from Postgres to MySQL
关于 MySQL 的集群复制。
- Monitoring Delayed Replication, With A Focus On MySQL
- Mitigating replication lag and reducing read load with freno
- Booking.com 一系列的文章:
- 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
- MySQL Sharding with ProxySQL
MySQL Sharding 的一些经验分享。
- MailChimp: Using Shards to Accommodate Millions of Users
- Uber: Code Migration in Production: Rewriting the Sharding Layer of Uber’s Schemaless Datastore
- Sharding & IDs at Instagram
- Airbnb: How We Partitioned Airbnb’s Main Database in Two Weeks
NoSQL 数据库
- NoSQL 介绍 Introduction To NoSQL、 NoSQL Distilled - 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,对各种非关系型数据存储优缺点的一个很好的比较。
- NoSQL Data Modeling Techniques ,NoSQL 建模技术。 NoSQL 数据建模技术。
- MongoDB - Data Modeling Introduction ,虽然这是 MongoDB 的数据建模介绍,但是其很多观点可以用于其它的 NoSQL 数据库。
- Firebase - Structure Your Database ,Google 的 Firebase 数据库使用 JSON 建模的一些最佳实践。
- Visual Guide to NoSQL Systems。
选 SQL 还是 NoSQL,两篇文章。
各种 NoSQL 数据库
列数据库 Column Database
- 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 相关
针对于 HBase 两本书。
- 一本是偏实践的《HBase 实战》,另一本是偏大而全的手册型的《HBase 权威指南》。
- 官方的 The Apache HBase™ Reference Guide
- 另外两个列数据库:
文档数据库 Document Database - MongoDB, SimpleDB, CouchDB
- Data Points - What the Heck Are Document Databases?
- eBay: Building Mission-Critical Multi-Data Center Applications with MongoDB
- The AWS and MongoDB Infrastructure of Parse: Lessons Learned
- Migrating Mountains of Mongo Data
- Couchbase Ecosystem at LinkedIn
- SimpleDB at Zendesk
- Github: Awesome MongoDB
数据结构数据库 Data structure Database - Redis
- 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
时序数据库 Time-Series 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
图数据库 - Graph Platform
- 首先是 IBM Devloperworks 上的两个简介性的 PPT。
- 然后是一本免费的电子书《Graph Database》。
- 接下来是一些图数据库的介绍文章。
搜索数据库 - ElasticSearch
- Elasticsearch: The Definitive Guide 这是官网方的 ElasticSearch 的学习资料。
- 4 篇和性能调优相关的工程实践。
- Elasticsearch Performance Tuning Practice at eBay
- Elasticsearch at Kickstarter
- 9 tips on ElasticSearch configuration for high performance
- Elasticsearch In Production - Deployment Best Practices
- GitHub 上的资源列表 GitHub: Awesome ElasticSearch 。