2012-04-08 7 views
5

Hemos iniciado un nuevo proyecto que usa marklogic para almacenar documentos. Para que la aplicación se ejecute, necesitamos crear una base de datos, un bosque, nuevos usuarios y configurar un servidor XDBC. Es bastante fácil hacerlo desde la herramienta de administración web proporcionada por Marklogic, pero para ejecutarlo desde un servidor de integración continua, necesitamos automatizarlo. ¿Hay alguna manera de hacerlo desde la línea de comandos (como el sqlcmd.exe para sqlserver o sql plus en Oracle)?Cómo creo una base de datos en marklogic desde un script

Respuesta

5

Siempre que use MarkLogic 5.x, lo más fácil sería usar Configuration Manager. Esta herramienta basada en la web le permite exportar toda la configuración de la base de datos y del servidor de aplicaciones a un único archivo xml que puede ser controlado por la versión. También se puede importar para configurar completamente o reconfigurar su instancia de MarkLogic.

Para utilizar esto como parte de la integración continua, debería realizar un script de la importación de la configuración. Puede crear un servidor http que tenga un punto final que invoca la API de configuración para realizar la carga, como se documenta aquí: http://community.marklogic.com/pubs/5.0/apidocs/package-api.html. Este servicio basado en https podría invocarse fácilmente a través de ANT o cualquier otra herramienta de CI.

De forma alternativa, especialmente si aún no se está ejecutando en 5.x, podría crear un script de todo el proceso en lugar de usar un paquete de configuración. Todas las tareas de administración están documentadas aquí: http://community.marklogic.com/pubs/5.0/books/adminAPI.pdf. Luego deberá escribir todo el código necesario para configurar su base de datos, servidores de aplicaciones, etc. y luego exponerlo a través de un servidor http como se describe arriba.

+0

Gracias por el enlace. estamos usando 5.x. Para empezar, traté de importar el servidor de aplicaciones en un xml y obtuve un paquete xml. El siguiente paso fue instalar el paquete. Usé el paquete: install (fn: doc ("/ xdbcserver.xml")) ..... El problema es que se espera que el archivo con uri /xdbcserver.xml esté presente en la base de datos. Esto significa que alguien tiene que ponerlo allí manualmente. Es un poco contradictorio con el propósito de automatizar la configuración. Me gustaría tener una función que cargue el paquete del sistema de archivos del cliente en lugar de un documento existente en la base de datos. ¿Alguna pista? Gracias de nuevo – uttamkini

1

Gracias a la ayuda de Clark Richey, podría haber encontrado una manera de automatizar la configuración del servidor MarkLogic 5.x (aunque de ningún modo directo).

Por ejemplo, si desea automatizar la creación de un servidor xdbc, Vaya a la consola de consulta de una instancia donde exista un servidor xdbc configurado manualmente. Use la siguiente xquery para generar un archivo de paquete para el servidor xdbc (en mi caso llamado servidor de muestra).

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

dejar $ my-paquete: = paquete: crear()

paquete

retorno: complemento servidor de aplicaciones ($ my-paquete, "por defecto", "muestra-servidor")

Usted haría ahora vea un paquete xml que contiene toda la información necesaria para crear y configurar el servidor xdbc. Guarde esto en un archivo o en su portapapeles. Ahora vaya a la consola de consulta de la instancia de marklogic que desea configurar. Use la siguiente xquery para instalarlo realmente en la instancia.

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

let $ paquete: = {pegar el código XML paquete guardó en el archivo/portapapeles paso 1}

paquete

retorno: instalar ($ paquete)

Ahora va a un obtener un resultado XML que dice que el paquete ha sido escrito.

Ahora el paso más importante de automatizar esto en mi entorno de CI.Escribiría una tarea antienvejecimiento personalizada (o en mi caso específico un cmdlet PowerShell) que lea el archivo de configuración de un sistema de archivos, se conecte a ML utilizando XCC (y credenciales de administrador, porque cosas como crear bases de datos y servidores de aplicaciones lo necesitan) y luego ejecuta la misma xquery definida anteriormente. Luego puedo controlar la versión del archivo de configuración en mi control de fuente y de esa manera puedo automatizar la creación/configuración de bases de datos en una nueva instalación de ML sin ninguna intervención manual. ¿Alguna otra forma mejor de hacerlo?

+0

Para que sepa, hay un conjunto de tareas para MarkLogic en github http: // developer .marklogic.com/code/ant-tasks – derickson

+3

La aplicación de gestión de configuración también proporciona una interfaz REST de embalaje. Hay una url para PUBLICAR un paquete para la instalación. Más detalles aquí: http://community.marklogic.com/pubs/5.0/apidocs/packageREST.html – grtjn

Cuestiones relacionadas