ArangoDB 集合锁

ArangoDB collection lock

我正在考虑将 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。查询完成后,我可以访问它。

A​​rangoDB插入数据时是否使用集合锁?

如果您将 ArangoDB 与 MMFiles 存储引擎一起使用,写入块读取和锁定在集合级别。因此,在执行查询并将边写入 peopleAndMovieRelation.

时无法访问边集合

然而,对于 RocksDB 存储引擎,文档级锁允许并发写入。写入不会阻塞读取。读取不会阻止写入。

https://docs.arangodb.com/3.2/Manual/Architecture/StorageEngines.html

此处对存储引擎进行补充说明。 Comparing RocksDB and MMFiles Storage Engine

简称)

MMFiles 存储引擎
- 基于最新版本 (3.2)
的 ArangoDB 默认存储引擎 - Collection级锁
- 所有索引在启动时加载主内存(如果索引太多但访问速度最快,则启动时间长)

RocksDB 存储引擎
- 支持 3.2+
- 在主内存中缓存数据,但如果需要则从磁盘加载
- 所有索引都写在磁盘上
- 最快的启动(启动时无负载索引),逐渐提高性能