数据库的架构与应用是程序员在开发软件的时候会经常用到的一个编程开发技术,而本文我们就通过案例分析来简单了解一下,数据库架构开发基础知识分享。
数据库类型
OLAP:联机分析处理----对海量历史数据进行分析,产生决策性的策略----数据仓库—Hive
OLTP:联机事务处理----要求很短时效内返回对应的结果----数据库—关系型数据库(mysql、oracle)
内容架构
磁盘角度去看索引机制(运作机制提升性能原理)
索引机制的分析和基本介绍
索引机制的分类和概念
索引本身的优缺点以及不同分类的优缺点
索引和磁盘的关系
数据读取时主要时间开销
从概念模型上来讲,从磁盘读出一条数据需要两步:
将磁头移动到数据所在的扇区,找到数据所在的页,将这一页数据加载到内存
在内存中,找到数据所在的偏移量,并返回该记录
总结分析瓶颈点
这两步中,1步消耗的时间远远大于2步,其原因是需要移动磁头到给定扇区,时间开销由寻道和延迟两部分构成,通常在毫秒级。而从内存直接读取数据,时间为纳秒级。
优化的方式
主要的时间开销来源于寻找数据所在的页。因此优化寻找数据所在页的需求是非常紧急且重要的。
数据量计算
对于给定大小的数据量(比如2^20条)、平均每条记录所占用的内存空间(比如2^7byte)和每一页的大小(如4kb),那么平均每页的记录数和所需的数据页数就可以确定,分别是(32(2^12/2^7)条和2^15(2^20/2^5)页)。
传统暴力(顺序型读写)X
如果使用遍历的方式,将每一页加载到内存然后搜索,那么坏情况下需要1万次的读取数据页的操作才能搜索到给定记录。这就好像我有一本书,我要从一页一指翻到后一页,才能找到我要读到的某一行文字,这显然不太高效。
索引机制(半随机性读写)√
优化的办法是建立索引,将数据按索引排序,对于每一条数据,我可以建立一个索引+指针来指向该数据的起始地址。(空间来换时间)