[译] 数据库是如何工做(一)介绍

原文在这里how-databases-workhtml

当我回想涉及到关系数据库的知识点时,我不由以为如有所失。它们不少地方会用到。会有不少不一样的数据库:小而有用的 SQLite 到强大的 TealData。可是,只有不多的文章解释数据库是如何工做的。你能够本身谷歌一下 “关系数据库是如何工做”,看看结果数量是多少。此外,那些文章都是很短的。而如今,若是你在寻找最时髦的技术(大数据,NoSQl 或者 JavaScript),你会找到更多深刻的文章解释他们是如何工做 这是由于关系数据库太旧,太无聊,以至于不能在大学课程、论文和书籍以外解释吗?算法


做为开发者,我讨厌使用我不懂的东西。再者,数据库已经被使用40多年,确定是有缘由。这些年来,我花数百个小时去真正理解这些我天天用的黑盒子。关系数据库是颇有趣的,由于它们(的理论)基于可用性和可重性(useful and reusable concepts)。若是你对数据库感兴趣,而你历来没有时间或者意愿去深刻研究这个大概念, 你会喜欢这篇文章。 尽管这文章的标题是明确,但本文的目的不是如何使用数据库。因此,(本文假定)你应该明白如何写简单的join查询和基本的CRUD操做;不然你可能没法理解这篇文章。这是你惟一须要知道的事,我会解释其余全部的东西。 我将会从一些计算机科学的东西开始讲,好比是时间复杂度。我知道有些人会讨厌这概念,但若是你不理解这些东西,你将没法理解数据库里面那些精巧的东西。因为这是个大主题,我将会只关注我认为重要的东西,即:数据库处理 SQL 的方式。我将只介绍数据库背后的概念,以便读到文章的最后,你会对(执行语句时)数据库引擎下面发生什么有一个清晰的概念。 因为这是一篇设计不少算法和数据结构的技术长文,全部须要花多点时间去阅读。一些概念是很难理解的;你能够跳过它,这也能获得总体的概念。 为了让你更容易理解知识,这文章或多或少分红3部分数据库

  • 低级和高级数据库组件的概述
  • 查询优化过程的概述
  • 事务和缓冲池的管理的概述

(因为本来太长太长了,我把它分红几篇文章,陆续更新)数据结构

  1. 回到原点(从新讲下算法)
  2. 全文概述
  3. 客户端管理
  4. 查询关联器
  5. 数据管理器
  6. 总结 在写这篇文章以前,我知道这个主题有多大,我知道要写一篇关于它的深刻文章须要时间。事实证实,我很是乐观,并且我花了比预期多两倍的时间,但我学到了不少东西。 若是您想要对数据库有一个很好的概述,我建议您阅读研究论文《数据库系统的体系结构》对数据库有很好的介绍(共110页),并且非计算机专业人士也能读懂。这篇文章帮助我找到了本文的写做计划,但没有像个人文章那样关注数据结构和算法,而是更多地关注架构概念。 若是您仔细阅读本文,您如今应该了解数据库的强大功能。因为这是一篇很长的文章,让我提醒一下咱们所看到的内容:
  • B+ Tree索引的概述
  • 数据库的全局概述
  • 概述基于成本的优化,重点关注链接运算符
  • 缓冲池管理概述
  • 事务管理概述

可是数据库包含更多的奇淫巧技。例如,我没有谈到一些棘手的问题,例如架构

  • 如何管理集群数据库和全局事务
  • 如何在数据库仍在运行时拍摄快照(snapshot)
  • 如何有效地存储(和压缩)数据
  • 如何管理内存

所以,当您必须在bug多多的NoSQL数据库和坚如磐石的关系数据库之间进行选择时,请三思然后行。不要误会,一些 NoSQL 数据库是很好的。但它们毕竟太年轻,并只能解决少数应用关注的特定问题。 最后说一句,若是有人问你数据库的原理是什么,你不用溜之大吉,如今你能够回答:数据结构和算法

相关文章
相关标签/搜索