gongjue 发表于 2023-10-27 05:04:07

零基础如何学习数据库?

本人IT在读,想要知道如何从零开始学数据库而且把这门课学得好呢?如果未来想要从事数据分析行业的话一定要学python吗?

hython 发表于 2023-10-27 05:04:58

老问题,新回答~
数据库确实是一个企业的心脏,企业高效的生产 、运营离不开数据管理,数据库就是数据管理的产物。当前国产数据库越来越流行(参见墨天轮国产数据库流行度排行),下文推荐openGauss数据库进行学习了解:
openGauss是一款携手伙伴共同打造全球领先的企业级开源关系型数据库,提供面向多核的极致 性能、全链路的业务和数据安全、基于AI的调优和高效运维的能力。openGauss全面友好开放, 采用木兰宽松许可证v2发行,深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。
第一步:如果没有更好的学习路径,就跟着官方文档走
1、openGauss官方文档:
https://www.opengauss.org/zh/docs/2.1.0/docs/Quickstart/Quickstart.html
2、openGauss代码托管平台
https://gitee.com/opengauss
3、华为云开发者学习路线
https://developer.huaweicloud.com/resource/roadmap/db.html
4、在公众号、B站、CSDN搜索“Gauss松鼠会”,关注浏览相关技术论文、大咖分享、实操案例等。
第二步:学以致用,边学边实践,参加(开源)项目
“发现问题或自荐 feature 。fork 源码。本地开发、自测。发起 pull request 。等待社区 CodeReview 。跟进社区意见调整代码。审核通过,合并进 master 分支,完成本次贡献。”
附:1、openGauss代码托管平台 https://gitee.com/opengauss ;2、openGauss社区贡献操作说明参考   https://www.opengauss.org/zh/contribution.html 。
第三步:总结经验,形成自己的知识库
例如,通过博客,写下你学习、使用项目的一些经验,记录你碰到的问题及解决的方法。
欢迎交流、分享

pennyhe 发表于 2023-10-27 05:05:41

我觉得需要优先确定的是,要学到什么程度。
就像武侠小说里面一样,你想到达几层的功力。
我认为可能分成这么几个层级了。
单纯会用

如果目标只是单纯会用,那这个比较简单,关系型数据库,例如mysql,非关系型数据库,例如HBase,自己可以尝试在机器上安装一下,然后看着官方文档,简单的语句执行完,或者入门API能够跑起来,就可以了。
如果为了加深印象,可以找一些相对来说比较复杂的题目来练习一下。比如说针对sql语句,就可以到牛客网上的SQL语法课程上面练习一下,基本上基本的用法都可以涵盖。俗话说,面试造核弹,工作拧螺丝。做到以上,就能够具备拧螺丝的能力了。
熟练使用

如果希望能够熟练使用,相关的SQL文档需要仔细看了,因为在“单纯会用”这个阶段,其实很多东西都没有覆盖到。例如SQL当中的窗口函数,rollup,上钻下卷等等功能,都需要熟练使用。
对应的原理也需要清楚了,比如说HBase当中,数据是如何查询的,如何写入的,如何进行Region分裂的,数据如何分裂的,这样才能够保证使用过程中,知道如何去建分区,如何去设计rowkey等等。
独立开发

所谓独立开发,有形的一面,也有神的一面。所谓形,就是要能够真的将数据库整合到项目当中,什么连接池,各种协议,查询优化都耍得有模有样,隔壁的DBA都馋哭了。而所谓神的一面,则是需要对数据库的内核有深入的洞察,哪里是分布式协议,优化逻辑如何组织,什么是RBO、CBO,慢查询日志如何去看,存储引擎如何运行等等。
这个阶段是一个平台期,因为大部分人都是从应用层转向底层开发的,对基础设施的软件架构方式不了解,很容易出现问题。
应用层的逻辑是搭积木,拉起来一个服务,然后就用Http协议和其他服务连接起来,这样开发起来非常快,但是容易造成架构的臃肿。
基础设施的开发逻辑则不同,因为涉及到大量的校验,逻辑转换,因此编程的结构是网状结构,无法用一条线索串联起来,同样开发难度也就大很多。
所以这一步对于了解数据库来说,是一个坎,也需要花很长的时间。
扫地神僧

到达这个层级,则需要从两个角度来进行了解。
首先在软件层面,需要对关系代数有非常深入的理解,同时,也需要对分布式协议有比较深入的理解,还需要对数据模型以及组织有比较深入的了解。这些是要有大量的论文研读以及工程实现经验的。
在硬件层面来看,当下的数据库已经不再是以前的纯软件工程了,很多时候是需要软硬件一体化的能力的。例如NVM这种新型存储,RDMA这种新型的网络技术,SSD这种新型的存储技术。这些技术一方面能够极大的提升数据库的性能,另一方面,硬件的介入也对原有的商业模式进行了颠覆。
上述就是我认为的学习数据库的进阶之路,希望对你有帮助。

yijing 发表于 2023-10-27 05:06:41

给亲推荐阿里云大学的数据库学习路线课程,希望对亲的学习有帮助!
课程介绍

从SQL到NoSQL,从自建到云上数据库,一站式学习+自测;
学习路线

