当前位置: 首页 > news >正文

关系型数据库的技术思路

一、网络协议

        需要根据TCP协议设计一个客户端和服务器之间的命令响应协议。

  1、服务端回复声明

  2、客户端发送登录包

  3、服务端返回登录结果

  4、登录成功后进入命令阶段,否则退出。

 

二、每个连接用一个线程

  服务器为每个客户端连接开启一个线程。

 

三、需要文件的随机读写

  需要方便的跳转到存储文件的指针。

 

四、数据结构用B+树

 1、非叶子节点存放很多个关键字

每个关键字递增排列。

  2、叶子节点存放关键字对应记录的文件存放指针。

 

五、每次读取一页到内存里

  1、查询时从文件里读取一页记录。

  2、把这一页记录用结构体格式放在内存中。

 

六、更新数据时需要B+树的查询

  1、非叶子节点中关键字的数组可以用折半查询。

 

七、每次删除节点、插入节点、更新节点要加排他锁

  1、删除、插入和新增时需要获取同一个排他锁。

  2、目的是在多个线程同时操作时保持数据前后一致。

 

排他锁是相对同一个存储文件的。

 

八、对应关系

 1、表的结构也需要用文件来描述

 2、数据库可以是对应一个文件夹。

 3、每个数据表对应一个文件。

 4、一个数据库下的所有表放在和数据库同名的文件夹里面。

 

九、需要设计B+树如何存在文件里

  每部分可以是固定的,也可以是前缀长度描述。

  需要设计一行中所有字段如何存放在文件里。

 

十、如何修改表结构

 1、表结构存在文件里。

  2、表结构被修改,记录文件也要修改。

  如果超出一行空间,需要移动记录,扩容文件。

 

如果移动一百万条记录,花费的时间太久,容易出错。

 

 

相关文章:

  • 代码随想录第16天|找树左下角的值、 路径总和
  • 嵌入式八股,Linux驱动三大基础类
  • Hive面试:行列转换
  • HTML/CSS/JS
  • XFeat:轻量级的深度学习图像特征匹配
  • leetcode 912. 排序数组
  • 【Eureka 缓存机制】
  • 【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战
  • ue5 3dcesium中从本地配置文件读取路3dtilles的路径
  • Module-info.java文件
  • Java 接口与实现类:为什么接口不能直接创建对象?
  • 数据库导出
  • 【2】VS Code 新建上位机项目---C#面向对象编程
  • IDEA中.gitignore未忽略指定文件的问题排查与解决
  • J-LangChain,用Java实现LangChain编排!轻松加载PDF、切分文档、向量化存储,再到智能问答
  • 【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现
  • YOLOv8+QT搭建目标检测项目
  • 推荐3个背景渐变色的wordpress主题
  • 深度生成模型(一)——具身智能综述与算法分类简介
  • 一劳永逸解决vsocde模块import引用问题
  • 上千螺母引发的枪支散件案:五金厂老板的儿子被诉,律师作无罪辩护
  • 波兰总统选举第一轮投票结束,出口民调显示将进入第二轮投票
  • 以色列在加沙发起新一轮强攻,同步与哈马斯展开“无条件谈判”
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长
  • 浙江美术馆馆长人民日报撰文:打开更辽阔的审美场域
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间