首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >面了个初级java,竟说不清什么是数据库?

面了个初级java,竟说不清什么是数据库?

作者头像
方才编程_公众号同名
发布2025-01-01 10:45:36
发布2025-01-01 10:45:36
1310
举报
文章被收录于专栏:方才编程方才编程

本文转载自:https://fangcaicoding.cn/course/14/72

Hello 我是方才,8人后端研发leader、6年后端经验、3年团队管理&架构经验。 专注于分享成体系的编程知识、职场经验、个人成长历程等! 文末,方才送你一份优质的技术资料,记得领取哟!

最近方才面试了一个初级ava同学,聊到Mysql,我首先问了一句,什么是数据库?

他说mysql就是数据库呀。。。

回答得看似正确,实际也是一点毛病都没有。

不过这反应出这位同学,对数据库是没有一个认知的,没有理解数据库的本质。

今天方才简单聊聊,什么是数据库?如果对你有所启发,记得点赞关注哟。

那什么是数据库呢?

大白话讲解下就是:数据库就是按照一定的规则和结构,把数据组织管理起来,方便高效地对数据进行增删改查的软件程序。

再用小学生都能听懂的话理解下(直接看AI的回答了,嘿嘿):

image-20241227165223844

几个关键字对应着理解下,就很清晰了:

  • 按一定的规则和结构:比如说大盒子、抽屉、贴标签;
  • 把数据组织起来:把玩具放进对应标签的抽屉中;
  • 方便快速增删改查:根据标签,定位玩具,快速存放、拿取等等。

基于这个理解,其实稍微有点编程基础的伙伴,就可以自己开发一个简单的数据库系统(和mysql、Oracle这种比较起来,只是实现的功能很简单,增删改查效率很低而已)。

简单实现个数据库

方才就直接让AI,使用JavaScript实现了一个极简版的数据库;来动手感受下,其实数据库真没有很高大上。

下面的代码,就是包含了增删改查(CRUD)的基本功能的数据库:

代码语言:javascript
复制
class SimpleDB {
    constructor() {
        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) {
        const 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;
        });
    }
}

// 使用示例
const db = new SimpleDB();

// 插入数据
db.insert('users', { id: 1, name: '方才', age: 25 });
db.insert('users', { id: 2, name: '方才呀', age: 30 });

// 查询数据
console.log(db.find('users', { name: '方才' })); // 查找名为【方才】的用户

// 更新数据
db.update('users', { id: 1 }, { age: 26 }); // 更新ID为1的用户的年龄

// 删除数据
db.remove('users', { id: 2 }); // 删除ID为2的用户

// 查看更新后的数据
console.log(db.db);

这个一个简单的数据库就实现了,提供基本的CRUD操作:

  • insert(table, record):向指定的表中插入一条记录。
  • find(table, query):根据查询条件在指定的表中查找记录。
  • update(table, query, updateData):根据查询条件更新指定表中的记录。
  • remove(table, query):根据查询条件删除指定表中的记录。

运行的效果:

代码语言:javascript
复制
[ { 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系列+面试内容,期望能帮大家建立一个完整的知识体系。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 方才编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 那什么是数据库呢?
  • 简单实现个数据库
  • 参考回答
  • 后续预告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档