Files
CategoryResourceRepost/极客时间专栏/左耳听风/程序员练级攻略/80 | 程序员练级攻略:数据库.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

25 KiB
Raw Blame History

对于数据库方向重点就是两种数据库一种是以SQL为代表的关系型数据库另一种是以非SQL为代表的NoSQL数据库。关系型数据库主要有三个Oracle、MySQL 和 Postgres。

在这里我们只讨论越来越主流的MySQL数据库。首先我们要了解数据库的一些实现原理和内存的一些细节然后我们要知道数据的高可用和数据复制这些比较重要的话题了解一下关系型数据库的一些实践和难点。然后我们会进入到NoSQL数据库的学习。

NoSQL数据库千奇百怪其主要是解决了关系型数据库中的各种问题。第一个大问题就是数据的Schema非常多用关系型数据库来表示不同的Data Schema是非常笨拙的所以要有不同的数据库如时序型、键值对型、搜索型、文档型、图结构型等。另一个大问题是关系型数据库的ACID是一件很讨厌的事这极大地影响了数据库的性能和扩展性所以NoSQL在这上面做了相应的妥协以解决大规模伸缩的问题。

对于一个程序员你可能觉得数据库的事都是DBA的事然而我想告诉你你错了这些事才真正是程序员的事。因为程序是需要和数据打交道的所以程序员或架构师不仅需要设计数据模型还要保证整体系统的稳定性和可用性数据是整个系统中关键中的关键。所以作为一个架构师或程序员你必须了解最重要的数据存储——数据库。

关系型数据库

今天关系型数据库最主要的两个代表是闭源的Oracle和开源的MySQL。当然还有很多了比如微软的SQL ServerIBM的DB2等还有开源的PostgreSQL。关系型数据库的世界中有好多好多产品。当然还是Oracle和MySQL是比较主流的。所以这里主要介绍更为开放和主流的MySQL。

如果你要玩Oracle我这里只推荐一本书《Oracle Database 9i/10g/11g编程艺术无论是开发人员还是DBA它都是必读的书。这本书的作者是Oracle公司的技术副总裁托马斯·凯特Thomas Kyte他也是世界顶级的Oracle专家。

这本书中深入分析了Oracle数据库体系结构包括文件、内存结构以及构成Oracle数据库和实例的底层进程利用具体示例讨论了一些重要的数据库主题如锁定、并发控制、事务等。同时分析了数据库中的物理结构如表、索引和数据类型并介绍采用哪些技术能最优地使用这些物理结构。

  • 学习MySQL首先一定是要看[MySQL 官方手册](https://dev.mysql.com/doc/)。
  • 然后官方还有几个PPT也要学习一下。