数据库操作 #
一、数据库概述 #
ArangoDB支持多数据库,每个数据库独立存储数据,拥有独立的集合和用户权限。
1.1 系统数据库 #
安装后默认存在 _system 数据库:
text
_system 系统数据库,存储用户和权限信息
1.2 数据库层级 #
text
ArangoDB实例
├── _system(系统数据库)
│ ├── users(用户集合)
│ └── _graphs(图定义)
├── mydb1(用户数据库1)
│ ├── collection1
│ └── collection2
└── mydb2(用户数据库2)
├── collection1
└── collection2
二、创建数据库 #
2.1 Web界面创建 #
- 登录ArangoDB Web UI
- 点击左侧菜单 “DATABASES”
- 点击 “Add Database”
- 输入数据库名称
- 点击 “Create”
2.2 AQL创建 #
aql
CREATE DATABASE mydb
2.3 带选项创建 #
aql
CREATE DATABASE mydb OPTIONS {
sharding: "single",
replicationFactor: 2,
writeConcern: 2
}
2.4 JavaScript创建 #
javascript
db._createDatabase("mydb");
带选项:
javascript
db._createDatabase("mydb", {
sharding: "single",
replicationFactor: 2
});
2.5 创建数据库并设置用户 #
javascript
db._createDatabase("mydb");
require("@arangodb/users").save("myuser", "mypassword", true);
require("@arangodb/users").grantDatabase("myuser", "mydb", "rw");
三、查看数据库 #
3.1 查看所有数据库 #
javascript
db._databases();
输出示例:
json
[
"_system",
"mydb",
"testdb"
]
3.2 查看当前数据库 #
javascript
db._name();
3.3 查看数据库信息 #
javascript
db._properties();
输出示例:
json
{
"id": "1",
"name": "_system",
"isSystem": true,
"sharding": "single",
"replicationFactor": 1
}
3.4 AQL查询数据库 #
aql
FOR db IN DATABASES
RETURN db
四、切换数据库 #
4.1 arangosh切换 #
javascript
db._useDatabase("mydb");
4.2 连接时指定数据库 #
bash
arangosh --server.database mydb
4.3 JavaScript API切换 #
javascript
var db = require("@arangodb").db;
db._useDatabase("mydb");
五、删除数据库 #
5.1 AQL删除 #
aql
DROP DATABASE mydb
5.2 JavaScript删除 #
javascript
db._dropDatabase("mydb");
5.3 删除前检查 #
javascript
if (db._databases().indexOf("mydb") !== -1) {
db._dropDatabase("mydb");
print("数据库已删除");
} else {
print("数据库不存在");
}
5.4 注意事项 #
text
警告:
├── 删除数据库会删除所有数据
├── 不能删除当前正在使用的数据库
├── 不能删除 _system 系统数据库
└── 删除操作不可恢复
六、数据库选项 #
6.1 分片设置 #
javascript
db._createDatabase("sharded_db", {
sharding: "single"
});
分片选项:
| 值 | 说明 |
|---|---|
| single | 单分片(默认) |
| cluster | 集群分片 |
6.2 复制因子 #
javascript
db._createDatabase("replicated_db", {
replicationFactor: 3
});
6.3 写关注 #
javascript
db._createDatabase("safe_db", {
writeConcern: 2
});
6.4 完整选项示例 #
javascript
db._createDatabase("mydb", {
sharding: "single",
replicationFactor: 3,
writeConcern: 2,
smartGraphs: true
});
七、数据库统计 #
7.1 查看数据库大小 #
javascript
db._statistics();
7.2 查看集合数量 #
javascript
db._collections().length;
7.3 查看所有集合 #
javascript
db._collections();
7.4 查看非系统集合 #
javascript
db._collections().filter(c => !c.properties().isSystem);
八、数据库权限 #
8.1 授权用户访问 #
javascript
require("@arangodb/users").grantDatabase("username", "mydb", "rw");
8.2 权限级别 #
| 权限 | 说明 |
|---|---|
| none | 无权限 |
| ro | 只读 |
| rw | 读写 |
8.3 撤销权限 #
javascript
require("@arangodb/users").revokeDatabase("username", "mydb");
8.4 查看用户权限 #
javascript
require("@arangodb/users").database("username", "mydb");
九、数据库备份 #
9.1 导出数据库 #
bash
arangodump --server.database mydb --output-directory /backup/mydb
9.2 导入数据库 #
bash
arangorestore --server.database mydb --input-directory /backup/mydb
十、实战示例 #
10.1 创建电商数据库 #
javascript
db._createDatabase("ecommerce");
db._useDatabase("ecommerce");
db._create("products");
db._create("users");
db._create("orders");
db._createEdgeCollection("purchased");
10.2 创建博客数据库 #
javascript
db._createDatabase("blog");
db._useDatabase("blog");
db._create("posts");
db._create("comments");
db._create("authors");
db._createEdgeCollection("written_by");
db._createEdgeCollection("comment_on");
10.3 批量创建数据库 #
javascript
["db1", "db2", "db3"].forEach(function(name) {
if (db._databases().indexOf(name) === -1) {
db._createDatabase(name);
print("创建数据库: " + name);
}
});
十一、常见问题 #
11.1 数据库名称限制 #
text
命名规则:
├── 只能包含字母、数字、下划线
├── 必须以字母开头
├── 长度限制:1-64个字符
├── 区分大小写
└── 不能使用系统保留名
11.2 数据库数量限制 #
text
建议:
├── 单实例:不超过100个数据库
├── 集群:根据硬件资源规划
└── 每个数据库的集合数量:建议不超过1000个
11.3 切换数据库失败 #
javascript
if (db._databases().indexOf("mydb") === -1) {
print("数据库不存在");
} else {
db._useDatabase("mydb");
}
十二、总结 #
数据库操作要点:
- 创建:CREATE DATABASE 或 db._createDatabase()
- 查看:db._databases() 列出所有数据库
- 切换:db._useDatabase() 切换数据库
- 删除:DROP DATABASE 或 db._dropDatabase()
- 权限:grantDatabase() 和 revokeDatabase()
下一步,让我们学习集合操作!
最后更新:2026-03-27