当前位置: 首页 > 科技观察

数据库是工作的东西之一

时间:2023-03-17 01:44:00 科技观察

数据库是我们日常开发的一个组件或基础服务。可能有人会觉得直接当黑盒子用就可以了,何必呢。的确,数据库的设计也让我们在不知不觉中工作。但是在实际开发中,经常会遇到性能下降、BUG、服务问题等。对数据库了解一点可以更快地恢复并降低风险。另外,数据库作为一个经过多年发展接近成熟的产品,还有很多有趣的东西。设计数据库和存储引擎的工作量很大,还有各种取舍和取舍。比如,最容易想到的是,如果在写的时候按顺序写,数据插入效率会更快,但是如果按照一定的顺序检索,就必须找出来重新排序。例如,数据是如何序列化的,协议是如何组织的,索引是如何工作的,查询分析器和执行计划是如何工作的,如何选择执行计划来保证查询的高效;另外,数据在数据库中如何组织以保证数据的存储和压缩优化空间占用,如何提高磁盘到内存的访问速度,如何做垃圾回收……看过一些数据库相关的书籍和文章最近,我对此感觉很好。我会写我的理解,也会挑选一些高质量的英文翻译。今天是第一次翻译。什么是数据库?简而言之,数据库是可以轻松访问和修改的数据集合。任何数据库管理系统的主要工作都是可靠地存储数据并使其可供用户使用。即使是一堆简单的文件也可以轻松访问和修改。事实上,像SQLite这样的简单数据库实际上只是一堆文件。然而,SQLite是一个设计良好的文件,因为它允许这些操作:通过事务的数据安全性和一致性可以快速处理数百万数据通常,一个数据库可以看成下图这些部分组成:在许多书籍或论文中,数据库的描述有它自己的方式。比如《数据库技术内幕》一书中的组件图解是这样的:所以不要太在意我们如何组织这些组件或者如何命名处理流程,因为我们已经做了一些取舍以适应这篇文章的写作。您需要关注这些不同的组件。一般的理解是,数据库可以划分为多个交互的组件。CoreComponentsProcessManager:大多数数据库都有一个“池”,需要管理它来组织进程、线程等。甚至,为了达到纳秒级的极致性能,一些现代数据库使用自己的线程而不是基于操作系统线程。NetworkManager:NetworkI/O一直是重要的一环,尤其是分布式数据库。这也是一些数据库实现自己的网络管理器的原因。文件系统管理器:数据库遇到的第一个瓶颈是磁盘I/O。拥有一个完美处理操作系统文件系统甚至取代它的文件系统管理器是很重要的。内存管理器:为了避免磁盘I/O的影响,需要大量的内存。但是当你需要管理大量内存时,你需要一个高效的内存管理器。特别是当您有多个查询同时使用内存查询时。SecurityManager:用于管理用户认证和授权ClientManager:用于管理客户端连接工具BackupManager:用于备份和恢复数据库RecoveryManager:用于在数据库崩溃后恢复一致状态重启数据库监控Manager:使用记录数据库的活动日志,提供监控数据“管理”Manager:提供工具管理数据库、表空间、模式,管理数据库元数据查询,如表名和结构ManagerQueryParser:检查查询是否合法,如SQL语句中的词汇和语法错误。QueryRewriter:预优化查询QueryOptimizer:优化查询,让查询更高效的执行QueryExecutor:编译并执行查询DataManagerTransactionManager:处理事务CacheManager:理解和我们常见的缓存一样,把它们放在数据访问管理器:访问磁盘在后面的文章中,我们将重点介绍如何通过以下过程在数据库中管理和执行SQL查询:客户端管理器查询管理器数据管理员英文链接:http://coding-geek.com/how-databases-work本文转载自微信公众号“Tomcat那些事”,可通过以下二维码关注。转载此文请联系Tomcat那些东西公众号。