开发数据库的思路

一、设计目的
关系型网络数据库。


二、设计要求:
(一)安装快速
安装程序特别简单。

(二)配置简单
最小化配置。

(三)使用简单,高效
程序占用空间小,支持基本的SQL语法。

(四)稳定可靠
尽量不依赖其他不稳定库。

(五)其他要求
属于关系型数据库。
支持多个网络连接。
支持安全管理。


三、底层设计
1、支持什么操作系统平台:
Win10、Linux

2、编程语言:
最好的是C语言。
其次Java语言。

3、支持的网络连接方式:
TCP连接。

4、数据库服务器目录:
bin 存放二进制程序文件
conf 存放配置文件
lib 存放依赖库
data 存放数据文件
doc 存放使用介绍文件。

5、准备的知识点:
网络TCP编程、文件输入输出流、并发编程、图形化编程、数据结构、算法优化和测试。


四、支持什么功能
(一)网络连接控制

(二)数据的关系型管理
支持数据库和数据表。

(三)支持安全事务


五、性能设计问题
1、如何达到快速存储大量数据的要求?
算法要设计合理。

2、一个数据库实例支持多少个库?

3、数据库支持多少个表?

4、数据表支持多少个字段?

5、一个表最大的数据存储量多少?

6、每秒支持多少个并发连接处理?


六、功能设计
(一)记录的存储结构
1、采用什么数据结构满足快速查询?
要求:查询快速,有索引,有模糊查询。
逻辑结构:B+树
物理结构:数组,链表。

2、数据库文件具体什么格式?什么文件扩展名?

3、表的字段怎么设计?怎么存储到文件里?

(二)磁盘文件的存储顺序
怎么设计才能让数据方便从外存中读取到内存中,又方便存储到外存中?
采用库–>表–>段–>页–>行记录

每个部分的占用字节数很重要。

(三)增删查改操作设计
在内存中完成,刷新和持久化需要写入到磁盘中,注意防止从开头覆盖文件,使用追加模式。

难点:
读写数据是在内存中完成,还是在磁盘文件中完成?

如果是磁盘文件读写,需要跳跃磁盘文件的字节数,定位磁盘文件的字节数。

(四)什么读写架构:
多路复用+一个请求一个线程任务+线程池

(五)如何实现事务?
分两种数据库,一种支持,一种不支持。

(六)如何支持分库分表,数据库集群?

(七)如何设计基于TCP的数据库控制协议?
网络端口是哪个?


七、其他设计问题
(一)思考怎么跨平台运行和部署?

(二)思考怎么稳定运行?

(三)思考怎么最简单的安装(图形化安装、命令行安装)

(四)怎么设置开机自启动?
怎么设置后台运行?

(五)怎么设置环境变量?

(六)未来是否支持UDP连接?

(七)读写如何加锁?
锁住表的某行记录?
查询不加锁,只有插入和更新的时候才加锁。

(八)采用什么安全策略?
IP地址保护,密码保护,账号权限保护。

(九)如何修改密码?

(十)如何恢复初始化?

(十一)如何备份还原?

(十二)数据如何迁移到另一个库中?

(十三)有没有非关系型noSQL功能支持?

(十四)如何实现视图、函数、触发器、事件?


八、数据库最大的特点是什么
安装简单,大小简单。
功能最基本。
性能强大。
操作数据库的语言最简单。
支持SQL语言的通用规范。
满足最简单的,最频繁使用的功能。
程序文件简单高效,合理,少量。


九、连接和管理服务器的客户端:
支持两种管理方式:
命令行、图形化界面(客户端,网页版)


十、数据库服务器执行流程
1、客户端和服务端建立网络连接。
2、服务端开启线程处理这个连接。
3、客户端发送SQL命令。
4、服务端线程从网络套接字读取出命令。
5、服务器线程分析SQL命令。
6、服务器调用对应的方法。
7、服务器获得执行结果。
8、服务器向套接字返回执行结果给客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

USART串口外设

USART介绍 USART:另外我们经常还会遇到串口,叫UART,少了个S,就是通用异步收发器,一般我们串口很少使用这个同步功能,所以USART和UART使用起来,也没有什么区别。 其实这个STM32的USART同步模式&a…

大模型日报2024-05-30

