数据库操作 #

一、数据库概述 #

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创建 #

  1. 访问 http://localhost:2480
  2. 点击 “New Database”
  3. 填写数据库名称、用户名、密码
  4. 选择存储类型
  5. 点击 “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