一、安装与启动
1、进入到某个目录 cd /home/neunhoef/
2 获取包 wget https://download.arangodb.com/arangodb34/Community/Linux/arangodb3-linux-3.4.1.tar.gz
3、解压 tar xzvf arangodb3-linux-3.4.1.tar.gz
4、将使用的命令放到path中 export PATH="/home/neunhoef/arangodb3-3.4.1/bin:$PATH"
(1、2、3、4步骤在所有机器都执行一边)
5、其中一台机器执行命令
arangodb --starter.mode cluster --starter.data-dir /home/neunhoef/data
其它机器执行命令
arangodb --starter.data-dir=/home/neunhoef/data --starter.join 192.168.137.10(上面那台机器的ip)
6、访问地址 http://192.168.137.10:8529/,展示如下图就成功了
二、概念
database--相当于数据库中的库
collection:vertex collection(顶点,需要有_key属性,作为sharding依据)
edge collection(边,在graph中用,需要有_key,id_,_from、_to等属性)--相当于数据库中的表
document--相当于数据库表中的行
三、导入测试数据数据
数据下载地址 https://www.arangodb.com/wp-content/uploads/2019/02/GraphCourse_DemoData_ArangoDB-2.zip
解压后在任意一台机器执行下面的导入命令
arangoimp --file /home/neunhoef/airports.csv --collection airports --create-collection true --type csv
arangoimp --file /home/neunhoef/flights.csv --collection flights --create-collection true --type csv --create-collection-type edge
导入成功后collections中会有如下图
四、Aql介绍
aql就是在arangodb中执行的语句
1 语句格式介绍
FOR vertex[, edge[, path]]
IN [min[..max]]
OUTBOUND|INBOUND|ANY startVertex
edgeCollection[, more…]
OPTIONS{...}
FOR有三个参数
vertex (object): 遍历中的当前顶点
edge (object, optional): 遍历中的当前边
path (object, optional): 两个对象的路径表示
IN min…max:定义遍历的最小深度和最大深度。如果未指定,默认为1
OUTBOUND/INBOUND/ANY:定义搜索的方向
edgeCollection:保存在遍历中要考虑的边缘的集合的一个或多个名称
OPTIONS 可选项
uniqueVertices:可选地确保顶点唯一性,有三个值:
"path" - 保证没有路径返回一个重复的顶点
"global" - 保证在遍历期间每个顶点最多被访问一次,无论从起始顶点到这个顶点有多少路径。注意:使用此配置,结果不再是确定性的。如果从startVertex到顶点有多条路径,则选择其中一条路径。
"none"(默认) - 不对顶点应用唯一性检查
uniqueEdges:可选地确保边缘唯一性,有三个值:
"path"(默认) - 保证没有路径返回一个重复的边
"global" - 保证在遍历过程中,每个边缘最多被访问一次,无论从起始顶点到该边缘有多少条路径。。注意: 使用此配置,结果不再是确定性的。如果有从多个路径startVertex超过边缘的那些中的一个被拾取。
"none" - 不对边缘应用唯一性检查。注意: 使用此配置,遍历将跟随边沿周期。
bfs(bool):是否使用广度优先算法,默认为true
2 案例
//查询洛杉矶直达的机场
with airports FOR airport IN OUTBOUND 'airports/LAX' flights
OPTIONS {bfs:true,uniqueVertices:'global'}
RETURN airport
//返回10个洛杉矶的航班和他们的目的地
WITH airports FOR airport, flight IN OUTBOUND 'airports/LAX' flights
LIMIT 10
RETURN {airport, flight}
//洛杉矶到肯尼迪机场的最短路径
WITH airports FOR v IN ANY SHORTEST_PATH 'airports/LAX' TO 'airports/JFK' flights return v
五、整合springboot项目
1、引入包
<dependency>
<groupId>com.arangodb</groupId>
<artifactId>arangodb-spring-data</artifactId>
<version>3.3.0</version>
</dependency>
2、配置类
@Configuration
@EnableArangoRepositories(basePackages = "DAO类所在的目录")
public class ArangoConfig implements ArangoConfiguration {
@Override
public ArangoDB.Builder arango() {
ArangoDB.Builder arango = new ArangoDB.Builder()
.useProtocol(Protocol.VST)
.host("192.168.137.10", 8529)
.user("root")
.password("123456");
return arango;
}
@Override
public String database() {
return "_system";
}
}
3、DAO层
@Repository
public interface PersonRepository extends ArangoRepository<Airport,Long> {
@Query("WITH airports FOR p in airports FILTER p.city == @city RETURN p")
List<Airport> getPersonsByName(@Param("city") String city);
}
4、Bean和Controller
@Document("airports")
@Data
public class Airport {
private String _key;
private String _id;
private String _rev;
private String name;
private String city;
}
@RestController("airport")
@AllArgsConstructor
public class AirportController {
@Autowired
private PersonRepository personRepository;
@GetMapping("getAriportsByCity")
public CommonResult<List<Airport>> getAriportsByCity(String city) {
List<Airport> persons = personRepository.getPersonsByName(city);
return CommonResult.success(persons);
}
}
5、请求结果(只写了几个字段)和web界面查询的结果
参考
https://www.arangodb.com/2019/01/run-multiple-versions-arangodb/
https://blog.csdn.net/w690333243/article/details/103497010
http://www.k6k4.com/blog/show/aaauzlfq11509506868802