本节书摘来自华章社区《DBA修炼之道:数据库管理员的第一本书》一书中的第1章,第1.12节新技术对DBA的影响,作者(美)Craig S. Mullins,更多章节内容可以访问云栖社区“华章社区”公众号查看
1.12 新技术对DBA的影响
每当企业引进做生意的新方法和新技术时,DBA都要行动起来。数据是任何应用程序的心脏,随着大多数的新技术为程序开发人员所采用,它们也对数据产生了影响。实际上,数据是现代商业的生命线,数据库容纳数据,而DBA是数据库技术尤其数据库集成技术方面的专家。
接下来研究三种具体的新技术,它们在某种程度上都依赖数据库管理的有效部署:数据库耦合的应用程序逻辑、互联网电子商务开发和手持计算。
1.12.1 过程DBA:管理数据库逻辑
传统的数据库管理系统作用的域中规中矩,包括存储、管理和访问数据。尽管这些核心功能依然适用于现代DBMS产品,一些额外的程序功能正慢慢成为很好的必需功能。如触发器、用户定义的函数和存储过程,都能够为DBMS而非单独的应用程序定义业务规则。这些功能使得应用程序逻辑与数据库服务器紧密耦合。
由于所有最流行的RDBMS产品都提供了复杂的功能来促进数据库耦合程序逻辑,所以就需要额外的工作来管理并使用这些功能。这需要对数据库管理的管理准则进行扩展。通常情况下,当有新功能添加时,管理、设计以及对这些新功能的管理统统都是DBA的任务。如果没有适当的规划和准备,可能就会导致混乱。首先研究DBMS中数据库逻辑是如何存储的。
存储过程
可以认为存储过程是在数据库中的程序。存储过程的程序逻辑是通过一些数据库命令进行维护、管理和执行的。使用存储过程主要是为了将应用程序代码从客户端转移到数据库服务器。存储过程通常在客户端/服务器环境中消耗较少,因为一个客户端调用存储过程就会运行多个SQL语句。而直接运行多个SQL语句的替代方案的效率相对较低,因为其增加了网络流量却降低了应用程序的性能。存储过程是独立的数据库对象,它本质上不与数据库中的其他任何对象相关。一个存储过程可以访问和/或修改多个表的数据。
触发器
触发器是一种关联到数据库表的事件驱动的特殊程序。数据库的数据改变时,触发器代码会自动在RDBMS中运行。每个触发器都关联到一张单个的、指定的表。触发器可以看作一种高级形式的规则或使用程序逻辑编写的约束。触发器不能直接调用或执行,一旦对它所关联的表进行插入、更新或删除操作,它将在RDBMS中自动运行。触发器一旦创建,就始终在它的“导火索”事件出现时运行了。
用户自定义函数
用户自定义函数(UDF)提供了一个基于一系列输入值的结果。UDF是一种可以代替标准的、内置SQL标量或列函数执行的程序。标量函数将结果集的每一行数据进行变换;列函数计算结果集中每一行的特定列的值,并返回一个单个的值。一旦写入且在RDBMS中定义,UDF就变得像任何其他内置的数据库函数一样。
表1-2概述了存储过程、触发器和用户自定义函数之间的差异。
存储过程、触发器和UDF一旦为应用程序和开发人员所用,就要采取措施确保它们得到恰当的管理。DBA必须要解决质量问题、可维护性问题、效率问题和可用性问题。如何以及何时测试这些程序对象?测试一旦失败将影响整个企业,而不是单一的应用程序。这无形中增加了这些对象的可见性和关键性。一旦失败谁将为之负责?答案无疑就是:DBA。
管理程序数据库逻辑的重担应落在熟知该准则的人身上。此时,需要一种新型的DBA来管理数据库程序逻辑。这种新的角色可以称作过程DBA。
过程DBA应为那些需要程序逻辑支持的数据库管理任务负责。他们的主要职责就是确保存储过程、触发器和用户自定义函数能有效地规划、部署、共享和重用。他们也负责对所有触发器、存储过程和用户自定义函数进行编码与测试,当然,编码主要是由应用程序开发人员负责的,而过程DBA负责其准确度和性能。
过程DBA应参与并主导对所有程序数据库对象(触发器、存储过程和UDF)的审查和管理。尽管过程DBA不可能像应用程序开发人员或系统分析师那样精通编程,他们也要能适当地编写并审查程序代码。要求的技能水平依赖DBMS使用何种语言创建程序对象,该语言在企业内部接受的程度如何,以及是否存在内部组织专门创建通用且可重用的程序。表1-3给出了一个过程DBA参与每种程序对象的合理比重。此外,过程DBA要能在生产环境的数据库程序对象出现问题时随传随到。
表1-3 过程DBA对每种对象的参与度
过程DBA应参与并主导对所有程序数据库对象(触发器、存储过程和UDF)的审查和管理。
对于过程DBA来说,沟通技巧与技术敏锐性同样重要(详见图1-10)。除了管理并优化数据库程序对象,过程DBA还必须告知开发人员存在新的触发器、存储过程和UDF,此外,他们还要提升这些对象的重用性。如果这些对象不为程序员所知,它们将永远不被使用。过程DBA也可能会有其他的程序管理职责,根据DBA的数量以及正在开发的应用程序的数量,他们可能被分配额外的工作,比如:
参与应用程序代码设计审查;
审查并分析SQL访问路径(根据EXPLAIN或SHOWPLAN);
调试SQL;
编写并分析复杂的SQL语句;
重写最佳查询。
将编码相关的工作交由过程DBA分担有助于其他DBA专注于实际的物理数据库设计和部署,从而才会有更好的数据库。但过程DBA要与传统DBA向同一个管理单元报告,如此可以更好地在过程DBA和传统的关注数据的DBA之间共享技能,当然,这需要两者之间更多的协作。过程DBA的一种典型职业路径就是他们本身来自开发团队,因为那里才是编码技能的根基。
1.12.2 互联网:从DBA到eDBA
尽管现在互联网已不能看作一种趋势,企业和技术人员仍需调整他们的进程来适应电子商务的发展。各种类型和规模的企业都在使用互联网技术来加快业务进程,并且数据库管理的实践和流程也因互联网应用程序和数据库的采用而受到影响。
电子商务必须能够适应不断变化并为之作出反应。在线的生意永不打烊。人们期望访问的网站一直可用,无论什么时间在什么地方。纽约可能是凌晨两点,但在世界的某些地方却是黄金时间。电子商务需要一直营业且一天24小时一年365天(闰年366天)和顾客打交道,否则就会造成损失。一个网站出了问题,顾客就会转战它处,因为所谓竞争就是简单地点一下鼠标。所以,管理电子商务的人一定要是内行、前瞻且时刻保持警惕。
接受电子商务的疯狂节奏需要经营者为之作出改变,DBA就极受电子商务的影响。将网络与传统的IT服务(如DBMS)相结合,对数据库管理员提出了更高的期望。
DBA能够管理基于网络的应用程序,且因懂得互联网引发的特殊问题而称作eDBA。eDBA同样需要传统DBA具备的所有知识和进行的所有培训。但需要将这些技能进行调整以适应互联网驱动下的应用程序和数据库。网络加上传统的应用程序和数据库,产生了一种复杂的基础设施(详见图1-11)。eDBA要能驾驭这种复杂且异形的基础设施,并能够在数据库受到此基础设施影响时提供专业的建议。
DBA能够管理基于网络的应用程序,且因懂得互联网引发的特殊问题而称作eDBA。
实际上,当互联网与数据库技术结合时,会有多种因素影响数据库的管理,一些问题包括:
24/7全天候数据可用性。
新技术的采用,如Java和XML。
连接到网络。
遗留数据与现代基于网络的应用程序的集成。
数据库与应用程序架构。
基于网络的管理。
互联网的性能工程学。
不可预知的工作荷载。
1.12.3 个人DBA与云计算
个人设备,通常不仅指手机还包括掌上电脑,正在快速成为现代化管理者与商人的必需品。手机是一种手持式计算设备,有时也会有数据库管理系统。它为什么这么吸引眼球呢?它是否改变了你使用手机的方式呢?它又对IT部门意味着什么呢?
流行的移动计算平台包括:Symbian操作系统、Windows Mobile、iPhone操作系统和Android。
手机提供了许多便利。它体积小巧便于携带,不会干扰移动工作者的工作,而且目前几乎每个人都随身携带手机,提升它的计算能力是势在必行的。
或许这些设备最大的好处是它们可以运行移动应用程序。不管何时何地,企业移动应用程序将从主机服务器获取的信息转发给遍布的移动设备,这种情况并不少见。移动应用程序使用云作为后端越来越流行。
企业移动应用程序依赖从主机服务器获取的信息。
什么是云计算
云计算为用户IT资源交付提供了一种新的模式。云计算的主要定义特点造成了对无限的计算资源按需访问的错觉。一个很好的云计算服务的例子来自Salesforce.com,它提供了通过网络对CRM应用程序的访问。
云计算服务的另一个普遍的现象是用户可以租用计算能力且不必承诺。你可以租用一台服务器而不需要购买,然后支付用到的计算能力的费用。这曾经称作效用计算,它模仿了人们如何支付公共设施,如水或电。因此这是一种“随需随用”的服务。
从数据库的角度来看,有一些云服务,包括Amazon的SimpleDB,Google APP Engine数据存储。此外,Microsoft SQL Azure也支持云数据。
云计算可以让即使是最小的企业甚至个人获得计算资源,这在以前是不可能的。
移动应用程序的设计与部署不像桌面个人计算机应用程序开发那样简单。对于移动应用程序的开发人员来说,考虑该应用程序将用于什么环境是很重要的。
虽然带来的好处是显著的,但企业将个人设备融入基础设施也会面临挑战。设备上的数据必须得到专业的管理以确保其完整性和可靠性。由于该设备是远程的,数据共享可能比较困难。手机上的业务数据必须通过可靠的方式与现有的企业系统和数据库保持同步。从业务和合规性的角度来看,很难评估移动应用程序带来的风险。移动设备很容易保存不当且没有适当的安全措施可能会导致数据泄漏。
所有的DBMS供应商都提供了各自旗舰产品的轻量级版本在个人设备上运行。例如,IBM投放市场的DB2个人版、Oracle销售的移动数据库、Microsoft提供的SQL Server精简版,以及Sybase提供的Adaptive Server Anywhere数据库。总体思路是将移动设备中的少量关键数据存储在数据库中。接下来,使本地数据库与企业数据库服务器上的长期数据同步。每种移动DBMS都提供了移动设备与企业服务器平台之间来回同步数据的技术。
对DBA的影响
DBA不需要对每个PDA的数据库进行管理,但DBA的工作会受到数据库开发的影响。不需要对那些存储在PDA上的数据库的大小进行深入调整和管理,企业数据库部署时才要求。然而,会要求DBA帮助设计适用于小型设备如PDA的数据库。当然,这不是最大的影响。
对DBA的一个很大的影响来自规划如何管理数以百计或数以千计的PDA的数据同步。什么时候开始同步?将对使用大型生产数据库的应用程序造成什么影响?如何确保移动用户的数据可靠且按时同步?
此外,对于云计算的部署,DBA可能要负责保证可靠数据的可用性。设计并调整云计算的数据库部署可以将重要的资源用于管理大量的数据并保证其全天候的可用性。
这些都不是小问题。开始部署大批的移动数据库前,用户必须同步他们的数据以确保DBA人员已经为可能产生的影响做好了准备。与大多数其他的事情一样,准备不足也许会面临灾难,但是必须要准备。通过了解数据同步技术、云计算和企业内部远程数据库用户的潜在需要,DBA人员必须做好准备来支持移动工作人员。
在为手持设备支持数据库做准备的过程中,还需要审查企业的应用程序并尝试确定哪些可能最先受到影响。那些有远程工作者的公司,如分布式的销售队伍或交付跟踪服务将最有可能首先受到影响。花些时间审查这些应用程序的数据需求,以及大量涌入的远程连接对现有的系统可能会造成的影响。
普遍计算技术和移动工作者已是事实,DBA人员必须做好准备以一种有效的、共享数据的基础设施来支持这些移动工作者。
1.12.4 NoSQL、大数据和DBA
NoSQL是可以影响DBA工作的另一种趋势。正如其字面意思,NoSQL是一种最基本的动作。也就是说NoSQL DBMS不支持SQL。上升一个层面来说,NoSQL意味着非关系型的、分布式的、灵活的和可扩展的。大多数NoSQL产品还是开源的。
NoSQL产生于对现代数据库系统支持网络这一举措的权衡需求。此外,NoSQL DBMS的一些常见属性包括:缺乏一种模式、使用简单、支持复制和“最终一致性”的能力(不是典型的ACID交易能力——原子性、一致性、独立性和耐久性)。它并不意味着没有SQL支持,实际上一些NoSQL产品已经开始支持SQL了,于是一些学者将NoSQL定义为“不只是SQL”。
NoSQL产品的一些例子
Cassandra: http://cassandra.apache.org/
CouchDB: http://couchdb.apache.org/
HBase: http://hbase.apache.org/
mongoDB: www.mongodb.org/
Riak: www.basho.com/
NoSQL运动是和大数据运动联系在一起的。NoSQL数据库是为了提供低成本的存储和对大量数据的访问。
部署了NoSQL,通常情况下就只能以一种方式访问数据,几乎没有即兴地、临时查询的灵活性。
对DBA的影响
NoSQL的另一特点是它几乎不需要数据库管理。当然,必须建立DBMS并进行管理,数据也要备份。所以当有人告诉你任何数据库系统不需要数据库管理时,不要相信就是了。
1.12.5 新技术对DBA的影响
企业引入新技术,通常DBA团队会率先研究使用。上述所列技术仅作为例子说明近期的一种发展趋势,以及管理并部署高效、有效数据库需要的技术。大多数新技术都会对DBA产生影响,或多或少。