偏好使用節點/關係IDs - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

偏好使用節點/關係IDs

Neptune 允許使用者明確指派節點和關係IDs。ID 在資料集中必須是全域唯一的,且具有決定性,才有用。決定性 ID 可以用作查詢或篩選機制,就像屬性一樣;但是,使用 ID 從查詢執行角度比使用屬性來得最佳化。使用自訂 IDs 有幾個好處 -

  • 現有實體的屬性可以是 null,但 ID 必須存在。這可讓查詢引擎在執行期間使用最佳化聯結。

  • 執行並行變動查詢時,當 IDs用於存取節點時,並行修改例外狀況 (CMEs) 的機會會大幅降低,因為 IDs 的鎖定比屬性的鎖定更少,因為其強制執行的唯一性。

  • 使用 IDs 可避免建立重複資料的機會,因為 Neptune 會在 IDs上強制執行唯一性,與屬性不同。

下列查詢範例使用自訂 ID:

注意

屬性~id用於指定 ID,而 id只會儲存為任何其他屬性。

CREATE (n:Person {`~id`: '1', name: 'alice'})

不使用自訂 ID:

CREATE (n:Person {id: '1', name: 'alice'})

如果使用後者機制,則沒有唯一性強制執行,您可以稍後執行查詢:

CREATE (n:Person {id: '1', name: 'john'})

這會建立id=1名為 的第二個節點john。在此案例中,您現在將有兩個節點與 id=1,每個節點的名稱各不相同 - (alice 和 john)。