跟前端一起来学数据库系列(3)

上两篇分享我们讲了如何设计数据库表和基本的SQL语句知识,有了这些知识我们就可以愉快的使用数据库来做一两个Demo程序了。但光有这些知识还是不够的,生产环境的情况远不是Demo环境能比的,你可能会遇到数据库查询耗费时间太长导致机器满载而无法提供可靠的服务,还可能会遇到断电或者别并发量太大导致的数据不一致问题等等,这些在生产环境里出现了都会严重影响主业务,所以本次分享就来简单的聊一聊如何解决这些问题。 在讲主要内容之前,先插播一些数据库数据存储方面的知识,我们现在用的数据库大部分都是mysql,所使用的主要引擎是InnoDB,所以我们接下讲的东西都是基于InnoDB的。 那么数据在InnoDB引擎的数据库里是怎么存储的呢? 数据库底层使用了一种名为B+树的数据结构,B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树(如果不知道平衡查找树,请自行google),在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶节点指针进行连接。 B+…

Read More

跟前端一起来学数据库系列(2)

上篇文章我们讲了怎样设计数据库表,这次我们来了解一些基本的SQL语句写法。虽然在实际工作可能中我们用ORM库来操作数据库比较多,但ORM最终也是生成SQL语句来与数据库进行交互,了解一些基本的SQL语句,能让我们遇到一些问题时不至于搞不清发生了什么情况。 结构化查询语言(Structured Query Language)简称SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。 结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。 结构化查询语言包含6个部分: 数据查询语言(…

Read More

跟前端一起来学数据库系列(1)

随着公司的业务发展,前端已经不满足于只是做切图仔的工作,前端天生的优势在于其业务无关性,但前端人的劣势也恰恰是业务无关性。所以,前端需要了解业务逻辑,了解的最好途径就是去写业务逻辑,要写业务逻辑就得首先过了数据库这一关,鉴于前端组员对于数据库缺乏经验,而我在做前端之前做过一阵子的后端,所以组织上研究决定,让我给组员们分享一下数据库方面的知识。 这次分享分为三个部分,第一部分讲怎样设计一个数据库表,第二部分讲一些基本SQL语句,第三部分讲数据库使用技巧(索引,事物务等)。 由于这个分享是面向前端组员的所以讲的会比较浅显,再加上我好久不写后端了并且水平有限,文中难免出现错误和不足, 如果发现了可以告诉我我将进行订正:)。 闲话不多说接下来进入第一部分,怎样设计一个数据库表。俗话说好的设计是成功的一半,…

Read More

数据库性能演变,NoSQL简介

用粗糙的线条,做细致介绍 前言: NoSQL数据库作为时下互联网公司,解决高并发下热点数据读写的可替代方案,绝非三言两语就能讲完,本文从数据库的性能演变,再到NoSQL数据库的特性简单介绍,不堆代码,技术软文,文章最后会附上Redis技术要点脑图,有兴趣的同学可以看看。 数据库的性能演变 单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 1.数据量的总大小 一个机器放不下时…

Read More