semtech/mu-migrations-servicemu-migrations-service是一款用于在数据库上运行迁移的服务,目前支持SPARQL查询(.sparql)和Turtle文件(.ttl)格式,未来计划扩展支持更多格式。该服务确保迁移按序执行、状态可追踪,适用于RDF数据库(如Virtuoso)的数据更新、初始化及模式变更场景。
适用于需要对RDF数据库进行结构化数据迁移的项目,包括但不限于:
在mu-project的docker-compose.yml中添加以下配置,将迁移服务集成到项目:
yamlmigrations: image: semtech/mu-migrations-service links: - triplestore:database # "triplestore"为数据库服务名称(通常是Virtuoso实例) volumes: - ./config/migrations:/data/migrations # 本地迁移文件目录映射到容器内
使用docker-compose up -d启动服务栈,通过docker-compose logs -ft migrations查看日志,确认服务启动成功(初始无迁移执行)。
以下示例将数据集中所有schema:name谓词替换为foaf:name:
./config/migrations/20200329140538-replace-schema-name-with-foaf-name.sparqlsparqlPREFIX schema: <[***]> PREFIX foaf: <[***]> DELETE { GRAPH ?g { ?s schema:name ?o . } } INSERT { GRAPH ?g { ?s foaf:name ?o . } } WHERE { GRAPH ?g { ?s schema:name ?o . } }
执行docker-compose restart migrations重启服务,通过docker-compose logs -ft migrations查看迁移执行状态及结果。
创建SPARQL迁移文件(如./config/migrations/20160808225103-statuses.sparql),示例内容:
sparqlPREFIX dct: <[***]> PREFIX tac: <[***]> PREFIX mu: <[***]> PREFIX rdf: <[***]> INSERT DATA { GRAPH <[***]> { <[***]> a tac:Status; mu:uuid "wellknown-status-not_started"; dct:title "not started". <[***]> a tac:Status; mu:uuid "wellknown-status-ongoing"; dct:title "ongoing". <[***]> a tac:Status; mu:uuid "wellknown-status-done"; dct:title "done". } }
创建Turtle迁移文件(如./config/migrations/20160808225103-statuses.ttl),示例内容:
turtle@prefix dct: <[***]> . @prefix tac: <[***]> . @prefix mu: <[***]> . @prefix rdf: <[***]> . <[***]> a tac:Status; mu:uuid "wellknown-status-not_started"; dct:title "not started". <[***]> a tac:Status; mu:uuid "wellknown-status-ongoing"; dct:title "ongoing". <[***]> a tac:Status; mu:uuid "wellknown-status-done"; dct:title "done".
默认情况下,Turtle数据将导入到图<[***]>中。
创建与Turtle文件同名的.graph文件(如20160808225103-statuses.graph),文件内容为目标图名称:
[***]
[Unix时间戳]-[描述].sparql或.ttl(如20200329140538-replace-schema-name-with-foaf-name.sparql)/data/migrations目录(可通过卷映射),支持子文件夹,执行状态仅与文件名相关,与路径无关迁移完成状态存储在MU_APPLICATION_GRAPH(默认:<[***]>)中,每条记录为类型muMigr:Migration的资源,包含:
muMigr:filename:迁移文件名muMigr:executedAt:执行完成时间戳muMigr: <[***]>)支持通过环境变量配置:
BATCH_SIZE:Turtle迁移的单次插入三元组数量(默认:***)MINIMUM_BATCH_SIZE:批处理大小下限,低于此值时报错(默认:100)COUNT_BATCH_SIZE:单次从数据库查询的已执行迁移数量(默认:***)三元组存储通常有单次请求数据量限制,服务通过批处理拆分大型数据集。配置BATCH_SIZE控制单次插入量,失败时自动减半重试,直至达到MINIMUM_BATCH_SIZE。数据先导入临时图,成功后通过SPARQL Graph查询合并到目标图,确保完整性。
可与mu-authorization集成,服务会添加mu-auth-sudo头以提升权限执行迁移。此功能为实验性,欢迎反馈以改进。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务