我正在嘗試調試MarkLogic管道,並且每次更改管道使用的xquery文件之一時,我都必須運行自制腳本來重新加載所有系統模塊。我猜測這是一個在項目只有幾個模塊時開發的技術,但現在這個過程需要幾分鐘的時間。我需要的是1)更快的技術來重新加載我更改的一個模塊,例如我可以運行在CQ中的代碼片段或2)一些完全不同的方法。謝謝。MarkLogic模板調試:如何提高生產力?
回答
通常情況下,您可以直接從文件系統運行代碼,但這不適用於管道。
第二個最簡單的事情就是使用webdav應用服務器和一個支持webdav的編輯器(如oXygen)。您只需創建一個新的WebDAV類型的應用服務器,將其連接到您想要訪問的模塊數據庫,確保您有一個賬戶登錄,並且您已準備就緒。
其他方法正在使用智能系統上傳僅更改的文件。螞蟻通常很擅長檢測變化。在github上有可用的MarkLogic ant任務(https://github.com/garyvidal/marklogic-ant-tasks)。不知道雖然這確實效果更好,但你必須嘗試。你可能必須認真思考你的構建腳本。上次我使用它時,儘管它沒有錯誤,但即使它裝載了幾百個文件,它的工作仍然相當好。
儘管您使用的方法如此之慢,但可能有不同的原因。如果你能夠透露它,你可以要求具體的優化技巧。
我有點困惑需要重新加載「所有系統模塊」。也許你應該嘗試最新的服務器版本,或檢查支持?
不過,假設你只是想重新加載自己的代碼,你可以使用RecordLoader:https://github.com/marklogic/recordloader
如果您願意使用CQ,你可以用http://developer.marklogic.com/pubs/4.2/apidocs/AdminBuiltins.html#xdmp:filesystem-directory開始 - 這可能讓你開始。您可能需要向文檔插入調用添加文檔權限,並且您可能需要執行更多字符串操作才能構建URI。
declare namespace dir="http://marklogic.com/xdmp/directory";
if (xdmp:database('Modules') eq xdmp:database()) then()
else error(
(), 'INSTALL-NOTMODULES', text {
xdmp:database-name(xdmp:database()), 'is not the Modules database' })
,
for $i in xdmp:filesystem-directory('/path/to/files')/dir:entry
[dir:type eq 'file']
[ends-with(dir:filename, '.xqy')]
let $uri := $i/filename/string()
return xdmp:document-insert($uri, xdmp:document-get($i/dir:pathname))
對不起,我的帖子不清楚:底線是我只需要一個目標的方式來重新加載一個或我正在處理兩個xqy文件。ML是否只需要將文件從文件系統重新插入數據庫?我會看看RecordLoader。我仍然感到沮喪,感覺像一個極其陳舊的開發環境,而且工具很少...我離題了。我使用Oxygen代替CQ,這樣至少我可以獲得語法顏色突出顯示。再次感謝。 – bethesdaboys
我想我腦海中真正的問題是爲什麼我可以修改一些xqy文件並立即看到結果;然而,顯然對於流水線所觸及的任何xqy文件,這是行不通的 - 我不清楚究竟需要做些什麼來補救。 – bethesdaboys
CPF流水線由觸發器實現,並且這些CPF觸發器將其模塊根設置爲Modules數據庫進行評估。因此,安裝觸發器使用的代碼的正常方法是將其複製到模塊數據庫中。另一方面,應用程序服務器可以使用文件系統位置作爲它的根。一種選擇是使用/ opt/MarkLogic/Modules(在Linux上 - 其他環境不同)。該文件系統位置中的模塊通用。 – mblakele
使用Marklogic Ant任務的技術和XCC連接(任何不必須指向你的數據庫): https://github.com/garyvidal/marklogic-ant-tasks
您可以使用下面是一些你可以在你的模板中使用:
<!--Define ml namespace in project root element-->
<project name="ML Build Task" xmlns:ml="http://www.marklogic.com/ant">
>
<!--Set you the classpath to where your mlant.jar file is located.
Include any other dependent jar files required to execute tasks
noted in Dependencies section.
-->
<path id="mlant-classpath">
<fileset dir="${lib-dir}">
<include name="xcc.jar" />
<include name="mlant.jar" />
<include name="corb.jar"/>
<include name="saxon9he.jar"/>
<include name="xqdoc-ml.jar"/>
<include name="antlr-2.7.5.jar"/>
</fileset>
</path>
<!--
Setup the type definition and assign classpathref to mlant-classpath
-->
<typedef
uri="http://www.marklogic.com/ant"
resource="com/marklogic/ant/antlib.xml"
classpathref="mlant-classpath"
/>
<!--Optional: Set the property for xccstring used to connect to MarkLogic database-->
<property name="xccstring" value="xcc://test:[email protected]:9090/Docs">
<!--Create a target element and use the tasks-->
<target name="load-modified">
<ml:load xccurl="${xccstring}">
<ml:docset destdir="/app-code/">
<ml:permissionset>
<ml:permission role="nobody" permission="execute" />
<ml:permission role="nobody" permission="insert" />
<ml:permission role="nobody" permission="read" />
<ml:permission role="nobody" permission="update" />
</ml:permissionset>
<ml:collectionset>
<ml:collection name="collection1" />
<ml:collection name="collection2" />
</ml:collectionset>
<fileset dir="../src" includes="**/*" >
<modified/>
</fileset>
</ml:docset>
</ml:load>
</target>
<!--Have Fun-->
</project>
如果你只是想讓你的模塊上傳變得更快:清除你的模塊數據庫,關閉「目錄創建:自動」,並使用配置多個線程的RecordLoader之類的東西。如果您沒有將目錄創建設置爲自動寫入模塊數據庫,則會進入鎖定爭用並且實際上是單線程的。
- 1. 如何在GWT Maven多模塊項目中提高生產力
- 2. 通過Scala測試周期提高生產力
- 3. 如何提高我的Flex/Java堆棧的生產力?
- 4. 如何提高插件開發的生產力
- 5. 如何在Access VBA + SQL開發中提高生產力?
- 6. 「Golang的生產力更高,因爲任何類型都可以提供方法」。這是如何提高生產力的?
- 7. 如何提高Coffeescript的生產率?
- 8. 提高調試IntelliJ IDE的生產效率
- 9. 如何調試django模板?
- 10. 如何調試Jinja2模板?
- 11. 如何調試angular.dart模板?
- 12. 提高生產力和基於文本的XML渲染
- 13. 使用自動化工具提高生產力
- 14. iPhone程序員提高生產力的應用程序
- 15. 自定義MonoDevelop以提高生產力和編碼享受
- 16. Marklogic模板驅動提取:插入模板
- 17. 如何自動執行一些常規操作以提高生產力?
- 18. .NET生產調試
- 19. Rails 5調試在生產模式
- 20. 您如何計算您的高峯生產力小時?
- 21. 運行tomcat的IntelliJ生產力提示
- 22. 10.9.5 libdispatch產生崩潰 - 如何調試?
- 23. 專業生產與模板
- 24. 指令不生產模板
- 25. 如何在調試模式下提高Vaadin啓動速度?
- 26. Google Cloud Stackdriver調試器 - 生產調試?
- 27. 如何提高指數的權力?
- 28. 如何調試小鬍子js模板?
- 29. 如何在Meteor/handlebars中調試模板?
- 30. 調試javascript模板
通過WebDAV進行連接如何解決ML不得不轉儲它的緩存(或其他任何操作,編譯?)的問題?謝謝! – bethesdaboys
據我所知,模塊在初次訪問(初始或更新後)時被編譯和緩存。它不應該減慢更新AFAIK。對於所有用來更新模塊的方法,這種行爲都是一樣的,所以WEBDAV上傳到模塊數據庫沒有什麼不同。 – grtjn