标签:

算法

日志管理器 我们已经认识到,为了提高性能,数据库将数据存储在内存缓冲区中。但是,如果在事务提交时,服务器崩溃,你就会丢失所有内存中的数据,这将导致事务持久性问题。 你可以将所有数据写入磁盘,但是,如果服务器崩溃,你可能只写入一半数据,这会导致事务的原子性问题。 事务所做的任何修改写入必须要全部撤销或全部写入。

1 个评论 2.2K 次阅读

事务管理器 最后但并不是不重要的,这一部分关于事务管理器。我们将看到如何保证每个查询都在自己的事务中进行。但是,在此之前,我们需要了解 ACID 事务的概念。 I’m on acid 一个 ACID 事务是一个工作单元,保证 4 件事: 原子性(Atomicity):事务“要么全做,要么全不做”,即便要持续 10 个小时。如果事务崩溃,状态将回到事务开始之前(此时事务回滚)。 隔离性(Isolat ...

0 个评论 2.2K 次阅读

数据管理器 在这一步,查询管理器已经执行了查询,需要从表和索引获取数据。查询管理器请求数据管理器读取数据,但是这里有两个问题: 关系数据库使用的是事务模型。所以,当其他人正在使用或修改数据时,你不能同时获取数据。 数据获取是数据库中最慢的操作,因此,数据管理器需要足够聪明,以便将数据缓存在内存缓冲区中。 在这部分,我们将了解关系数据库是如何处理这两个问题的。我不会详细介绍数据管理器是如何得到数据的 ...

0 个评论 3.6K 次阅读

简单的例子 我们已经见识到了 3 种类型的连接操作。 现在,假设我们需要连接 5 张表来获取一个人的全部信息。一个人有: 多个手机(MOBILES) 多个邮箱(MAILS) 多个地址(ADRESSES) 多个银行账户(BANK_ACCOUNTS)

0 个评论 2.2K 次阅读

概览 前面我们已经介绍过数据库内部的基本组件。现在,我们需要回到最高层。 数据库是一种能够轻松访问和修改的信息集合。但是,简单的文件也可以做相同的事情。事实上,最简单的数据库,比如 SQLite,就是一系列文件。但是,SQLite 是一组被精心组织的文件,允许你: 利用事务保证数据安全和一致 即使你处理百万级别的数据,它的处理速度依然很快

0 个评论 2.1K 次阅读

数组,树和哈希表 现在我们已经明白了时间复杂度和排序的思想,接下来我要告诉你三个数据结构。这些数据结构都很重要,因为它们是现代数据库的骨架。我也会引入数据库索引这一概念。 数组 二维数组是最简单的数据结构。表格可以被当成是一个数组。例如: 这个二维数组就是带有行和列的表格: 每一行表示一个对象 每一列描述对象的特征 每一列存储一种特定的数据类型(整型,字符串,日期等) 虽然这种数据结构非常适合与保 ...

3 评论 2.4K 次阅读

《Qt 学习之路2》逐步到达尾声。尽管我们不可能在简简单单的几篇文章中将 Qt 所有内容全部涵盖(更不要说 Qt 中那些控件的使用),我想通过一定时间的学习,终究可以让文档替代这些文章。按照我的观点,这些文字仅仅是一个粗略的介绍,当你明白了大致的思路时,真正要做的,是去认真读 Qt 的文档。只有这样,才能做出自己想要的程序。当我们慢慢结束这一部分时——肯定还会有更多有关 Qt 的文章——也可以试着 ...

1 个评论 2.2K 次阅读

关于我

devbean

devbean

豆子,生于山东,定居南京。毕业于山东大学软件工程专业。软件工程师,主要关注于 Qt、Angular 等界面技术。

主题 Salodad 由 PenciDesign 提供 | 静态文件存储由又拍云存储提供 | 苏ICP备13027999号-2