-->

左耳听风_081_80_程序员练级攻略数据库

你好,我是陈浩网名做尔多house.这节课呢我们来探讨一下数据库对于数据库方向。

重点呢就是两种数据库,一种是以circle为代表的惯性数据库。

另一种呢是以非circle为代表的no circle数据库。

呃,关系型数据库主要有三个oracle、 mysql和POSQRS.在这里呢我们只讨论越来越主流的mysql数据库。

首先呢我们要了解数据库的一些实现原理和内存的一些细节。

然后呢,我们要知道数据的高可用和数据复制这些比较重要的话题啊,了解一下关心数据库的一些实践和难点。

然后啊我们会进入到no sql数据库的学习。

Nosql数据库千奇百怪。

它主要是解决了关形数据库的各种问题。

那第一个大问题啊,就是数据的schema,非常用用系性数据库来表示不同的data schemma是非常笨拙的。

所以呢要有不同的数据库啊,比如持序性啊、建设队型啊,还有搜索型、文档型,还有图结构性等等。

那另外一个大问题啊,就是惯性数据库的ACID是一件很讨厌的事儿。

因为这个极大影响了数据库的性能和扩展性,所以nosql在这上面做了相应的妥协,以解决大规模伸缩的问题。

对于一个程序员来说啊,你可能会觉得数据库的事都是DBA的事儿。

但是呢我想告诉你,你错了,这些事儿啊才真正是程序员的事儿。

因为程序是需要和数据打交道的,所以程序员或者架构师不仅需要设计数据模型,还要保证整体系统的稳定性和可用性。

而数据呢是整个系统中关键中的关键。

所以说作为一个架构师或者程序员啊,你必须要了解最重要的数据存储,也就是数据库。

首先呢我们来说一说关系型数据库。

今天啊关系型数据库最主要的两个代表是闭源的oracle和开源的mysql.那当然啊还有其他很多的啊,比如说微软的circle server, IBM的DB two啊等等,还有开源的POSQL, circle关型数据库的世界中有好多好多的产品。

那当然呢还是oracle和mysql是比较主流的。

所以在这里呢我主要介绍更为开放和主流的mysql.那如果你要玩oracle呢,我这里只推荐一本书,叫做oracle database.九i十g十一g编程艺术,无论是开发人员还是DBA,他都是必读的书。

这本书的作者是oracle公司的技术副总裁托马斯凯特。

那他呢也世界顶级的oracle专家,这本书中深入分析了oracle数据库的体系结构,包括文件、内存结构比构成oracle数据库和实例的底层进程。

他利用具体事例,讨论了一些重要的数据库主题,比如说锁定、并发控制,还有事物啊等等。

同时呢他也分析了数据库中的物理结构,比如说表索引还有数据类型。

并且呢他还介绍了采用哪些技术能最优的使用这些物理结构。

要学习mysql呢。

首先呢你一定要看mysql的官方手册,然后呢,官方还有几个PPT也需要学习一下。

我在文中呢给你罗列了很多,然后呢我推荐高性能mysql这本书,呃,它是mysql领域的经典之作,拥有广泛的影响力。

它不单适合数据库管理员阅读,也适合开发人员参考学习。

那不管是数据库新手还是专家,都能从本书中有所收获。

那如果你对mysql的内部原理有兴趣的话,可以看一下mysql技术内幕inno DB存储引擎这本书。

那当然呢还有官网的mysql internals menu.另外呢数据库的索引设计和优化也是非常关键的那这里还有一本书也是很不错的啊,叫做数据库的索引设计与优化。

那虽然它不是讲mysql的,但是呢原理都是相通的那这个呢也是上面推荐过的高性能mysql.在索引部分推荐的一本好书。

你千万不要觉得只有做数据库你才需要学习这种索引技术啊。

不是的,在系统架构上,在分布式架构当中啊,索引技术也是非常重要的这本书啊,对于索引的性能进行了非常清楚的估算。

不像其他书中只是模糊的描述,你呢一定会收获很多很多。

我这里呢还有一些其他不错的和mysql相关的文章,我在文中呢也给你了。

那最后还有一个mysql的资源列表,awesome. Mysql那这个列表中有很多的工具和开发资源,可以帮助你做很多的事情。

Mysql有两个比较有名的分支,一个呢是peconona,另一个是measo DB.它官网上的resources页面中啊有很多不错的资源和文档啊,可以经常看一看,比如说peconner a resources, mary DB resources,还有他们的开发博客中也有很多不错的文章,分别是paconono blog和measor DB blog.然后呢,是关于mysql的一些相关经验性的文章。

