❶ DBA和软件工程师的区别有多大
DBA和软件工程师的工作内容和岗位职责大不相同。
首先,数据库管理员任务安装和升级数据库服务器(如Oracle、Microsoft SQL server),以及应用程序工具。数据库设计系统存储方案,并制定未来的存储需求计划。一旦开发人员设计了一个应用,就需要DBA来创建数据库存储结构(tablespaces)。根据开发人员的反馈信息,必要的时候,修改数据库的结构。登记数据库的用户,维护数据库的安全性。保证数据库的使用符合知识产权相关法规。 控制和监控用户对数据库的存取访问。监控和优化数据库的性能。制定数据库备份计划,灾难出现时对数据库信息进行恢复维护适当介质上的存档或者备份数据备份和恢复数据库联系数据库系统的生产厂商,跟踪技术信息。
其次,软件工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位。这些岗位的分工不同,职位和/或级别不同,但工作内容都是与软件开发生产相关的。软件工程师是IT行业需求量最大的职位,稳居IT行业职位需求TOP10的第一位(第二位是高级软件工程师)。 软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/java等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/S B/S程序开发,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEB SERVICE、STRUTS等前沿技术。
除此之外,关于网络工程和软件测试的其他技术也要有所涉猎,以利于操控全局。 软件工程师可谓是软件项目开发的掌舵者。一名优秀的软件工程师应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉。虽然要求技术全面,但无须偏执于门门技术都精通,任何软件工程师都有自己的技术特长和偏向,对于自己手中的技术,可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。
❷ DBA,系统分析员,应用程序员,普通用户分别通过什么方式访问DBMS
数据库系统一般由数据库,数据库管理系统(及其开发工具),应用系统,数据库管理员和用户构成
一个硬件平台和数据库
由于数据库系统是数据量很大,加上与数据库管理系统丰富的功能使自己的规模大,所以整个数据库系统的硬件资源提出了更高的要求,它们是:
(1)足够大的内存来存储操作系统,数据库管理系统的核心模块,数据缓存和应用程序。
(2)有一个足够大的磁盘存储设备,如直接访问数据库,有足够的磁带(或计算机软盘)操作数进行备份。
(3)需要具有在为了提高数据传输速率更高的信道容量的系统。
二,软件
数据库系统软件包括:
(1)数据库管理系统。数据库管理系统被配置为建立,使用和维护的数据库软件。
(2)DBMS运行受支持的操作系统。
(3)具有高级语言和编译系统和数据库接口,便于开发应用程序。
(4)数据库管理系统为核心的应用开发工具。
应用程序开发工具是为应用程序开发人员和最终用户提供高效率的系统,各种软件工具多用途的应用程序生成器,如第四代语言。他们提供了一个良好的环境,数据库系统的开发和应用。
(5)对于一个特定的应用程序开发环境,数据库应用系统。
3
员工发展,管理和使用的数据库系统,主要的人,分别是:数据库管理员,系统分析员和数据库设计人员,应用程序员和最终用户。不同的人参与不同的数据抽象层,与数据的不同视图,如图1.30,各自的职责分别是:
1。数据库管理员(数据库管理员,简称DBA)在数据库系统环境中,有两种类型的共享资源。之一是一个数据库,而另一个是一个数据库管理系统软件。因此,需要专门的管理机构来监控和管理的数据库系统。 DBA是一个(群)人在这个组织,负责数据库系统的整体管理和控制。具体职责包括:
(1)确定数据库内容和结构什么样的信息应该存储在数据库中,DBA战术参与政策。因此,DBA必须参与数据库设计的全过程,并与用户,应用程序员,系统分析员密切合作,共同协商,提高数据库的设计。
(2)确定的存储结构和存取策略
DBA数据库,以巩固用户的应用需求,以及数据库设计人员共同决定,以取得利用率的存储结构和数据访问策略的高存取效率和存储空间。重要的值班保安要求
(3)和数据完整性约束的定义
DBA是确保数据库的安全性和完整性。因此DBA负责确定到数据库中,保密性和数据完整性约束的程度每个用户的访问。使用和运行<BR
(4)监控数据库/> DBA还有一个重要职责是监察数据库系统,及时处理运行过程中出现的问题的操作。例如,各种系统故障发生时,数据库会因此受到不同程度的破坏,数据库管理员必须在最短的时间内将数据库恢复到正确的状态,并尽可能不影响较少的正常运行影响计算机系统的其他部分。为此,DBA定义和实施适当的备份和恢复策略。如周期性数据转储,维护日志文件。在这方面的内容将在下面进一步讨论。改进和重组
(5)数据库重构
DBA也负责系统的运行要求空间利用监控系统,处理效率和操作进行记录,统计分析等性能指标,依靠的做法的工作,并根据实际的应用环境,持续改进数据库设计。很多数据库产品提供数据库健康监测和分析实用程序,DBA可以使用这些工具做的工作。
另外,处理数据的操作,大量数据的继续插入,删除,,随着时间的推移,会影响系统的性能。因此,DBA应该定期重新组织数据库,以提高系统性能。
当添加和更改用户需要的时候,DBA还大的数据库的改造,包括设计该数据库的重新结构部分。 2。为系统分析员和数据库设计人员应用系统分析员的需求是负责系统的分析和规范,以及用户和DBA进行组合,以确定系统的硬件和软件配置,并参与数据库系统的概要设计。
数据库,以确定负责在数据库中的设计数据的人员,数据库设计模式在不同的水平。数据库设计人员必须考虑用户需求调查和系统分析,数据库设计,然后。在许多情况下,数据库设计者将数据库管理员来执行。 3。负责设计和应用程序程序员编写应用程序的程序模块,调试和安装应用程序的程序员。 4。用户,用户是最终用户(最终用户)。最终用户通过使用数据库系统的用户界面的应用程序。接口方法是常用的浏览器,菜单驱动,操作表格,图形,报告撰写等,为用户提供简单,直观的数据表示。
终端用户可分为以下三类:
(1)临时用户。如用户不经常访问的数据库,但每次访问数据库时往往需要不同的数据库中的信息,例如用户在一般的企业或组织高层和中层管理人员。
(2)简单的用户。最简单的最终用户数据库用户。它的主要工作是查询和数据库,通常由应用程序设计,并具有友好的人机界面的应用程序来访问数据库。银行工作人员,机票预订员,酒店前台服务员都属于此类用户。
(3)用户的复杂性。经验丰富的用户,包括工程师,科学家,经济学家,科技工作者,如科技人员具有较高的背景。这类用户一般都比较熟悉数据库管理系统的各项功能直接访问使用数据库语言的数据库,甚至可以编写自己的应用程序的数据库管理系统API。
❸ 数据库dba工程师有35岁中年危机吗30岁之后再入行数据库dba职位可以吗
基本来不及,数据库这块和编程什么的有一定的共同性,那就是“易懂难精”。
就平时用到的来说可能增删改查就足够了,不过如果是dba那就不一样了。
小一些的简单一些的:表的设计,范式结构设计(其实就是数据范式结构化的意思),查询语句设计。
系统化一些的:展现控制,数据流程,数据调优,系统优化,数据治理等等。
高大上一些的,比如数据库架构,算法设计等等。
现在提倡云计算,可能还要有一些java的变成基础,可能还需要hadoop等等。
如果原来是做实施运维的,那么数据库确实会接触一些,不过内容不会特别深入,但是如果转行做dba那就不一样了。
记得十年前给公司的运维培训的时候,我曾经讲过数据库,不过运维大多兴趣缺缺,因为这些在实际中虽然一直在用,但并不是那么明显,他们不想弄明白为什么要这么调,只要知道怎么调就可以了,而为什么这么调正是dba的工作。
至于有没有35岁危机,答案是有,在国内来说dba和程序员是一样的,如果一个人35岁还是一个程序员,你觉得会不会有危机,肯定有,dba的工作也一样。当然dba稍微好一点就是这个工作真的需要经验,不过按照你的说法,现在入行,确实有点晚了。
不过也可能你十分适合数据库的工作,很快就能完成以上的内容,然后大获成功,马云也是30多岁才创业,不也成功了吗,我的说法只适合一般人,如果你能转行成功,那么只能说明你真的很强。
❹ 运维、测试、程序员,这些技术岗位哪个更有前景
在一个初具规模的互联网公司,从业务方面出发,有很多岗位类型,比如运营、客服、市场、产品、设计、技术等等。
在这些大类下面,还要细分各种小类,以技术为例,可分为前端(客户端)、后端、测试、运维、DBA等等,这些都是技术类岗位。
那么如果想从事这些技术岗位,该如何选择,哪一个更有前途呢?
这五个岗位,可以做一个分类,前端和后端、运维和DBA、测试
前端和后端属程序类,也就是通常大家知道的程序员,主要是根据产品的需求开发出软件,属于公司的技术核心,非常重要。没有程序员的软件公司,也不好意思称为软件公司。
运维和DBA,这两个岗位的主要工作是管理服务器程序运行的环境和依赖的数据。运维可以看成是服务器管理员,所有跟服务器相关工作都是由他处理,比如服务器程序运行环境CPU、内存、磁盘资源监控、网络是否稳定监控,服务器程序依赖的软件安装等等。DBA就是数据库管理员,专门管理生产环境的数据库如MySQL、Redis。这两个岗位的工资不一定比程序员低,但是市场需求没有程序员旺盛。一家软件公司可以没有运维和DBA,但是不能没有程序。运维和DBA一般只有上规模的企业配备,小公司都由程序员兼任,毕竟如果公司只有个位数的服务器,完全没有必要专门配备一个运维,老板也不愿意花这个钱。
测试,虽然也是技术岗位,但是我个人感觉他们的工作不和技术挂钩,他们的工作就是不断使用程序员开发出来的软件,找出其中的BUG和漏洞。与此同时,他们的另一项工作就是督促程序员干活,修BUG。
论这些岗位的技术含量,我觉得测试是最低的,低端的测试几乎没有技术门槛,只要有软件使用经验,基本上都能干干测试的活,毕竟只是用用软件找找BUG嘛,而程序和运维则不行,必须掌握基础的技术技能才能上岗。当然高端的测试另当别论,他们也可以牛逼到天上。
其次是运维,当然并不是说运维这个岗位没有技术含量,同样运维的技术含量也很高,只是通常情况下,程序员都会点运维的工作,装装环境,监控下服务器运行情况,都没什么问题。反过来,运维却不一定会程序员的工作。我觉得运维应该是脱胎与程序员,然后随着行业的发展,独立成为一个岗位,本质上还是依附与程序员。
最后则是程序,一个合格的程序员,不但要掌握程序员本职的技术,还需要会服务器运维的技术,比如自己搭建一个测试环境,这样的技能是必须的,所以对服务器必然要有较为深入的了解。同时需要会DBA的技术,通常DBA是在数据量巨大的情况下才会配备,大多数时候一家公司不需要DBA,DBA的工作的都由运维或者程序员兼职的。与此同时,程序员还需要测试技能,当程序员写出来一个程序时,免不了要进行自测,写测试用例等等,只有经过自己测试,才可以将功能提交给专门的测试人员进一步测试。
所以,对于这三类岗位,我觉得程序员的技术含量是最高的。
我们再来说说这些岗位的发展前景。
对于一个大公司来说,会有专门的研发部门、运维部门、测试部门,然后设有研发总监、运维总监、测试总监,这些领导在公司的身价不相上下,不存在谁压谁一头的情况。但是在小公司通常只有一个技术部,这个部门管辖所有技术类员工,包括程序、运维、测试,甚至有的公司还会包含设计人员。而技术部门的领导十有八九是程序员出身,几乎不太会是运维或测试出身。因为一个软件公司的技术部门,没有运维和测试,照样可以运转,虽然有可能转的不顺溜,但是一定可以转,但是没有程序员,即便运维和测试配备的多么强大,这个部门也转不起来。其次一个技术部门程序员的数量绝对是压制运维和测试人员数量的。因此在程序员中出技术部门领导的概率远大于在运维和测试中出领导,除非真的遇到难得一见的人才。
所以,如果你想从事互联网软件行业的技术岗位,要想选其中比较有前途的技术类岗位,那么首选程序员,当然,更多的机会也意味着有更大的竞争,同时也有更大的难度,你选择程序员不见得一定会成为技术部门的领导,选择测试和运维也不意味着职业生涯会默默无闻,只是相对来说程序员的情景更加明朗。
与此同时,关于35岁程序员会被淘汰的观点,其实运维和测试的危险性更大,仔细想想难道不是吗,运维和测试并没有比程序员更有优势,反而劣势一大堆,那么肯定比程序员先一步面对淘汰,这是市场规则。
❺ 程序员与数据库是2种不同职业吗
DBA 数据库管理员,DBA 的工作是 DBMS 管理和数据维护。这里的数据库是指企业级数据库,那种 PC 服务器上用的不算
好的 DBA 和好的程序员一样,既不愁没有市场也不愁没有价值
没有市场没有价值的只是没有达到一定水平的或者不求上进的一部分,任何职业都一样