本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
偏好使用節點/關係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)。