迄今为止也已经出现了很多数据库,常用的有MySQL、MongDB、Redis、RocksDB等,对大多数开发者来说,掌握一些基本原理,能够熟练几种不同类型数据库已经足够了。
关于数据库的大致分类可以分为 RDBMS,NoSQL,NewSQL 这几类,具体区别可以参考 5分钟理解数据库全景图(SQL,NoSQL,NewSQL,OLAP,OLTP) 这篇文章。
我也整理了一些知乎的学习资料:数据库缓存相关
RDBMS
我们最早接触的数据库基本都是关系型数据库(RDBMS,也叫SQL数据库),像MySQL,SQL Server之类的,关系型数据库的学习主要分两块:
- 一是SQL基本操作,这块比较简单,建议参考 SQL.md 这个教程。
- 二是数据库原理,这里首推 Christophe 的一篇文章:How does a relational database work,算是讲解关系型数据库原理很全面的一篇文章了,中文版的话参考翻译:关系型数据库的工作原理(翻译).pdf。
学完了 SQL 基本操作和原理之后,我们可以具体深入学习一门数据库,这里推荐 MySQL,开源、应用广泛。
下面是一些关于 RDBMS 的扩展性的文章:
MySQL 对于千万级的大表要怎么优化? &emsp回答者:zhuqz
- 优化sql和索引
- 加缓存,memcached,redis
- 主从复制或主主复制,读写分离
…
腾讯面试:一条SQL语句执行得很慢的原因有哪些?—不看后悔系列 作者:帅地
NoSQL
还有一块就是 NoSQL,这里推荐学习 Redis,也是非常通用的一个键值对数据库了,官方文档写的也很好,阅读难度也不大:Redis官网
面试相关:天下无难试之Redis面试题刁难大全
NewSQL
我暂时也没用过,就不说了