面了个初级java,竟说不清什么是数据库?
面了个初级java,竟说不清什么是数据库?
本文转载自:
Hello 我是方才,8人后端研发leader、6年后端经验、年团队管理&架构经验。 专注于分享成体系的编程知识、职场经验、个人成长历程等! 文末,方才送你一份优质的技术资料,记得领取哟!
最近方才面试了一个初级ava同学,聊到Mysql,我首先问了一句,什么是数据库?
他说mysql就是数据库呀。。。
回答得看似正确,实际也是一点毛病都没有。
不过这反应出这位同学,对数据库是没有一个认知的,没有理解数据库的本质。
今天方才简单聊聊,什么是数据库?如果对你有所启发,记得点赞关注哟。
大白话讲解下就是:数据库就是按照一定的规则和结构,把数据组织管理起来,方便高效地对数据进行增删改查的软件程序。
再用小学生都能听懂的话理解下(直接看AI的回答了,嘿嘿):
image-2024122716522844
几个关键字对应着理解下,就很清晰了:
- 按一定的规则和结构:比如说大盒子、抽屉、贴标签;
- 把数据组织起来:把玩具放进对应标签的抽屉中;
- 方便快速增删改查:根据标签,定位玩具,快速存放、拿取等等。
基于这个理解,其实稍微有点编程基础的伙伴,就可以自己开发一个简单的数据库系统(和mysql、Oracle这种比较起来,只是实现的功能很简单,增删改查效率很低而已)。
方才就直接让AI,使用JavaScript实现了一个极简版的数据库;来动手感受下,其实数据库真没有很高大上。
下面的代码,就是包含了增删改查(CRUD)的基本功能的数据库:
代码语言:javascript代码运行次数:0运行复制class SimpleDB {
ctructor() {
this.db = {};
}
// 增加记录
insert(table, record) {
if (!this.db[table]) {
this.db[table] = [];
}
this.db[table].push(record);
}
// 查询记录
find(table, query) {
return this.db[table].filter(record => {
for (let key in query) {
if (record[key] !== query[key]) {
return false;
}
}
return true;
});
}
// 更新记录
update(table, query, updateData) {
ct records = this.find(table, query);
records.forEach(record => {
for (let key in updateData) {
record[key] = updateData[key];
}
});
}
// 删除记录
remove(table, query) {
this.db[table] = this.db[table].filter(record => {
for (let key in query) {
if (record[key] === query[key]) {
return false;
}
}
return true;
});
}
}
// 使用示例
ct db = new SimpleDB();
// 插入数据
db.insert('users', { id: 1, name: '方才', age: 25 });
db.insert('users', { id: 2, name: '方才呀', age: 0 });
// 查询数据
cole.log(db.find('users', { name: '方才' })); // 查名为【方才】的用户
// 更新数据
db.update('users', { id: 1 }, { age: 26 }); // 更新ID为1的用户的年龄
// 删除数据
db.remove('users', { id: 2 }); // 删除ID为2的用户
// 查看更新后的数据
cole.log(db.db);
这个一个简单的数据库就实现了,提供基本的CRUD操作:
insert(table, record)
:向指定的表中插入一条记录。find(table, query)
:根据查询条件在指定的表中查记录。update(table, query, updateData)
:根据查询条件更新指定表中的记录。remove(table, query)
:根据查询条件删除指定表中的记录。
运行的效果:
代码语言:javascript代码运行次数:0运行复制[ { id: 1, name: '方才', age: 25 } ]
{ users: [ { id: 1, name: '方才', age: 26 } ] }
是不是很简单,哈哈。
其实MySQL数据库也是类似是的,只是底层管理数据的数据结构更加复杂,数据文件间的组织更加复杂,实现了一套标准的增删改查语法糖而已。
回到开头的题目,方才会这样去回答:什么是数据库?
数据库就是按照一定的规则和结构,把数据组织管理起来,方便高效地对数据文件进行增删改查的软件程序。
不同类型的数据库系统,只是数据组织的规则和结构不同,以及提供的增删改查交互不同而已,比如说关系型数据库 Mysql 以逻辑概念 库、表、字段对数据进行管理,非关系型数据库 Redis 以key-value的形式对数据进行管理。
(ps:如果你了解更底层的内容,还可以去引导下面试官后续的发问)在深入点,比如说在MySQL底层,使用Innodb引擎,将表数据索引构建为B+树,以提高对数据的增删改查操作的效率;记录 redo log 实现了事务的持久性, undo log 实现了事务的原子性和一致性,通过MVCC+锁机制,实现了事务的隔离性。本质都是对数据的管理。
不知道今天的分享是否对你有所帮助,记得评论中告诉方才哟。
后续方才,也会持续输出完整的MySQL系列+面试内容,期望能帮大家建立一个完整的知识体系。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:什么是云服务器?有哪些相关技术?
下一篇:ETL和ELT还傻傻的分不清?
推荐阅读
留言与评论(共有 13 条评论) |
本站网友 成妖记 | 19分钟前 发表 |
还可以去引导下面试官后续的发问)在深入点 | |
本站网友 空耳 | 12分钟前 发表 |
那什么是数据库呢? 大白话讲解下就是:数据库就是按照一定的规则和结构 | |
本站网友 玉米煮多久就熟了 | 13分钟前 发表 |
[ { id | |
本站网友 男士减肥方法 | 1分钟前 发表 |
方才送你一份优质的技术资料 | |
本站网友 中韩 | 3分钟前 发表 |
方便高效地对数据文件进行增删改查的软件程序 | |
本站网友 番禺seo | 15分钟前 发表 |
以提高对数据的增删改查操作的效率;记录 redo log 实现了事务的持久性 | |
本站网友 塔西陀陷阱 | 10分钟前 发表 |
只是底层管理数据的数据结构更加复杂 | |
本站网友 两性常识 | 0秒前 发表 |
record):向指定的表中插入一条记录 | |
本站网友 古田租房 | 22分钟前 发表 |
回答得看似正确 | |
本站网友 火车退票规定 | 10分钟前 发表 |
26 }); // 更新ID为1的用户的年龄 // 删除数据 db.remove('users' | |
本站网友 今天是农历几月几号 | 25分钟前 发表 |
记得点赞关注哟 | |
本站网友 广百新一城 | 8分钟前 发表 |
基于这个理解 |