如何从脚本在marklogic中创建数据库

时间:2012-04-08 14:08:58

标签: marklogic

我们已经启动了一个使用marklogic存储文档的新项目。为了让应用程序运行,我们需要创建一个数据库,一个林,新用户并设置一个XDBC服务器。通过Marklogic提供的Web管理工具很容易实现,但是要从持续集成服务器运行它,我们需要自动化它。有没有办法从命令行执行此操作(如sqlserver的sqlcmd.exe或oracle中的sql plus)?

2 个答案:

答案 0 :(得分:5)

只要您使用MarkLogic 5.x,最简单的方法就是使用Configuration Manager。这个基于Web的工具允许您将整个数据库和应用服务器配置导出到可以进行版本控制的单个xml文件中。然后,还可以导入它以完全设置或重新配置MarkLogic实例。

为了将其用作持续集成的一部分,您必须编写配置的导入脚本。您可以创建一个http服务器,其中有一个端点调用配置API来进行加载,如下所示:http://community.marklogic.com/pubs/5.0/apidocs/package-api.html。可以通过ANT或任何其他CI工具轻松调用此基于https的服务。

或者,特别是如果您尚未在5.x上运行,则可以编写整个过程的脚本而不是使用配置包。所有管理任务都记录在这里: http://community.marklogic.com/pubs/5.0/books/adminAPI.pdf。然后,您必须编写配置数据库,应用程序服务器等所需的所有代码,然后通过http服务器公开它,如上所述。

答案 1 :(得分:1)

感谢Clark Richey的帮助,我可能已经找到了一种自动配置MarkLogic服务器5.x的方法(虽然绝不是直截了当的)。

例如,如果要自动创建xdbc服务器, 转到存在手动配置的xdbc服务器的实例的查询控制台。使用以下xquery为xdbc服务器生成一个包文件(在我的例子中称为sample-server)。

  

import module namespace package =“http://marklogic.com/package/package”at“/MarkLogic/package/package.xqy”;

     

let $ my-package:= package:create()

     

返回包:add-appserver($ my-package,“Default”,“sample-server”)

您现在将看到一个包xml,其中包含创建和配置xdbc服务器所需的所有信息。将其保存在文件或剪贴板中。现在转到要配置的marklogic实例的查询控制台。使用以下xquery将其实际安装在实例上。

  

import module namespace package =“http://marklogic.com/package/package”at“/MarkLogic/package/package.xqy”;

     

让$ package:= {粘贴你保存在文件/剪贴板中的包xml step1}

     

return package:install($ package)

现在您将获得一个xml结果,表明该包已被写入。

现在,在我的CI环境中实现自动化的所有重要步骤。我会写一个自定义的ant / nant任务(或者在我的特定情况下是一个powershell cmdlet),它从文件系统读取配置文件,使用XCC连接到ML(和管理员凭据,因为创建数据库和应用服务器之类的东西需要它)然后执行上面定义的相同的xquery。然后我可以在我的源代码控制中对配置文件进行版本控制,这样我就可以在全新安装的ML上自动创建/配置数据库而无需任何人工干预。还有其他更好的办法吗?