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

如何从脚本在marklogic中创建数据库,marklogic,Marklogic,我们启动了一个新项目,它使用marklogic存储文档。要让应用程序运行,我们需要创建一个数据库、一个林、新用户并设置一个XDBC服务器。通过Marklogic提供的web管理工具很容易做到这一点,但要从持续集成服务器运行它,我们需要将其自动化。是否有任何方法可以从命令行执行此操作(如sqlserver的sqlcmd.exe或oracle中的sql plus)?只要使用MarkLogic 5.x,最简单的方法就是使用Configuration Manager。此基于web的工具允许您将整个DB和

我们启动了一个新项目,它使用marklogic存储文档。要让应用程序运行,我们需要创建一个数据库、一个林、新用户并设置一个XDBC服务器。通过Marklogic提供的web管理工具很容易做到这一点,但要从持续集成服务器运行它,我们需要将其自动化。是否有任何方法可以从命令行执行此操作(如sqlserver的sqlcmd.exe或oracle中的sql plus)?

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

为了将其用作持续集成的一部分,您必须为配置的导入编写脚本。您可以创建一个http服务器,该服务器具有一个端点,该端点调用配置API来执行加载,如下所示:。这种基于https的服务可以通过ANT或任何其他CI工具轻松调用

或者,特别是如果您还没有在5.x上运行,您可以编写整个过程的脚本,而不是使用配置包。所有管理任务都记录在此处:
. 然后,您必须编写配置数据库、应用程序服务器等所需的所有代码,然后通过http服务器将其公开,如上所述。

多亏了Clark Richey的帮助,我可能已经找到了一种自动配置MarkLogic server 5.x的方法(尽管这绝非易事)

例如,如果要自动创建xdbc服务器, 转到存在手动配置的xdbc服务器的实例的查询控制台

导入模块命名空间包=”http://marklogic.com/package/package“at”/MarkLogic/package/package.xqy”

让$my package:=package:create()

返回包:添加appserver($mypackage,“Default”,“sampleserver”)

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

导入模块命名空间包=”http://marklogic.com/package/package“at”/MarkLogic/package/package.xqy”

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

返回包:安装($package)

现在,您将得到一个xml结果,该结果表明包已经编写完毕


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

谢谢你的链接。我们使用的是5.x。首先,我尝试将应用服务器导入到xml中,得到了一个xml包。下一步是实际安装软件包。我使用了包:install(fn:doc(“/xdbcserver.xml”)。。。。。问题在于,uri为/xdbcserver.xml的文件应该存在于数据库中。这意味着必须有人手动将其放入其中。这与自动化配置的目的有点矛盾。我想要一个从客户端文件系统而不是数据库中的现有文档加载包的函数。有什么提示吗?再次感谢您知道,github上有一组ant-Tak for MarkLogic配置管理应用程序还提供了一个打包REST接口。有一个用于发布安装包的url。详情如下: