1

DSE Graph允许指定边基数,即对于某些边标签,它可以强制只有一个带有这种标签的边从任何顶点出来。这在手动线性化测试中效果很好 - 尝试设置具有相同标签的第二条边缘将失败。

然而,我们不清楚并发场景中的确切保证是什么,即当两个线程试图在大致相同的时间将具有相同标签的边添加到顶点时。

鉴于 Cassandra 作为底层数据存储,可能有两种可以想象的方式:

  1. 两个线程都没有观察到当前的边缘。两个线程都成功添加了边,第一个添加被覆盖,只有后一个添加可见。

  2. 采用了像 Cassandra 轻量级事务这样的机制,这样只有在没有边时才会添加边(“比较和设置”)。保证其中一个线程失败。

我们假设 DSE Graph 保证足够强大,以至于我们不可能以两个具有相同标签的可观察边结束。是否有任何关于 DSE Graph 实际实施的信息?

4

1 回答 1

3

DSE 图中的单一基数边可防止您在一对顶点之间添加多个相同标签的边。这是通过具有固定组件的边缘 ID 来实现的。不使用 LWT。只要边的其他边连接到不同的顶点,就可以将多个相同类型的单一基数边连接到一个顶点。

于 2017-02-07T16:08:19.830 回答