neo4j 迁移_在Kubernetes中迁移Neo4j图模式
neo4j 遷移
在零停機時間下運行企業應用程序時,我們需要能夠執行數據庫架構遷移而又不中斷活動用戶。 這不僅對于關系數據庫很重要,而且對于諸如Neo4J之類的圖數據庫也很重要,后者不會在write上強制執行架構。 但是,重構圖形并使圖形數據模型與應用程序保持同步仍然有意義。 在以下視頻中,我將解釋如何在托管的Kubernetes環境中遷移到由Cypher腳本定義的架構版本,該腳本受版本控制。
我在Cypher遷移腳本和CLI模式下有用的neo4j-migrations工具中使用了基于文件的方法。 該工具將當前模式版本存儲在圖形中,并且如果之前未針對給定版本執行過遷移,則將應用所需的遷移。 當前所有遷移腳本和工具都打包到Docker映像中,我們從該映像中將圖形遷移到最新版本。
coffee-shop應用程序將在實際應用程序啟動之前,部署并運行從該遷移Docker映像啟動的init容器。 這樣,將始終針對預期的架構版本執行應用程序。 與零停機時間一起執行數據庫架構遷移時,我們一如既往必須考慮N-1兼容性 ,這可能需要我們在遷移完成之前部署多個應用程序版本。
自己嘗試
您可以在Playground Quarkus應用程序中找到遷移示例,該應用程序已經擴展了我在視頻中顯示的資源。
這類似于在容器內部運行的內容:
gt; ls /cyphers/ V001__SchemaMasterData.cypher V002__AddFlavorName.cypher V003__RemoveFlavorDescription.cypher gt; ./neo4j-migrations --address <neo4j-address> \ --password <pw> \ --location file: gt; ./neo4j-migrations --address <neo4j-address> \ --password <pw> \ --location file: ///cyphers/ migrate Applied migration 001 ("SchemaMasterData") Applied migration 002 ("AddFlavorName") Applied migration 003 ("RemoveFlavorDescription") Database migrated to version 003.在部署新版本的實際應用程序之前,我們通過運行Kubernetes初始化容器來應用遷移。 通過確保舊應用程序版本和當前應用程序版本都與圖模式兼容,我們可以在不停機的情況下進行遷移。
初始化容器使用類似于應用程序容器的配置來連接Neo4J實例:
# [...] initContainers: - name: schema-migration image: sdaschner/neo4j-coffee-shop-migration:v001 env: - name: NEO4J_ADDRESS value: "bolt://graphdb-neo4j:7687" - name: NEO4J_PASSWORD valueFrom: secretKeyRef: name: graphdb-neo4j-secrets key: neo4j-password所示示例相當基本,但是提供了所有必需的支架,以支持數據遷移,從而在我們的管道中實現零停機時間部署。
您可能還想看看Neo4J中可用的APOC遷移過程。
與往常一樣,至關重要的是預先測試更改,尤其是在涉及的數據方面,例如,首先將其部署到專用測試或暫存環境中,并確保遷移腳本按預期工作。 通過將這些內容納入我們的業務流程,我們可以提高開發速度和質量。
更多資源
- GitHub上的Quarkus示例項目
- GitHub上的neo4J-migrations工具
- 圖形重構— Neo4J文檔
翻譯自: https://www.javacodegeeks.com/2020/07/migrating-neo4j-graph-schemas-in-kubernetes.html
neo4j 遷移
總結
以上是生活随笔為你收集整理的neo4j 迁移_在Kubernetes中迁移Neo4j图模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为荣耀3电脑驱动(华为荣耀笔记本驱动下
- 下一篇: wcf:rest_REST:管理多对多关