当前位置: 首页 > 科技观察

一篇讲数据库,以后别说不懂数据库

时间:2023-03-12 22:45:19 科技观察

《数据分析需要懂数据库吗?》李先生最近经常听到这样的问题。很多新人觉得,如果只做业务,不走技术路线,数据库是不是就可以不学了?面试不需要准备吗?毕竟很多新人都是刚进公司的。当他们看到数据库中各种表复杂的链接方式时,他们就开始头疼了。更何况,我连SQL和数据库的区别都不知道,更不知道数据仓库的概念。然而,令很多人失望的是,数据库知识是我面试新人时问得最多的问题,没有之一。您需要了解数据库以进行数据分析吗?对数据库的理解程度取决于你定位在数据分析的哪个层次。我见过一些数据分析师不懂数据库,基于Excel文件源做数据分析。擅长做生意。但是,他们往往需要依靠IT部门的支持,需要IT部门提供一些基础的分析数据。有了对业务的理解,对业务数据的理解也能做好数据分析。还有一类数据分析师,他们已经从数据库和商业智能BI的角色转变为纯数据分析师。他们还可以通过对业务的理解和数据处理的技能和知识,在分析领域做得很好。他们的一个优势就是不需要在很大程度上过度依赖IT部门,通过给他们一定的权限就可以直接面对统一的数据源进行数据分析。有时一条SQL就是数据分析中的一个环节。所以作为数据分析师,个人觉得多点技能,有能力获取不同的数据渠道是有好处的。什么是数据库?首先,在了解数据库之前,我们需要了解数据是如何存储的。我们都知道,当我们的祖先还在荒野饮血的时候,就学会了用打结的纸条来存储数据。这些打结的绳子就是“数据”,虽然这种数据很难保存,也很难提取。后来,我们的祖先用甲骨文、竹简、纸来存储文字数据。在现代,发明了录音机和照相机来存储音频数据。虽然数据载体一直在变,但数据的存储方式并没有太大变化。都是传统的存储方式。直到信息时代的到来,数据的存储方式才发生了重大变化,并向文件和数据库两个方向发展。1、文件相当于将数据存储在Excel中,形成可读写的文件存储,然后通过python等工具对文件数据进行筛选、处理、提取;2、数据库是将数据按照其结构存放在计算机中,形成一个数据量很大的数据集合,相当于一个存放文件的文件柜。使用数据库存储数据是目前最流行的方式,因为数据库具有持久化存储,读写速度也非常快。更重要的是,数据库可以在很大程度上保证数据的有效性,不像Excel等文件,极易产生修改错误。数据库分类?根据早期的数据库理论,流行的数据库模型有层次数据库、网络数据库和关系数据库三种。在当今的互联网公司中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。关系数据库模型将复杂的数据结构归结为简单的二元关系(即二维形式)。在关系数据库中,几乎所有的数据操作都是基于一个或多个关系表,通过对这些关联表的分类、合并、连接或选择等操作来实现数据管理。关系型通俗的理解就是数据是以二维数组的形式存在的,可以理解为图书馆里书籍的排列。书架和地板可以理解为关系数据结构,书籍作为数据存在,所有的图书管理员都是不同任务的数据库进程。有人灭火(资料修复、备份),有人整理书架和书籍(资料整理、归档)。用户进程是指来图书馆的客户。他们阅读和移动书籍,管理员将维护它们。关系数据库诞生至今已有40多年。从理论的产生到开发再到产品的实现,如:常见的MySQL和Oracle,Oracle已经上升到数据库领域的霸主地位,形成了每年数百亿美元的巨大产业市场,而MySQL也是一个不容忽视的数据库,以至于被甲骨文斥巨资收购。非关系型数据库又称NoSQL数据库,本意是“NotOnlySQL”,作为传统数据库的有效补充。NoSQL数据库在特定场景下可以实现超乎想象的高效率和高性能。因为随着web2.0网站的兴起,海量数据对关系型数据库的存储能力提出了很高的要求,单机无法满足需求。很多时候需要集群来解决问题,而关系型数据库似乎无能为力。因此,非关系型数据库诞生了。非关系型数据库实际上是针对特定场景,以高性能和易用性为目的,具有专门功能的数据库产品,如谷歌的BigTable、亚马逊的Dynamo。SQL和数据库的关系这时候很多人会混淆sql和数据库的概念。很多新手认为Sql是用来存储数据的数据库,也有人认为sql是数据库的一种。为了让大家更容易理解,我打个比方:如果数据是一个表,我们可以根据不同的表关系,将它们放在不同的文件夹中。该文件夹相当于数据库的基本组成部分——数据表。而当我们的文件夹也非常繁杂时,我们可以将文件夹按照不同的构成类别存放在文件柜中。每个文件柜中可能有很多类别来存放不同的文件夹。这个文件柜相当于一个数据库。而当我们要从文件柜中查找某个文件时,需要遵循一定的规则才能找到,比如“合同文件放在三楼第四排的架子上”,执行这个搜索规则是需要一个数据库管理系统(DBMS)来实现的,相当于一个文件管理员,帮助我们管理数据库中的数据。最常见的数据库管理系统有SqlServer、MySql、Oracle等,而如果我们要给文件管理员下指令,就需要一种沟通语言,这就是SQL,所以SQL是一种用来操作数据库管理的结构化查询语言系统。他们之间的关系可以这样表述:这样大家应该不会再把SQL当成数据库了吧?