数据库开发岗工作的一点总结
2021-01-29 于石家庄·晓光
一、数据库开发岗(中级)要求
1、岗位职责:
-
负责ETL的开发、调度、执行、处理和维护;
-
负责数据库开发与运维;
-
负责数据探查及获取数据,处理临时数据需求;
-
负责Oracle设计、开发,数据库优化,包括SQL优化、索引及其它数据库优化手段;
-
负责项目日常运维等工作,数据库设计以及开发文档的编写。
2、任职资格:
-
计算机相关专业,至少有2年以上数据库开发经验;
-
熟悉使用ORACLE、MYSQL、PostgreSQL等至少一种主流数据库开发和运维,熟练编写存储过程;
-
熟练使用开源ETL工具KETTLE;
-
有数据库查询调优经验优先;
-
有报表开发、Cognos、保险行业项目工作经验者优先;
-
工作认真负责、态度严谨、有较强的学习能力,有团队精神及良好的沟通能力。
从岗位招聘信息分析具体岗位工作。
从中级岗位看3-5年以后的发展,初级岗位相应的要求降低。
从高级岗位看5-10年,大概是这样吧。也有转岗的,业务或者管理方向等。加油!
二、数据库开发工程师简介
1、ETL工程师
ETL(数据仓库技术),是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据,
ETL是BI(商业智能)项目重要的一个环节。
-
数据仓库(DW)
-
决策支持系统(DSS)
-
在线分析处理(OLAP)(对应的有OLTP)
-
数据挖掘(DM)
-
常用ETL开发工具,KETTLE以及数据库软件。
各个版本KETTLE
https://sourceforge.net/projects/pentaho/files/Data Integration/ODS浅析_肖飞figo的云计算专栏-CSDN博客
https://blog.csdn.net/xxfigo/article/details/51965808
2、BI工程师
商业智能(Business Intelligence,简称:BI),又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。
个人经验不足,简单理解呢,就是做报表!通过ETL把企业级的数据加工好了,数据还是数据,只不过是干净了、规范了、标准化了。如何使得数据发挥价值呢?一种途径是基于数据清单精准化为客户提供差异化的服务,例如推送温馨提示,生日祝福等等。另一种用途就是为企业提供决策的支持,例如人物画像、年龄段分布、地区分布、软件使用频率、渠道拓展情况等等报表的加工。BI可以说就是在ETL基础之上进一步实现商业价值。
2021-03-23补充对BI的一点理解
之前我个人一直理解的BI(商业智能)基本就等同于报表。商业智能的商业在于报表可以说的过去。报表本来就是给管理者汇报的对决策有指导意义的最终的表格,后来又有演化的图表形式的。而智能又怎么和技术联系的呢?固化的报表做出来了,通过数据告诉决策者:过去发生了什么,什么正在发生。
自动生成以往报表的数据结果也算是智能吗?严格来说更像是自动化。
怎么才能更智能呢?当下比较火的AI(人工智能)、机器学习好像更接近智能。流传一句关于如何落地AI,人工智能就是先人工再智能。看似智能的机器,实则是背后集体智慧的集成,模型的建立,通过训练预处理的数据集、数据库。BI如何更好地落地,让业务人员和数据分析师直面数据,进行数据挖掘和预测,将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策。
报表开发展现工具——Cognos
Cognos是在BI核心平台之上,以服务为导向进行架构的一种数据模型,是唯一可以通过单一产品和在单一可靠架构上提供完整业务智能功能的解决方案。它可以提供无缝密合的报表、分析、记分卡、仪表盘等解决方案,通过提供所有的系统和资料资源,以简化公司各员工处理资讯的方法。作为一个全面、灵活的产品,Cognos业务智能解决方案可以容易地整合到现有的多系统和数据源架构中。
Cognos这个软件目前还仅在工作中使用过,个人电脑还没有安装过。
三、数据库开发入门介绍
1、书籍学习
(1)《SQL必知必会》——入门经典书籍
(题外话,人民邮电出版社出版的图灵系列的书个人感觉都非常不错!)
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL可以说是编程,也可以说是最适合业务人员使用工具,当然比EXCEL有点难度,不过EXCEL也可以连接数据库,Office套装里面也有一个数据库Access。
通常的SQL有一种标准的语法,不同厂商的数据库产品在具体使用过程中,里面自带的函数会有区别。《SQL必知必会》看了就知道了,看的同时要结合实践!
(2)《精通Oracle SQL》
类似书籍作为工具书,具体问题再翻开
(3)官方参考文档、等其他……
2、软件要求
(1)数据库
Oracle 商用数据库,服务专业。
一般公司有一定规模都会配置DBA岗位,自己运维数据库,除非系统不是自己开发的,只少数据处理部分不再开发。也就是数据库管理运维工作不多。DBA岗位有区别于ETL/BI岗位,有兴趣可自行百度,暂不展开说明。
MySQL 开源数据库,从5.1版本开始为高性能的企业级环境提供支持。
MySQL最新的默认引擎InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。使得MySQL的应用越来越广。开源免费,还能支持企业级应用!对于中小型企业来说,谁不愿意试试呢。
PostgreSQL ……
Gbase ……
Greenplum ……
以上是我曾经用到的数据库。那么数据库都是用来干什么的?存储数据!简单来说,数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。举个例子,一个Excel表格也可以认为是一个微型的数据库,可以用文件形式保存各类型的数据表。当然对于成百上千万的很多数据维度的大量的数据,存储空间少则上百兆,动不动就GB级别的数据,Excel显然有点力不从心了。不过Excel的优势不在于处理大量的底层数据。那些数据的存储、加工、使用就交给专业的数据库软件来处理。
什么是数据库?数据库有什么作用?
对于设计一个数据库,一个存储引擎有大量的工作,以及各种取舍与权衡。比如最容易想到的,写入的时候如果顺序写,那数据插入效率更快,但如果是按某个顺序来检索,就必须得查出来再重新排序。比如数据怎样序列化,协议怎样组织,索引是怎样工作的,查询分析器、执行计划这些是怎样工作的,怎样挑选执行计划从而来保证查询的高效;另外数据库里数据是怎样组织来保证数据的存储、压缩来优化空间占用,又是怎样提升磁盘到内存中的访问速度,怎样做垃圾回收的…
(2)开发工具(集成开发环境IDE)
集成开发环境极大的为软件开发人员提供便利。数据库开发也是类似的。常用的快捷键、模板,函数、存储过程的调试,如果没有集成开发环境是很复杂的。
PL/SQL Developer 是一个为Oracle数据库开发存储程序单元的集成开发环境(IDE),使用 PL/SQL Developer,你能方便地创建你的客户端/服务器应用程序的服务器部分。PL/SQL Developer具有语法加强、SQL和PL/SQL帮助、代码助手等许多智能特性。
PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。
Navicat for MySQL 是管理和开发 MySQL 或 MariaDB
的理想解决方案。它是一套单一的应用程序,能同时连接 MySQL 和 MariaDB 数据库,并与 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、腾讯云和华为云等云数据库兼容。这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面。
(3)编辑器 Edit
Notepad++中文版是一款非常有特色的编辑器,是开源软件,可以免费使用。notepad-plus-plus缩写为NPP。Notepad++中文版是Windows操作系统下的一套文本编辑器(软件版权许可证: GPL)。Notepad++有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。Notepad++中文版功能比 Windows 中的Notepad(记事本)强大。Notepad++除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad++中文版不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。
UltraEdit简称UE编辑器,是款可以完全取代记事本的文本编辑器,支持编辑文本、十六进制、ASCII码,可以取代记事本,内建英文单字检查、C++及VB指令突显,可同时编辑多个文件,你可用于Web开发或者编程,是款非常理想的程序编辑器。
提高效率
Xmind 思维导图
Word 文档编辑与排版
3、论坛及资源(学习参考)
SQL 编程思想:一切皆关系_Tony.Dong的专栏-CSDN博客 https://blog.csdn.net/horses/article/details/104553075?utm_source=app
在计算机领域有许多伟大的设计理念和思想,例如:在 Unix中,一切皆文件。在面向对象的编程语言中,一切皆对象。关系数据库同样也有自己的设计思想:在SQL 中,一切皆关系。
SQL 教程 https://www.w3school.com.cn/sql/index.asp
ProcessOn - 免费在线作图,思维导图,流程图,实时协作 https://www.processon.com/
思维导图工具: XMind、幕布
4、数据库安装与实践
万事俱备,只欠东风!
(1)MySQL
个人电脑安装MySQL很容易的,稍微也得有点准备工作。以下是MySQL安装与实践简要说明。
MySQL安装简单说明,具体可参考后面配置教程,或者自行百度。
第一步,下载MySQL安装包,个人不建议傻瓜式安装,用免安装版的就挺好。
第二步,解压、配置相关参数。
第三步,启动!
安装是为了使用。Windows自带的CMD命令行工具就可以调用,方便验证安装是否成功,不过开发时候很不常用。为什么呢?因为大量的SQL加工逻辑的脚本,或者存储过程、函数。在CMD命令行中运行个人感觉极为不方便,除非是大神!或者是新手。
个人经验使用的是Navicat for MySQL
网上教程很多,稍微花点功夫查查练习一下就好了,不复杂。
官方下载地址:https://dev.mysql.com/downloads/mysql/
MySQL各版本的比较 https://www.cnblogs.com/5945yang/p/11492300.html
MySQL各版本的区别 http://blog.sina.com.cn/s/blog_62b37bfe0101he5t.html
MySQL v5.7.20 (32/64位 安装版与zip解压版) https://www.jb51.net/softs/451120.html
mysql5.7.19 winx64解压缩版安装配置教程 https://www.jb51.net/article/119335.htm
上面有些链接文章不是源于CSDN……CSDN还是很好的!支持中国开发者社区CSDN (Chinese Software Developer Network) (* ̄︶ ̄)
当前MySQL官网最新版本是8.0的,8.0可以认为是5.8。简单说两句,MySQL 5.7相比 MySQL5.6,有特别多的改进。团队主要关注速度,性能据报告是比之前版本提升了 2 至 3 倍!推荐下载5.7或者5.6出现的问题网上好查找。一般来说最新版本软件资料也是最少的,出问题时解决方案不好查找。我在2017、2018年那会儿用的是5.6版本的,那时候8.0刚出,5.7版本的还没有在企业中大规模使用,在公司也还不敢直接用于生产。
(2)Oracle
相对MySQL来说,Oracle安装包更大,不过一般初级入门都是Windows傻瓜式引导安装,需要配置个账号密码啥的,网上教程也很多。对于初学者,推荐先MySQL练习,然后使用Oracle。相对来说Oracle安装在个人笔记本电脑占用资源较大,初级练习基本都用不到。不过,后面有时间还是要熟悉一下PLSQL开发环境。很多大公司的核心数据库还是离不开Oracle的,毕竟Oracle是付费的商用数据库。稳定性和各种服务给人感觉还是更有保障的。一般数据库开发人员可能感觉不到,DBA感觉应该是更加明显。没有专门在DBA岗干过,个人理解 ^.^
四、数据分析与数据建模
试着浅谈一下吧。前面列了那么多,基本都是从技术岗位(数据库开发岗、ETL工程师、BI工程师)角度出发的,不过呢,数据是离不开业务的。DBA(数据库管理员)岗位相对更为底层,类似系统管理员都是提供平台的支持的后勤保障。ETL的工作已经是需要基于业务的逻辑规则来加工数据了。报表开发的工作更是根据企业内业务人员的需求进行开发,结果是否合理、准确。需要有一定的业务经验才能判断出来。
数据分析与数据建模,这个就是业务方与技术方交叉的岗位。业务的数据分析与建模,从技术上提供可实施可落地的解决方案,这是对于公司来说非常有价值的。
很多技术开发人员专注当前工作,很容易忽视了工作的目的。当前越来越多岗位需要有工作的经验的,正是应为工作经验中很大程度上为公司节省了学习成本和沟通成本。高效的完成工作给出理想的结果。好的开发需要懂业务,好的业务需要了解底层开发。不需要完全的掌握各个岗位的具体工作,但是需要在工作中不断思考。思考人的能动性如何充分的应用到工作中。把繁琐的大量重复的工作交给电脑去做。努力从“体力”劳动中解放出来,用更多的精力去从事“脑力”劳动。
在现在这个AI(人工智能)飞速发展的时代,苹果CEO库克曾说过:我不担心机器像人一样思考,却担心人像机器。 这个我是比较认可的,不过在工作中不要忽视集体的智慧。电脑的设计,CPU的运行,从单核到多核,软件的线程与进程,程序的多任务并行处理,定时任务的应用等等这一系列的工作都是集体智慧的应用。天才的头脑也需要大众来实现!从中值得学习东西还有很多很多!
好像有点跑题了,呵呵。逆水行舟,不进则退。加油!
……
完成比完美更重要!版本迭代,敏捷开发等等。都是先完成一版,然后不断优化,时间充足时可持续优化。
五、补充一点工作方法
基于上一篇需求分析岗的经验总结,补充几个使用的工作方法
一页纸工作法
思维导图的使用,充分发挥大脑的联想。多种颜色标记突出重点,轻重缓急一目了然。
电子版的思维导图便于记录整理架构脉络,便于修改分享。纸质版的手绘导图方便计划安排,工作串联梳理,更加灵活随意。各有优势,都可尝试一下。
便签工作法
更好的并行处理多项工作,既是可以是清单,也可以是临时存档。胸有成竹方能有条不紊。