Appearance
Muotai SPG 数据库初始化指南
本目录包含了 Muotai SPG 模块的数据库初始化脚本,从 OpenSPG 项目迁移而来。
目录结构
db/
├── README.md # 本文件
├── mysql/ # MySQL 数据库脚本
│ ├── 01-init-database.sql # 数据库创建
│ ├── 02-init-tables-builder.sql # 构建相关表(推理、调度等)
│ ├── 03-init-tables-core.sql # 核心表(项目、本体、用户等)
│ └── README.md # MySQL 详细说明
└── neo4j/ # Neo4j 图数据库脚本
├── 01-init-constraints-indexes.cypher # 约束和索引
└── README.md # Neo4j 详细说明快速开始
前置要求
- MySQL 5.7+ 或 MySQL 8.0+
- Neo4j 5.x (推荐 5.23.0)
- Docker 和 Docker Compose (可选,推荐)
方式一:使用 Docker Compose(推荐)
创建 docker-compose.yml 文件:
yaml
version: "3.7"
services:
# MySQL 数据库
mysql:
image: mysql:8.0
container_name: muotai-spg-mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: muotai@2024
MYSQL_DATABASE: muotai_spg
TZ: Asia/Shanghai
volumes:
- ./muotai-spg/db/mysql:/docker-entrypoint-initdb.d
- mysql-data:/var/lib/mysql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-authentication-plugin=mysql_native_password
# Neo4j 图数据库
neo4j:
image: neo4j:5.23.0-community
container_name: muotai-spg-neo4j
restart: always
ports:
- "7474:7474" # HTTP
- "7687:7687" # Bolt
environment:
- NEO4J_AUTH=neo4j/muotai@neo4j
- TZ=Asia/Shanghai
- NEO4J_PLUGINS=["apoc"]
- NEO4J_server_memory_heap_initial__size=1G
- NEO4J_server_memory_heap_max__size=4G
- NEO4J_server_memory_pagecache_size=1G
- NEO4J_apoc_export_file_enabled=true
- NEO4J_apoc_import_file_enabled=true
- NEO4J_dbms_security_procedures_unrestricted=*
- NEO4J_dbms_security_procedures_allowlist=*
volumes:
- neo4j-data:/data
- neo4j-logs:/logs
- ./muotai-spg/db/neo4j:/var/lib/neo4j/import
volumes:
mysql-data:
neo4j-data:
neo4j-logs:启动服务:
bash
# 启动数据库服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# MySQL 会自动执行 /docker-entrypoint-initdb.d 下的 SQL 脚本方式二:手动执行
初始化 MySQL
bash
# 1. 登录 MySQL
mysql -u root -p
# 2. 执行初始化脚本
source /path/to/muotai-backend/muotai-spg/db/mysql/01-init-database.sql
source /path/to/muotai-backend/muotai-spg/db/mysql/02-init-tables-builder.sql
source /path/to/muotai-backend/muotai-spg/db/mysql/03-init-tables-core.sql
# 3. 验证
USE muotai_spg;
SHOW TABLES;初始化 Neo4j
- 启动 Neo4j
- 访问浏览器界面:http://localhost:7474
- 登录(neo4j/muotai@neo4j)
- 在浏览器中执行 Cypher 脚本:
bash
# 或使用 cypher-shell
cat /path/to/muotai-backend/muotai-spg/db/neo4j/01-init-constraints-indexes.cypher | \
docker exec -i muotai-spg-neo4j cypher-shell -u neo4j -p muotai@neo4j应用配置
Spring Boot application.yml
yaml
spring:
# MySQL 配置
datasource:
url: jdbc:mysql://localhost:3306/muotai_spg?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: muotai@2024
driver-class-name: com.mysql.cj.jdbc.Driver
# Neo4j 配置
neo4j:
uri: bolt://localhost:7687
authentication:
username: neo4j
password: muotai@neo4j
# SPG 特定配置
cloudext:
graphstore:
url: neo4j://localhost:7687?user=neo4j&password=muotai@neo4j&database=neo4j
searchengine:
url: neo4j://localhost:7687?user=neo4j&password=muotai@neo4j&database=neo4j数据库说明
MySQL 数据库
包含 35+ 张表,主要分为以下几类:
1. 推理模块(kg_reason_*)
kg_reason_session- 推理会话kg_reason_task- 推理任务kg_reason_tutorial- 推理教程
2. 构建模块(kg_builder_*)
kg_builder_job- 构建任务
3. 调度模块(kg_scheduler_*)
kg_scheduler_job- 调度任务kg_scheduler_instance- 调度实例kg_scheduler_task- 调度作业节点kg_scheduler_info- 调度记录
4. 本体模块(kg_ontology_*)
kg_ontology_entity- 本体类型kg_ontology_entity_parent- 继承关系kg_ontology_entity_property_range- 三元组(SPO)kg_ontology_property_constraint- 属性约束kg_ontology_semantic- 语义关联kg_ontology_release- 发布版本kg_ontology_ext- 扩展属性
5. 项目模块(kg_project_*)
kg_project_info- 项目信息kg_project_entity- 项目类型关联
6. 系统模块
kg_user- 用户管理kg_role- 角色管理kg_resource_permission- 权限管理kg_config- 配置管理kg_biz_domain- 业务域kg_sys_lock- 分布式锁
7. 数据源模块
kg_data_source- 数据源配置kg_retrieval- 索引配置
8. AI 模块
kg_model_provider- 模型供应商kg_provider_param- 供应商参数kg_model_detail- 模型详情kg_user_model- 用户模型
9. 应用模块
kg_app- 应用管理kg_feedback- 反馈记录kg_statistics- 统计数据
Neo4j 图数据库
用于存储知识图谱的实体、关系和属性:
节点类型
Thing- 基础实体Entity- 实体Concept- 概念Event- 事件Standard- 标准类型
关系类型
IS_A- 类型关系HAS_PROPERTY- 属性关系RELATED_TO- 关联关系BELONGS_TO- 归属关系
验证安装
验证 MySQL
sql
-- 登录 MySQL
mysql -u root -p
-- 选择数据库
USE muotai_spg;
-- 查看所有表
SHOW TABLES;
-- 验证数据
SELECT COUNT(*) FROM kg_ontology_entity;
SELECT * FROM kg_user WHERE user_no = 'openspg';验证 Neo4j
访问 http://localhost:7474,执行以下查询:
cypher
-- 查看约束
SHOW CONSTRAINTS;
-- 查看索引
SHOW INDEXES;
-- 查看节点统计
MATCH (n) RETURN labels(n) AS label, count(*) AS count;备份与恢复
MySQL 备份
bash
# 备份数据库
docker exec muotai-spg-mysql mysqldump -u root -pmuotai@2024 muotai_spg > backup-$(date +%Y%m%d).sql
# 恢复数据库
docker exec -i muotai-spg-mysql mysql -u root -pmuotai@2024 muotai_spg < backup-20231220.sqlNeo4j 备份
bash
# 备份
docker exec muotai-spg-neo4j neo4j-admin dump \
--database=neo4j \
--to=/data/backups/neo4j-$(date +%Y%m%d).dump
# 恢复
docker exec muotai-spg-neo4j neo4j-admin load \
--from=/data/backups/neo4j-20231220.dump \
--database=neo4j \
--force常见问题
1. MySQL 初始化脚本未执行
确保脚本文件有正确的权限:
bash
chmod +r muotai-spg/db/mysql/*.sql2. Neo4j 内存不足
根据数据量调整内存配置:
yaml
- NEO4J_server_memory_heap_max__size=8G
- NEO4J_server_memory_pagecache_size=2G3. 字符编码问题
确保 MySQL 使用 utf8mb4:
sql
SHOW VARIABLES LIKE 'character%';4. 连接失败
检查端口是否被占用:
bash
# MySQL
lsof -i :3306
# Neo4j
lsof -i :7474
lsof -i :7687更多信息
- MySQL 详细说明:
mysql/README.md - Neo4j 详细说明:
neo4j/README.md - OpenSPG 源项目:https://github.com/OpenSPG/openspg
维护建议
- 定期备份:建议每天自动备份数据库
- 监控性能:使用监控工具跟踪数据库性能
- 日志管理:定期清理和归档日志文件
- 安全更新:及时更新数据库版本和补丁
- 索引优化:根据查询模式优化索引策略
技术支持
如遇到问题,请参考:
- 各子目录下的 README.md 文件
- OpenSPG 官方文档
- MySQL/Neo4j 官方文档