阶段1:SQL基础
阶段2:关系型云数据库
阶段 3:NoSQL基础
阶段 4:NoSQL云数据库
阶段 5:高级应用

http://picx.zhimg.com/v2-962eff9fcda57d43b7320cb63f70bbfb_r.jpg?source=1940ef5c
课程免费学习地址
更多技术干货敬请关注云栖号知乎机构号:阿里云云栖号 - 知乎
本文为阿里云内容,未经允许不得转载。

asdf1024 发表于 2023-10-27 05:07:25

如果是系统的学习肯定是啃书,想我一样收集十来本书,有重点的来看。肯定是可以的

http://pica.zhimg.com/v2-9e612a2e76c564069c56ae7152608a36_r.jpg?source=1940ef5c
如果是针对面试,那肯定是面向面试题学习了。比如 【数据库面试题专项总结】
以下资料是5.4日,大菜菜的社区发起的活动,
<hr/>
本菜大菜菜,整理了数据库相关在资料,希望抛砖引玉,大家继续整理和完善
个人认为学习与完善一个部分,让这一块的知识成体系,是需要下面的几个阶段,我以数据库为例,展示我的复习过程。一家之言,全当抛砖引玉,希望大家在我的基础上,继续攀登。

学习第一步 整理知识网络,梳理体系
我在准备初期就整理的我需要掌握和我知道的数据库方面知识,然后根据我个人的技术技术方向,有倾向的学习和加强
大菜菜整理的,会有不全,大家请继续补充

0. 数据库基本使用与概念 mysql
1. 存储与索引,innodb引擎、myisam引擎、B+索引、hash索引、全文索引、聚簇索引、组合索引、覆盖索引、拓展(B树和B+对比)(LSM树与B+树对比)
2. 数据库事务与并发事务特性,隔离级别,并发情况下引入的故障,不同隔离级别如何解决上一级别的问题,事务的属性,事务处理技术,基于锁(悲观锁)的,乐观锁,MVCC,
3. 查询优化与查询优化引擎,查询优化的技术概述,引擎之逻辑优化(查询重写,子查询优化,等价谓语重写,外连接消除),物理优化(单表优化,两表连接,多表连接);实践中的优化思路,库表结构优化,索引优化,查询语句优化,缓存层面优化
我个人将数据库相关的东西分为了以上几个模块,
学习第二步 资料搜集
知乎
牛客
大量的书籍

学习第三步 面试题收集
目前探索的学习模式是针对面试题来,周一周二大家提出面试题,总结各种面试题目;然后,周三周四周五周六大家开始解答,每人开卷给出答案,即是复习,也是提高。周末的时候,大家都把各自的答案拿出来,在群里互相讨论,过一遍,整合出一个最终版本的给大家使用。
不同人思考的程度和角度是不一样的,希望集体的智慧能帮到大家。
问题尽管去收集,内群中参与收集问题的人,才会有资格参与答题和讨论过程。
参与题目收集的人

http://pica.zhimg.com/v2-56129f26472fd2dbe8987e74d8dbaece_r.jpg?source=1940ef5c

http://pic1.zhimg.com/v2-a8ab68d3813fd909dbc5e7d5a7dfdc70_r.jpg?source=1940ef5c

http://picx.zhimg.com/v2-be8d56e5919af6bb9d17092e4cbc3651_r.jpg?source=1940ef5c
第四步 解答,看看自己的技术实力如何

第五步,大家一起对答案,集思广益 弄出一个最终版
然后。面试会变得很简单
活动是啥,介绍在这里

轻舞任逍遥 发表于 2023-10-27 05:08:13

1、零基础,想要自学数据库的话,觉得起步阶段首选《数据库系统概念》这本书,因为这本书比较系统且综合全面。里面包含了数据模型、关系模型、基于对象的数据库以及XML、数据存储和查询、事务管理、数据库系统体系结构等各方面的相关内容。相当地直观易懂,里面的有些内容运用了结构清晰的图示和示例来取代形式化的证明。
2、然后,需要选择一个具体的数据库产品学习,比如常见的Access、SQL-Server、MySQL、Oracle、DB2,不同的数据库产品之间区别很大的,每一种数据库都有与之相应的经典书籍,官方也有那些入门文档。自己到网上搜对应的数据库名字就能找到了。当然,如果你想快餐式入门,那就看些视频或者国内的一些什么XXX从入门到精通、XX天精通XXX之类的书吧!
3、现在常见的数据库大部份都是关系型数据库,不管是理论和操作基本都是一样的,如果从操作和易学的角度来说,SQL SERVER还是比较容易上手的,网上的资料和各种书籍也不少,但是如果数据量大,数据库的稳定性来说,Oracle还是比较要强一点的。你就看自己的情况来选择吧!
3、总之,学习数据库,和学习其他电脑知识一样,要注重实践,也就是要上机实习。先学习一些数据库的基本概念,然后一边看书,一边上机,是个很好的方法。在网上去找一些有关的视频教程,跟着视频学习,会轻松一些。学习知识,关键在于持之以恒,这样才会有好的成绩。

如果做数据分析,Python是首选,首先入门简单,然后他是做大数据的很主流的语言,对于找工作而言更加容易,参考山东已经将Python纳入考试范畴,全国计算机等级考试已经将C变成了Python
页: [1]
查看完整版本: 零基础如何学习数据库?