大模型日报 2024-05-30 大模型资讯 大型语言模型未来将超越人类金融分析师 摘要: 新研究表明,大型语言模型在金融预测方面表现优于人类专家,为交易策略提供了宝贵的洞见。 DLM技术提高语音识别准确率 摘要: 本文介绍了通过去噪语言模型(DLM&a…

创新产品认定进行第三方软件鉴定测试的原因

鉴定测试报告 随着科技的飞速发展,软件产品在各个领域的应用越来越广泛,对于软件产品的质量和安全性要求也越来越高。为了确保软件产品的质量和安全性,创新产品认定进行第三方软件鉴定测试成为了一种必要手段。 一、保障产品质量 第三方软…

在Linux/Ubuntu/Debian上安装TensorFlow 2.14.0

在Ubuntu上安装TensorFlow 2.14.0,可以遵循以下步骤。请注意,由于TensorFlow的版本更新可能很快,这里提供的具体步骤可能需要根据你的系统环境和实际情况进行微调。 准备工作 检查系统要求:确保你的Ubuntu系统满足TensorFlow的运…

洛谷 P3870 [TJOI2009] 开关 题解 线段树

[TJOI2009] 开关 题目描述 现有 n n n 盏灯排成一排,从左到右依次编号为: 1 1 1, 2 2 2,……, n n n。然后依次执行 m m m 项操作。 操作分为两种: 指定一个区间 [ a , b ] [a,b] [a,b],…

从了解到掌握 Spark 计算框架(二)RDD

文章目录 RDD 概述RDD 组成RDD 的作用RDD 算子分类RDD 的创建1.从外部数据源读取2.从已有的集合或数组创建3.从已有的 RDD 进行转换 RDD 常用算子大全转换算子行动算子 RDD 算子综合练习RDD 依赖关系窄依赖宽依赖宽窄依赖算子区分 RDD 血统信息血统信息的作用血统信息的组成代码…

LM2733升压芯片

具有 40V 内部 FET 开关且采用 SOT-23 封装的 LM2733 0.6MHz 和 1.6MHz 升压转换器 外观 参考价格 1 特性 电路原理图 基于LM2733升压电路设计-CSDN博客https://blog.csdn.net/qq_31251431/article/details/107479885 特此记录 anlog 2024年5月31日 高压方案 此方案经过更多…

MySQL -- SQL笔试题相关

1.银行代缴花费bank_bill 字段名描述serno流水号date交易日期accno账号name姓名amount金额brno缴费网点 serno: 一个 BIGINT UNSIGNED 类型的列,作为主键,且不为空。该列是自动增量的,每次插入新行时,都会自动递增生成一个唯一的…

游戏安全 | 一款「安全」的SLG游戏应该是什么样的?

谈到SLG游戏,也许会想到《万国觉醒》,海外上线5个月后,以5400万美元的月流水创造了新的SLG手游海外收入纪录。 谈到SLG游戏,也许会想到《王国纪元》,通过两军对战的方式,以大面积消灭敌人的攻势&#xff0c…

数据库开发-MySQL01

目录 前言 1. MySQL概述 1.1 安装 1.1.1 版本 1.1.2 安装 1.1.3 连接 1.1.4 企业使用方式(了解) 1.2 数据模型 1.3 SQL简介 1.3.1 SQL通用语法 1.3.2 分类 2. 数据库设计-DDL 2.1 项目开发流程 2.2 数据库操作 2.2.1 查询数据库 2.2.2 创建数据库 2.2.3 使用数…

echarts学习:将echats实例代理为响应式对象可能带来的风险

1.起源 最近我在学习如何封装echarts组件,我所参考的其中一篇博客中提到了一个“图表无法显示的问题”。 根据其中的介绍,造成此种问题的原因是因为,使用ref接受了echarts实例,使得echarts实例被代理为了响应式对象,进…

ChatGPT-4o在临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模中的应用

ChatGPT-4o在临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模中的应用 2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5,将人工智能的发展推向了一个新的高度。…

独孤思维:副业赚钱根本不需要才华

01 做副业,远远改达不到比拼智慧和才能的地步。 只要你足够勤奋,足够坚持,就一定能拿到结果。 只是时间早晚的问题。 我们经常听到一句话,大多数人,远远达不到拼天赋的地步。 就是这个逻辑。 你看独孤&#xff0…

大数据系统架构师的论文如何写

撰写一篇关于大数据系统架构的论文需要系统地组织和表达复杂的技术和概念,同时展示您的深厚理解和专业知识。以下是一个基本的结构和一些关键要点,可以帮助您开始: 1. 引言 背景: 介绍大数据的重要性及其在现代信息时代的影响。动机: 阐述为…

SpringBoot项目中如何使用Redisson队列详解

一、SpringBoot配置Redisson 1.1 引入依赖 <!--Redisson延迟队列--> <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.1</version> </dependency>1.2 代码配置 Data Co…

AI预测福彩3D采取888=3策略+和值012路一缩定乾坤测试5月29日预测第5弹

今天继续基于8883的大底&#xff0c;使用尽可能少的条件进行缩号&#xff0c;同时&#xff0c;同样准备两套方案&#xff0c;一套是我自己的条件进行缩号&#xff0c;另外一套是8883的大底结合2码不定位奖号预测二次缩水来杀号。好了&#xff0c;直接上结果吧~ 首先&…

云计算面试题

5.20日 java的集合体系结构 它提供了一组接口、类和算法&#xff0c;用于存储和管理对象集合。Java的集合框架包括多个基本接口&#xff0c;如Collection、List、Set、Map等。Collection是集合层次结构的根接口&#xff0c;代表一组对象&#xff1b;List是有序集合&#xff0…

大数据组件doc

1.flink Apache Flink Documentation | Apache Flink 2.kafka Apache Kafka 3.hbase Apache HBase ™ Reference Guide 4.zookeeper ZooKeeper: Because Coordinating Distributed Systems is a Zoo 5.spark Overview - Spark 3.5.1 Documentation 6.idea组件&#xff08;…

Python安装vnpy教程

安装vn.py(一个用于开发量化交易应用的Python库)请确保你已经安装了Python环境 (推荐使用Python3.7或以上版本)。 1. 安装Python和pip 确保你已经安装了Python和pip。如果没有,请先安装。 Windows 下载Python安装包:https://www.python.org/downloads/安装Python时,确…

BUUCTF Crypto RSA详解《1~32》刷题记录

文章目录 一、Crypto1、 一眼就解密2、MD53、Url编码4、看我回旋踢5、摩丝6、password7、变异凯撒8、Quoted-printable9、篱笆墙的影子10、Rabbit11、RSA12、丢失的MD513、Alice与Bob14、大帝的密码武器15、rsarsa16、Windows系统密码17、信息化时代的步伐18、凯撒&#xff1f;…