ArangoDB部署
特点
- NoSQL数据库
- 原生多模型数据库,兼有key/value、graph图和document文档数据模型
- 支持AQL和API来查询数据
- 高性能,速度极快
- 空间利用率高,占用的存储空间少
- 支持垂直和水平扩展
- 秒级启动
- 支持多种操作系统
- 开源免费
- 支持主从集群
与关系型数据库相比的优势:
1、关系表达直接、直观,易于建模;
2、插入数据高效,因为只需要插入顶点,然后通过边来维系点与点之间的关系;
3、高效的查询关联数据,尤其是上述的多层关联关系时,传统的关系型数据库,一般来说都是需要做表连接的,对资源的消耗极大。图数据库在这点上做了针对性的优化,防止局部数据的查询引发全部数据的读取。
ArangoDB程序及其作用
- arangod ,数据库的守护进程
- arangosh ,数据库的shell环境
- arangoimp, 导入工具
- arangodump 备份工具
- arangorestore 恢复工具
- foxx-manager 管理Foxx应用程序
- aranggo-dfdb 数据文件调试器
- arangob 主要用于ArangoDB的开发和测试
关键概念
AQL:arangodb query language,arangodb的查询语言,可与类似于SQL。
Database:下有多个Collection
Collections:有Docunment和Edge两种类型,这个可以类似于Oracle上的表,AQL不能操作Collections
Document:可以类似于Oracle上表中的一条记录,
Edge:可以类似于Oracle上表中的一条记录,跟Document不同的是,这个存储的是Document之间的关系。
存储引擎
版本3.2之后支持两种存储引擎 :MMFiles和RocksDB
3.4之前默认为MMFiles,3.4及之后默认采用RocksDB
部署安装
-
上传rpm文件
-
执行 rpm -ivh arangodb3-xxx.x86_64.rpm
- getting-started:www.arangodb.com/docs/stable/getting-started.html
- congiguring-storage-engine:https://www.arangodb.com/docs/stable/programs-arangod-server.html#storage-engine
- configuration file: /etc/arangodb3/arangod.conf
- start arangodb sheel client: /usr/bin/arangosh
- start service: systemctl start arangodb3.service
- enable service :systemctl enable arangodb3.service
-
设置root密码:arango-secure-installation
-
修改arangod配置文件:
- vi /etc/arangodb3/arangod.conf
- 将 endpoint = tcp://127.0.0.1:8529 修改为:endpoint = tcp://本机IP:8529
- 修改 authentication = false
-
修改arangosh配置文件
- vi /etc/arangodb3/arangosh.conf
- 将 endpoint = tcp://127.0.0.1:8529 修改为:endpoint = tcp://本机IP:8529
- 修改 authentication = false
-
查看arangodb状态:systemctl status arangodb3
-
启动:systemctl start arangodb3 或service arangodb3 status
-
重启:systemctl restart arangodb3
集群
集群特点:
- 满足CP的master-master模型,优先保证数据的一致性。
- 可扩展
- 故障恢复,自动选举leader,快速恢复数据服务
- 分布式存储,每个Collect都切割分布式存储到各个DB Server上
- 同步备份,每份数据都保持多个副本
集群角色:
集群中有4种节点:Agent,Coordinator,Primary(DBServer) 和 Secondary。前三者必选,Secondary可选。
Agent:集群的配置中心,负责leader的选举和数据同步服务。
Coordinator:负责集群与外界交互。coordinator指导数据存储在哪里,对查询可以做优化
Primary(DBServer):存储仓库。管理数据的分片和分片的主从复制工作
部署方式:
# 启动Master
arangodb --starter.data-dir=/root/arangodb/db1 --server.storage-engine=rocksdb start
# 启动其他节点
arangodb --starter.data-dir=/root/arangodb/db2 --server.storage-engine=rocksdb --starter.join xx.xx.xx.xxx start
arangodb --starter.data-dir=/root/arangodb/db3 --server.storage-engine=rocksdb --starter.join xx.xx.xx.xxx start
重申: Master 概念只是创建集群时的叫法,创建好之后,无Master节点,所有节点地位是一样的。
数据导出与导入
- 导出
arangodump --server.endpoint tcp://<ip>:<port> --server.username <username> --server.password <passwd> --server.database <database> --output-di rectory /<arangodb-bak-path>/dump-$(date "+%Y%m%d-%H:%M:%S")
- 导入document
arangoimp --file /path/airports.csv --collection airports --create-collection true --type csv --server.endpoint "http+tcp://{IP}2:8529"
- 导入edge
arangoimp --file /PATH/flights.csv --collection flights --create-collection true --type csv --create-collection-type edge --server.endpoint "http+tcp://{IP}2:8529"
关闭arangod集群
pkill -f arangod