那第一个呢是booking dot cot mysql数据库使用的演化。

那其中呢有很多不错的经验分享,我相信啊也是很多公司会遇到的问题。

第二个是tracking the money scaling financial reporting at MPNB,那这个是IMPNB数据库扩展的经验分享。

那第三篇文章呢叫做y uber engineering switched from poo stgrass to my circle.我在这里呢不是想比较两个数据库,谁好谁不好。

我推荐这篇uber的长文啊,主要是想让你从中学习到一些经验和技术细节,但这个呢是一篇很不错的文章。

而关于mysql的集训复制和数据分区啊,文中都有一些文章供你学习啊,都是很不错的实践性比较强的文章。

然后文中还有一些各个公司做mysql sharing的一些经验分享。

那说完了关系性数据库啊,我们再来聊一聊nosql数据库。

关于nosql数据库啊,它最初的目的啊就是解决大数据的问题。

但是呢也有人把它直接用来替换掉惯形数据库。

所以说在学习这个技术之前啊,我们需要对这个技术的一些概念和初衷有一定的了解。

那接下来呢是一些推荐的资料。

那第一呢,就是martin folller在youtube上分享的no circle,介绍introduction to no circle.还有他参与编写的no circle精粹。

那这本书啊才一百多页是本难得的。

关于nosql的书很不错啊,非常易读。

第二是nosql data basis, a survey and decision guidance.这篇文章可以带你自上而下的从CP原理到开始了解NOS. Ql的种种技术,是一篇非常不错的文章。

第三篇叫做distribution data employment software architecture conversions in big data systems.那这个是卡丁基梅隆大学的一篇讲分布式大数据系统的论文。

那其中啊主要讨论了在大数据时代下软件工程的一些关键点。

其中呢也说到了NOSQL数据库,第四篇叫做no relation, the mix, the blessing of no relational databbasis.那这篇论文虽然年代有点久远,但这篇呢是h base的基础。

你花上一点时间来读一读啊,就可以了解到对各种非惯性数据库存储优缺点的一个很好的比较。

第五篇叫做nosql对它modeling techniques.那这篇文章我曾经翻译到了cshell上,标题叫做no sql数据建模技术供你参考。

第六篇叫做mango DB,对他modeling introduction.呃,虽然这是mango DB的数据建模介绍,但是呢他的很多观点可以用于其他的no cirq l数据库。

第七篇呢是file base structure your database.它是来自google的对fire base数据库,使用jason建模的一些最佳实践。

最后呢,因为CAP原理的原因啊,当你需要选择一个no sql数据库的时候啊,你应该看一看这篇文档叫做visual guide to nosql systems,选circle还是no circle.文中呢这里还有两篇文章,值得你看一看。

学习使用nosql数据库啊,其实并不是一件很难的事。

那只要你把官方文档仔细的读一下,是很容易上手的。

而且大多数no sql数据库啊都是开源的,所以呢也可以通过代码自己解决问题。

文中呢我主要给出了一些典型的noo, sql数据库的一些经验性的文章供你参考。

这些no sql数据库分别是列数据库、文档数据库、数据结构数据库、时序数据库、图数据库,还有搜索数据库。

我在文中呢给出了每一种数据库相应的推荐文章,那这里呢我就不再一一介绍了。

好了,我们总结一下今天分享的内容。

虽然有人会认为数据库与程序员无关,是DBA的事儿。

但是我坚信啊数据库才真正是程序员的事儿。

因为程序是需要和数据打交道的,所以程序员或者架构师不仅需要设计数据模型,还要保证整体系统的稳定性和可用性。

而数据呢是整个系统中关键中的关键。

对于数据库方向,重点呢就是两种数据库,一种是以circle为代表的关系性数据库,而另一种呢是以非circle为代表的no circl数据库。

所以在这节课中啊,我给出的mysql和各种开源NOS ql的一些相关有价值的文章和导读。

那主要呢是让你对这些数据库的内在有一定的了解,但是呢又不会太深。

同时呢我给出了一些知名企业使用数据库的工程实践。

那这个呢对于了解各种数据库的优劣非常有帮助,值得认真读一读。

从下节课开始啊,我们将进入分布式系统架构方面的内容里面呢,不仅涵盖了大量的理论知识,更有丰富的入门指导和大量的工程实践,敬请期待。