Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对于一组DBA,我们应该采用哪种跨平台脚本语言?_Python_Scala_Groovy_Shell_Jython - Fatal编程技术网

Python 对于一组DBA,我们应该采用哪种跨平台脚本语言?

Python 对于一组DBA,我们应该采用哪种跨平台脚本语言?,python,scala,groovy,shell,jython,Python,Scala,Groovy,Shell,Jython,我想得到社区对我们团队希望在不久的将来做出的语言选择的反馈。我们是一名软件开发人员,我在Oracle和SQL Server DBA团队中工作,支持在Oracle application Server上运行的跨平台Java应用程序。我们有SQL Server和Oracle代码库,并支持Windows、Solaris和Linux服务器上的客户 我们经常执行的许多任务都没有足够的自动化,而且在自动化程度上,往往通过shell脚本实现更高的自动化,在Windows上几乎没有等效的功能。不幸的是,我们现在

我想得到社区对我们团队希望在不久的将来做出的语言选择的反馈。我们是一名软件开发人员,我在Oracle和SQL Server DBA团队中工作,支持在Oracle application Server上运行的跨平台Java应用程序。我们有SQL Server和Oracle代码库,并支持Windows、Solaris和Linux服务器上的客户

我们经常执行的许多任务都没有足够的自动化,而且在自动化程度上,往往通过shell脚本实现更高的自动化,在Windows上几乎没有等效的功能。不幸的是,我们现在遇到了在两个平台上重新开发脚本等问题。因此,我希望我们选择一种跨平台的语言来编写脚本,而不是使用Bash,在必要时笨拙地翻译成Cygwin或批处理文件

这需要:

  • 动态(所以不要建议使用Java或C!)
  • 在每个平台(Windows、Solaris、Linux,可能是AIX)上都可以轻松获得
  • 在安装过程中几乎不需要什么(根目录访问并不总是可用!)
  • 对于不是硬核开发人员的shell脚本编写人员,即dba,要易于采用
  • 易于理解他人的代码
  • 与SQL Server和Oracle非常友好,不会造成混乱
  • 一些不错的XML特性不会出错
  • 最好是在JVM上运行,因为它几乎总是安装在每台服务器上(当然是所有应用服务器上),而且我们公司有很多Java开发人员,所以坚持使用JVM是有意义的。但这并不是唯一的,因为我知道Python在这里是一种非常可行的语言

    我已经创建了一个选项列表,但可能还有更多选项:Groovy、Scala、Jython、Python、Ruby、Perl

    除了我自己有相当多的Java和Groovy经验外,没有人有太多的经验。我们正在寻找一种动态的、易于学习的东西,它可以轻松地与SQL server和Oracle一起工作,具有一些简化XML的特性,这不会让DBA感到厌烦。我们中的许多人都是非常害羞的——什么能让我们远离这种上瘾呢

    人们对此有何看法?

    谢谢


    Chris

    尽管我更喜欢在JVM上工作,但有一件事让我感到厌烦,那就是必须启动JVM才能运行脚本。如果您可以在REPL中工作,这并不是什么大问题,但在执行编辑-运行-调试脚本时,它确实会减慢您的速度

    当然,Oracle有很多需要交互的Java东西,但只有您可以估计它的重要性。对于普通的oracledb工作,我只看到很少的Java和大量的PLSQL/SQL

    如果您的dba现在在bash中完成他们的工作,那么他们很可能会在很短的时间内学习perl,因为有一个很好的、合乎逻辑的渐进路径

    由于ruby被设计为perl的改进版本,因此它可能也属于这一类。实际上python也是

    Scala是静态类型的,就像Java一样,尽管有更好的类型推断


    我的建议是走Perl路线。CPAN是它的王牌,您不必处理可能关闭某些DBA的OO(尽管它是为高级用户准备的)

    我也遇到过类似的情况,虽然规模不大。以前的情况是,SQLServerDBS上的任何自动化都是使用VBScript完成的,我一开始确实使用了VBScript。因为我想要一些跨平台的东西(并且比VBScript更不烦人),所以我选择了Python

    我学到的是:

    • 显然,您需要一种随库提供的语言来轻松访问数据库。我不太关心如何将差异抽象出来(即,我仍然使用相关方言编写SQL查询,并带有参数)。然而,我对PHP就不太满意了,例如,它只有针对特定数据库的特定于供应商的库和函数。我知道这不在你的名单上
    • 主要障碍是认证。如果您的SQL Server使用Windows域身份验证,则您必须努力才能进入。另一个系统也有特定的需求,因为它需要支持RSA令牌
    关于第二点,Python的功能非常广泛,足以解决这些困难,但它正进入“支持差”的领域,尤其是在Windows上。从Windows主机解决第一个问题很容易,而对于Unix主机来说,这是可能的,但并不容易。如果您使用的是SQL Server身份验证,它会变得容易得多


    从您的其他选择中,我希望Perl中存在各种身份验证和DB驱动程序的方法,从理论上讲,对于使用shell脚本的DBA来说,这会更容易。Ruby——没有经验,但它往往对一些更奇怪的身份验证方法和连接器缺乏支持。Scala我希望成为一种“程序员的编程语言”——OOO和FP?这是一种非常有趣的语言,但可能不是我最初选择的语言。至于其他基于Java的选项,我没有意见,但是请检查您想要建立的所有连接类型是否都得到了可靠的支持。

    您可以选择Python。它的动态(解释)在Windows/Linux/Solaris上可用,具有易于阅读的语法,因此代码维护很容易。还有用于Oracle交互和各种其他数据库服务器的模块/库。还有对XML的库支持。所有7点都包括在内。

    如果您想要一种动态语言,并且您的公司中已经有很多Java开发人员,那么Groovy似乎是一个明显的选择,因为Java开发人员很容易掌握它(另外,您说您自己也有一些Groovy经验)

    Groovy在JVM上运行,并且具有出色的性能。它还提供了一个非常简单的语法

    它附带了一个控制台和一个shell(尽管我从来没有使用shell),这使它变得更加简单