我正在考虑使用arangoDB进行图搜索。
我有两个集合,一个是人,另一个是电影,我在人和电影之间制作了一个图表。
当我插入如下的查询时
FOR p IN people
FOR m In movie
FILTER p.movieName == m.title
INSERT {_from:p._id, _to:m._id} IN peopleAndMovieRelation
当我查询上面的查询时,我无法访问peopleAndMovieRelation edge Collection。查询完成后,我可以访问它。
插入数据时,ArangoDB是否使用收集锁定?
答案 0 :(得分:1)
如果将ArangoDB与MMFiles存储引擎一起使用,则写入块读取和锁定处于收集级别。因此,在执行查询并将边缘写入peopleAndMovieRelation
时,无法访问边集合。
然而,使用RocksDB存储引擎,文档级锁定允许并发写入。写入不会阻止读取。读取不会阻止写入。
https://docs.arangodb.com/3.2/Manual/Architecture/StorageEngines.html
答案 1 :(得分:0)
这是存储引擎的附加说明。 Comparing RocksDB and MMFiles Storage Engine
简而言之)
MMFiles存储引擎
- 基于最新版本(3.2)的ArangoDB默认存储引擎
- 收集级锁定
- 所有索引在启动时加载主内存(如果索引太多但访问速度最快,则启动时间较长)
RocksDB存储引擎
- 支持3.2+
- 在主内存中缓存数据,但如果需要则从磁盘加载
- 所有索引都写在磁盘上
- 最快的启动(启动时无负载索引),逐步提高性能