MYDB_Java
文章平均质量分 88
哗哗的世界
点点关注,共同进步
展开
-
数据管理_DM的实现
/TM事务管理器//PC页面缓存//数据库日志//页面索引//第一页DataItem和是数据库系统中数据管理的关键组件。DataItem提供了数据的存储和访问接口,支持数据修改和事务管理。而负责管理底层数据的访问、缓存、事务处理和日志记录,通过这些功能的实现,为上层模块提供了安全、高效的数据操作接口。两者的协作使得数据库系统能够以高效、可靠的方式管理和操作底层数据,确保数据的安全性和一致性。原创 2024-10-01 22:43:58 · 697 阅读 · 0 评论 -
4.4 版本管理器——VM实现
同时,可以看到其中有一个,说明也是实现了抽象缓存的,用到了模板方法设计模式,这个在介绍日志模块和数据管理器时也见到过。VM 的实现类还被设计为**Entry**** **的缓存,需要继承。原创 2024-09-07 17:49:23 · 662 阅读 · 1 评论 -
实战MYDB的mvcc与mysql的mvcc详解
最近做的一个简易版的MySQL-MYDB。里面也实现了mvcc。趁这个机会结合项目深入理解一下mvcc的机制。先来看MySQL的mvcc讲了啥?原创 2024-09-04 08:54:07 · 1015 阅读 · 0 评论 -
4.2 版本管理器——Entry与事务隔离级别
VM是基于两段锁协议实现调度序列的可串行化,并实现了MVCC以消除读写阻塞。同时也实现了两种隔离级别,所以我们还需要明确版本的概念;DM 层向上层提供了数据项(Data Item)的概念,VM 通过管理所有的数据项,向上层提供了记录(Entry)的概念。上层模块通过 VM 操作数据的最小单位,就是记录。VM 则在其内部,为每个记录,维护了多个版本(Version)。每当上层模块对某个记录进行修改时,VM 就会为这个记录创建一个新的版本对于一条记录来说,MYDB 使用Entry类维护了其结构。原创 2024-08-31 11:43:54 · 817 阅读 · 0 评论 -
4.1 版本管理器——2PL与MVCC
MVCC(,多版本并发控制)是一种数据库并发控制机制,用于解决数据库中多个事务并发执行时的读写冲突问题。MVCC通过维护数据的多个版本,允许并发的读操作和写操作更有效地进行,从而提高数据库的并发性能和系统吞吐量。原创 2024-08-31 10:45:32 · 1108 阅读 · 0 评论 -
4.3 版本管理器——版本条约与死锁检测
/ 事务1请求资源1// 事务2请求资源2// 事务3请求资源3// 事务1请求资源2// 事务2请求资源3// 事务3请求资源1在这些数据添加完毕之后,事务1在等待事务2,事务2在等待事务3,事务3又在等待事务1,此时就触发了死锁!原创 2024-09-03 09:30:05 · 1080 阅读 · 0 评论 -
MYDB 之九 | TableManager (TBM) 字段解析与表管理
而记录本身的结构, 将由TBM来维护, TBM维护记录的方式非常简单: 直接将记录的值, 转换成二进制的字节数组, 然后将该字节数组, 当做数据, 交给VM进行存储和管理. 之后, 当需要某条数据时, 则通过其地址, 从VM将其读出, 然后反解析出其值.NYADB会对上述的文法进行解析, 解析的方法也很简单: 首先将语句给token化, 然后之后就是if-else的方法进行判断和进行语句组装了. token化的方法也很简单, 分析出文法的词素, 然后写一个小自动机, 不断的切分就行了.原创 2024-07-21 21:29:51 · 949 阅读 · 0 评论 -
MYDB 之十 | 客户端与服务端
若 flag 为 0,表示发送的是数据,那么 data 即为这份数据本身;如果 flag 为 1,表示发送的是错误,data 是 Exception.getMessage() 的错误提示信息。客户端连接服务器的过程,实际上只是读入用户的输入,并调用 Client.execute()。是一个服务器类,主要作用是监听指定的端口号,接受客户端的连接请求,并为每个连接请求创建一个新的线程来处理;数据,这样可以避免特殊字符造成的问题,并在信息末尾加上换行符。这个类是服务器的启动入口,这个类解析了命令行参数。原创 2024-07-21 16:12:48 · 494 阅读 · 0 评论 -
MYDB运行环境的搭建
以上为拿到该项目做的第一件事情,源地址我已经放在下面啦,本着学习的心态输出一些内容,检测监督自己学习。MYDB。原创 2024-05-14 11:18:22 · 736 阅读 · 0 评论