数据库操作 #
一、数据库概述 #
1.1 数据库类型 #
OrientDB支持两种存储类型:
| 类型 | 说明 | 适用场景 |
|---|---|---|
| plocal | 本地文件存储 | 生产环境、持久化存储 |
| memory | 内存存储 | 测试、临时数据、缓存 |
1.2 数据库结构 #
text
数据库结构:
├── Database(数据库)
│ ├── Classes(类)
│ ├── Clusters(集群)
│ ├── Indexes(索引)
│ ├── Functions(函数)
│ ├── Sequences(序列)
│ └── Users(用户)
二、创建数据库 #
2.1 使用控制台创建 #
sql
CREATE DATABASE plocal:/data/databases/mydb root root plocal
参数说明:
text
参数:
├── plocal - 存储类型
├── /data/databases/mydb - 数据库路径
├── root - 用户名
├── root - 密码
└── plocal - 存储类型(可选)
2.2 创建内存数据库 #
sql
CREATE DATABASE memory:tempdb root root memory
2.3 创建远程数据库 #
sql
CREATE DATABASE remote:localhost/mydb root root plocal
2.4 使用Studio创建 #
- 访问 http://localhost:2480
- 点击 “New Database”
- 填写数据库名称、用户名、密码
- 选择存储类型
- 点击 “Create Database”
2.5 使用Java API创建 #
java
import com.orientechnologies.orient.core.db.OrientDB;
import com.orientechnologies.orient.core.db.OrientDBConfig;
OrientDB orientDB = new OrientDB("plocal:/data/databases", OrientDBConfig.defaultConfig());
orientDB.create("mydb", ODatabaseType.PLOCAL);
orientDB.close();
2.6 创建时指定配置 #
sql
CREATE DATABASE plocal:/data/databases/mydb
root root plocal
(type = graph,
security = true,
validation = true)
三、连接数据库 #
3.1 控制台连接 #
sql
CONNECT remote:localhost/mydb root root
CONNECT plocal:/data/databases/mydb root root
3.2 Java连接 #
java
import com.orientechnologies.orient.core.db.ODatabaseSession;
import com.orientechnologies.orient.core.db.OrientDB;
import com.orientechnologies.orient.core.db.OrientDBConfig;
OrientDB orientDB = new OrientDB("remote:localhost", "root", "root", OrientDBConfig.defaultConfig());
ODatabaseSession db = orientDB.open("mydb", "admin", "admin");
try {
// 使用数据库
} finally {
db.close();
orientDB.close();
}
3.3 Python连接 #
python
from pyorient.orient import OrientDB
client = OrientDB("localhost", 2424)
client.connect("root", "root")
session_id = client.db_open("mydb", "admin", "admin")
3.4 Node.js连接 #
javascript
const OrientDB = require('orientjs');
const server = OrientDB({
host: 'localhost',
port: 2424,
username: 'root',
password: 'root'
});
const db = server.use({
name: 'mydb',
username: 'admin',
password: 'admin'
});
四、查看数据库 #
4.1 列出所有数据库 #
sql
LIST DATABASES
输出示例:
text
Found 3 databases:
* mydb (plocal)
* testdb (plocal)
* tempdb (memory)
4.2 查看当前数据库信息 #
sql
SELECT properties FROM metadata:database
4.3 查看数据库统计 #
sql
SELECT COUNT(*) AS totalRecords FROM (
SELECT FROM (
SELECT expand(classes) FROM metadata:schema
)
)
4.4 查看数据库大小 #
sql
SELECT SUM(@size) AS totalSize FROM (
SELECT FROM cluster:*
)
五、切换数据库 #
5.1 控制台切换 #
sql
USE mydb
5.2 断开并连接新数据库 #
sql
DISCONNECT
CONNECT remote:localhost/newdb root root
六、数据库配置 #
6.1 查看配置 #
sql
SELECT FROM metadata:database
6.2 设置配置项 #
sql
ALTER DATABASE SET validation = true
ALTER DATABASE SET sql.strictSql = true
6.3 常用配置项 #
| 配置项 | 说明 | 默认值 |
|---|---|---|
| validation | 数据验证 | false |
| sql.strictSql | 严格SQL模式 | false |
| sql.graphConsistencyMode | 图一致性模式 | tx |
| command.timeout | 命令超时(毫秒) | 0 |
6.4 数据库属性 #
sql
ALTER DATABASE CUSTOM myProperty = 'myValue'
SELECT properties FROM metadata:database
七、删除数据库 #
7.1 控制台删除 #
sql
DROP DATABASE mydb
7.2 删除前确认 #
sql
IF (SELECT COUNT(*) FROM Person > 0) {
DROP DATABASE mydb;
}
7.3 Java API删除 #
java
OrientDB orientDB = new OrientDB("plocal:/data/databases", OrientDBConfig.defaultConfig());
orientDB.drop("mydb");
orientDB.close();
7.4 删除注意事项 #
text
删除前注意:
├── 确保已断开所有连接
├── 备份重要数据
├── 确认删除的数据库名称
└── 删除操作不可恢复
八、数据库复制 #
8.1 导出数据库 #
sql
EXPORT DATABASE /backup/mydb.export.gz
8.2 导入数据库 #
sql
IMPORT DATABASE /backup/mydb.export.gz
8.3 复制到新数据库 #
sql
EXPORT DATABASE /tmp/temp.export.gz
CREATE DATABASE plocal:/data/databases/newdb root root plocal
IMPORT DATABASE /tmp/temp.export.gz
九、数据库备份 #
9.1 在线备份 #
sql
BACKUP DATABASE /backup/mydb_backup.zip
9.2 增量备份 #
sql
BACKUP DATABASE /backup/mydb_incremental.zip
LEVEL 1
9.3 使用控制台工具 #
bash
./backup.sh plocal:/data/databases/mydb /backup/mydb.zip
十、数据库恢复 #
10.1 从备份恢复 #
sql
RESTORE DATABASE /backup/mydb_backup.zip
10.2 使用控制台工具 #
bash
./restore.sh plocal:/data/databases/mydb /backup/mydb.zip
十一、数据库模板 #
11.1 创建模板数据库 #
sql
CREATE DATABASE plocal:/data/databases/template_db root root plocal
CREATE CLASS Person EXTENDS V
CREATE PROPERTY Person.name STRING
CREATE PROPERTY Person.email STRING
CREATE CLASS Company EXTENDS V
CREATE PROPERTY Company.name STRING
CREATE CLASS WORKS_AT EXTENDS E
11.2 从模板创建新数据库 #
sql
EXPORT DATABASE /templates/template_db.export.gz
CREATE DATABASE plocal:/data/databases/new_project root root plocal
IMPORT DATABASE /templates/template_db.export.gz
十二、多租户架构 #
12.1 数据库隔离模式 #
text
多租户架构:
├── 独立数据库模式
│ └── 每个租户一个数据库
├── 共享数据库模式
│ └── 使用类或属性区分租户
└── 混合模式
└── 核心数据共享,业务数据隔离
12.2 创建租户数据库 #
sql
CREATE DATABASE plocal:/data/databases/tenant_acme root root plocal
CREATE DATABASE plocal:/data/databases/tenant_globex root root plocal
12.3 租户数据隔离 #
sql
CREATE CLASS TenantPerson EXTENDS Person
CREATE PROPERTY TenantPerson.tenantId STRING (MANDATORY)
CREATE INDEX TenantPerson.tenantId ON TenantPerson (tenantId) NOTUNIQUE
十三、数据库状态管理 #
13.1 检查数据库状态 #
sql
SELECT status FROM metadata:database
13.2 数据库冻结 #
sql
FREEZE DATABASE
13.3 数据库解冻 #
sql
RELEASE DATABASE
13.4 数据库压缩 #
sql
COMPACT DATABASE
十四、数据库连接池 #
14.1 Java连接池配置 #
java
import com.orientechnologies.orient.core.db.OrientDBConfig;
import com.orientechnologies.orient.core.db.OrientDBConfigBuilder;
OrientDBConfig config = OrientDBConfig.builder()
.addDBConfig("db.pool.min", 5)
.addDBConfig("db.pool.max", 20)
.build();
OrientDB orientDB = new OrientDB("remote:localhost", config);
14.2 连接池参数 #
| 参数 | 说明 | 默认值 |
|---|---|---|
| db.pool.min | 最小连接数 | 1 |
| db.pool.max | 最大连接数 | 100 |
| db.pool.idleTimeout | 空闲超时(毫秒) | 300000 |
| db.pool.maxWait | 最大等待时间(毫秒) | 0 |
十五、数据库监控 #
15.1 查看活跃连接 #
sql
SELECT FROM metadata:connections
15.2 查看活跃事务 #
sql
SELECT FROM metadata:transactions
15.3 查看数据库统计 #
sql
SELECT
name,
records,
size,
indexManager.indexes.size() AS indexCount
FROM metadata:database
十六、常见问题 #
16.1 数据库锁定 #
text
问题:数据库被锁定
解决:
1. 检查是否有未关闭的连接
2. 重启服务器
3. 删除 .lock 文件
16.2 数据库损坏 #
text
问题:数据库文件损坏
解决:
1. 尝试从备份恢复
2. 使用修复工具
3. 导出可恢复的数据
16.3 权限问题 #
text
问题:无法创建数据库
解决:
1. 检查用户权限
2. 检查文件系统权限
3. 确认存储路径存在
十七、最佳实践 #
17.1 命名规范 #
text
数据库命名规范:
├── 使用小写字母
├── 使用下划线分隔单词
├── 避免使用保留字
└── 使用有意义的名称
17.2 存储选择 #
text
存储类型选择:
├── plocal - 生产环境首选
├── memory - 测试和临时数据
└── remote - 分布式环境
17.3 安全建议 #
text
安全建议:
├── 修改默认root密码
├── 为每个应用创建专用用户
├── 定期备份数据库
└── 限制网络访问
十八、总结 #
数据库操作要点:
| 操作 | 命令 | 说明 |
|---|---|---|
| 创建 | CREATE DATABASE | 创建新数据库 |
| 连接 | CONNECT | 连接到数据库 |
| 列出 | LIST DATABASES | 列出所有数据库 |
| 删除 | DROP DATABASE | 删除数据库 |
| 备份 | BACKUP DATABASE | 备份数据库 |
| 恢复 | RESTORE DATABASE | 恢复数据库 |
下一步,让我们学习类与集群!
最后更新:2026-03-27