我意识到这是一个更主观的问题,但我正在向社区寻求指导。
我们公司刚开始拥有 DBA。我们曾经在 IBM 的 iSeries 服务器上使用 DB2 for i,因此确实不需要 DBA(至少在操作上),因为操作系统几乎为我们管理一切。在过去的几年里,我们开始转向 AIX 上的 DB2 LUW。因此,对 DBA 的需求诞生了。我们三个人有兴趣将职业从开发人员转变为 DBA(我就是其中之一)。
因为我们在 AIX 上,所以我们默认使用 ksh 作为我们的数据库管理功能(创建、部署、操作等)的脚本语言。我发现 ksh 非常强大,但我需要执行的一些功能变得相当复杂。这方面的一个例子是我在 Unix 和 Linux StackExchange 上的问题。
基于这个问题,以及阅读其他 DB2 管理员的博客,我看到一个普遍的建议,即 Perl 比 ksh 更适合管理脚本。
我意识到 Unix/Linux 论坛对这样的事情会有自己的想法,但我希望从数据库管理的角度来解决这个问题。
不管 DBMS,哪种脚本语言似乎更适合在 Unix/Linux 平台上进行管理?珀尔?克什?(或者其他的?)。作为 DBA,您在使用脚本语言的过程中遇到了哪些优点和缺点,为什么选择这种语言?
我不想要的是“我的语言比你的语言好!”的高度主观的火焰战争。像我以前在开发社区中看到的关于 Java 与 Ruby 等的东西。我正在寻找诚实的、尽可能客观的、关于最适合数据库管理员需求的信息。
你帖子的结尾真的很重要:
关于什么最适合数据库管理员需求的信息。
所以让我们从那里开始。
作为 DBA,您的需求是什么?您通常有两个操作领域:系统级维护和数据库级维护(所有操作都只是维护系统以获得更好的性能......看,不要学究,跟我来这里)。所以你有两个领域需要考虑。
ksh - Korn Shell是较旧的 Unix 操作 shell 之一,用于控制服务器。ksh 的目标是管理一个服务器,并允许一个人做传统 Bourne shell(不是大多数人熟悉的 Bourne Again SHell,这是一个较旧的版本)允许的所有事情,但有一些不同(这个 shell对算术和数组之类的东西有更好的支持,使其在某些方面更容易编程)。它是AIX 上的默认 shell。
perl - Perl是一种高级通用编程语言。它被设计为在 shell 之上运行,并且主要是为了报告而设计的。它结合了 shell 脚本和 C 的特性,以及正则表达式技术,试图使它比以前更好。一个很多如Perl周围的行星的管理员,因为它使系统管理更加容易,因为壳的功能和报表生成加速(它是一个编程语言)的组合。Perl 脚本可以像 shell 脚本一样简单地运行,在 Unix 世界中甚至有一个约定,即让第一行指示将运行脚本的内容(熟悉的 hashbang 行)。因此,运行 perl 脚本就像运行 shell 脚本一样简单。
那么,区别在于您需要成熟的编程语言,还是需要基本的 shell 脚本?然后答案就变成使用提供您需要的那个,因为两者都对您非常有用。如果你想要统计数据,那是不可能的,我们每个人都有自己的风格。只需在内部就某些事情达成一致并称之为(如果你要制定一个标准,那就让它成为 perl,因为它有更多的功能,你永远不想因为你设置了一个不切实际的标准而被抓住。Perl 也更可扩展在将来)。在这种情况下,最好限制自己使用两种或三种语言。
回到开头我提到您有两个选择:系统级别和数据库级别。
如果您的目的主要是系统级别,那么我们已经回答了这里的所有问题(使用适合您需求的问题)。如果您还需要对数据库进行编程,那么您真的需要对 perl 进行标准化或真正习惯命令行语法,因为 Perl 为地球上某个地方的每个可能的数据库提供了模块,如果不存在,它可以被写入(例如:DBI -> DBD:DB2 -> DB2 客户端)。
顺便说一句,我使用 Microsoft SQL Server 和 C#,所以我生活在 Windows 世界中,我使用 PowerShell 而不是 DOS 批处理文件。PowerShell 在许多方面与 perl 相似,并且比 DOS 批处理编程提供了更多的灵活性(但世界上仍有很多管理员仍在使用旧的 DOS 脚本来管理他们的系统)。虽然 DOS 批处理系统允许使用数组、循环、变量和所有其他内容,但使用编程语言而不是 shell 脚本进行编程要容易得多,因此我能够提高工作效率。
归根结底,真正的问题是您的脚本环境需要哪些功能,而我们无法为您提供帮助。但我将始终选择更清晰、可维护性和可扩展性,而不是“这就是盒子里装的东西”。
ksh 或 bash 允许您通过 SQL*Plus 编写项目脚本,并且您可以通过它完成相当复杂的工作。然而,shell 脚本往往有点“只写”,而 sh 及其衍生产品对于开发复杂的程序逻辑并不是很有效。对于运行自动化任务,它们没问题。对于复杂的客户端数据操作,不太好(尽管有 sed/awk)。
Perl 有各种 Oracle 库,例如 DBD:Oracle,可通过 CPAN 使用,并且更适合涉及复杂处理客户端的工作,因为它的类型系统比“文本行”更复杂一些。另一个非常好的选择是 python 和 cx_Oracle。
归档时间: |
|
查看次数: |
1375 次 |
最近记录: |