专门做甜点的视频网站,沈阳城乡建设局官网,大数据免费查询平台,上海58同城官网neo4j 迁移在零停机时间下运行企业应用程序时#xff0c;我们需要能够执行数据库架构迁移而又不中断活动用户。 这不仅对于关系数据库很重要#xff0c;而且对于诸如Neo4J之类的图数据库也很重要#xff0c;后者不会在write上强制执行架构。 但是#xff0c;重构图形并使图… 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.htmlneo4j 迁移