【摘要】很多数据库管理员可能对存储引擎并不熟悉,但接触MySQL以及其他一些NoSQL分布式数据库比较多的人可能对存储引擎就会深有感受。不同的存储引擎对数据的结构、数据的存储方式、数据的读取方式等都有不同的要求和特点。存储引擎的基本思想是决定具体数据库产品的适用场景的最根本原因,本文希望通过这些原理性的讨论和分析展示给大家有一个宏观的视图,从而指导具体的数据库设计实践。
1. 什么是数据库的存储引擎技术
数据库的存储引擎是什么?它主要解决什么问题?
很多数据库管理员可能对存储引擎并不熟悉,因为大多数常见关系型数据库基本只有一种存储引擎,没有给我们选择和设计的机会,例如Oracle、SQL Server。但是如果我们接触MySQL以及其他一些NoSQL分布式数据库比较多的人可能对存储引擎就会深有感受。首先,我们认为存储引擎就是为了实现数据存储以及数据检索而实现的解决方案,如何建立索引,如果实现更新,如何检索数据等都是它的功能实现范畴。常见的存储引擎有哈希存储引擎和树存储引擎,树存储引擎又分为B-Tree、B+Tree、LSM-Tree等若干种。不同的存储引擎对数据的结构、数据的存储方式、数据的读取方式等都有不同的要求和特点。
2. 不同存储引擎如何建立索引
2.1 B-Tree
B树数据结构其实是在我们大学当中所学数据结构课程当中的二叉树基础上的一种升级和改进。最早是由德国计算机科学家Rudolf Bayer等人于1972年在论文 《Organization and Maintenance of Large Ordered Indexes》提出。