Arangodb(https://www.arangodb.com/)是一个开源的NoSQL数据库,具有灵活的数据模型,如document、graph以及key-value。项目起始于2011年。
ArangoDB的源代码:https://github.com/arangodb/arangodb
ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally with a few mouse clicks.
本文内容:
1.Ubuntu 16.04安装ArangoDB
2.简单配置ArangoDB
3.插入、修改和查询数据
1.安装ArangoDB(参看:https://www.arangodb.com/download/ubuntu/)
添加公共密钥:
$ wget https://www.arangodb.com/repositories/arangodb3/xUbuntu_16.04/Release.key
$ sudo apt-key add - < Release.key
添加源:
$ echo 'deb https://www.arangodb.com/repositories/arangodb3/xUbuntu_16.04/ /' | sudo tee /etc/apt/sources.list.d/arangodb.list
安装ArangoDB:
$ sudo apt-get update
$ sudo apt-get install arangodb3
安装过程中需要设置数据库root密码:
ArangoDB有如下几个重要的程序:
arangod:ArangoDB数据库主进程,它可以处理客户端的TCP /HTTP连接
arangosh:ArangoDB的命令行客户端,可以访问管理ArangoDB数据库
arangoimp:导入JSON和CSV的数据库工具
arangodump:备份工具,导出JSON格式的数据
arangorestore:恢复工具
arango-dfdb:主要用在开发时调试
arangobench:性能测试
默认安装的ArangoDB有一个_system的数据库和一个root用户。要设置root密码,执行:
$ sudo arango-secure-installation
2.ArangoDB的基本使用
和ArangoDB交互有两种常用的方法:第一种是使用ArangoDB命令行客户端arangosh;另一种是ArangoDB提供的Web接口。
# arangosh
$ arangosh
键入tutorial查看使用教程,help查看命令帮助。
它是JavaScript Shell,可以直接执行JavaScript代码:
127.0.0.1:8529@_system> a = 3
3
127.0.0.1:8529@_system> b = 4
4
127.0.0.1:8529@_system> a + b
7
创建一个新用户:
var users = require("@arangodb/users");
users.save("my_user", "my_password");
// 或
require("@arangodb/users").save("my_user", "my_password");
sava的函数原型:
save(user, password, active, extra); // 密码可以设为空
新创建的用户默认并没有访问数据库的权限,需要使用grantDatabase函数赋予权限,例如:
require("@arangodb/users").grantDatabase("my_user", "test_db");
如果一个用户有访问_system数据库的权限,那么这个用户拥有root权限。
要取消前面赋予的权限:
require("@arangodb/users").revokeDatabase("my_user", "test_db");
列出所有ArangoDB用户:
require("@arangodb/users").all();
删除用户:
require("@arangodb/users").remove(my_user);
如果要删除的用户不存在,抛出异常。
创建数据库:
// 函数原型
db._createDatabase(name, options, users)
// 创建数据库
db._createDatabase("test_db", []);
// 创建数据库和用户
db._createDatabase("test_db", [], [{ username: "my_user", passwd: "my_password"}]);
切换数据库:
127.0.0.1:8529@_system> db._useDatabase('test_db');
127.0.0.1:8529@test_db>
列出所有数据库:
db._databases();
删除数据库:
127.0.0.1:8529@_system> db._dropDatabase('test_db');
删除数据库只能在_system数据库下执行,_system数据库本身不能删除。
创建新集合(collection):
db._create('users');
列出这个数据库中所有集合:
db._collections();
删除集合:
db._drop('users');
向集合中插入数据:
db.users.insert(
{
"name" : "test1",
"address" : {
"city" : "Mars",
"nation" : "China"
},
"age":20
}
)
一次可以插入多个文档,例如:
db.users.insert([
{
"name" : "test2",
"address" : {
"city" : "Mars",
"nation" : "US"
},
"age":21
},
{
"name" : "test3",
"address" : {
"city" : "Mars",
"nation" : "UK"
},
"age":22
}
])
返回一个集合的所有文档:
db.users.toArray();
根据条件过滤文档,例如,返回name为test2的所有文档:
db.users.byExample( { "name": "test2" } ).toArray();
更新文档:
db.users.update({"_key" : "13693"}, {"name":"test4"});
替换文档:
db.users.replace({"_key" : "13693"}, {"name":"test5"});
移除文档:
db.users.remove({"_key" : "13693"});
3.web接口
使用浏览器访问:http://localhost:8529
ArangoDB官方文档:https://www.arangodb.com/documentation/