[英]How to implement efficiently the pattern “create if not exist” in Orientdb?
我想在Orientdb中插入唯一的對象,但是為了避免重復的對象,我先進行查詢,然后創建不存在的對象。 我要插入數十億個對象,這花費了很長時間。 如何避免插入重復對象並具有良好的性能?
這是我的代碼示例(順便說一句,我正在使用pyorient):
# creation object Address src
query_ip_src = client.query("select @rid from `Address` where address_value = '" + log_value[2] + "' parallel")
if len(query_ip_src) == 0:
ip_src = Address()
ip_src.address_value = log_value[2]
ip_src_record = client.record_create(clusters[b'address'], ip_src.to_dict())
ip_src_rid = str(ip_src_record._rid)
else:
ip_src_rid = "#" + str(query_ip_src[0].rid.get())
為此,有一個UPDATE UPSERT SQL語句。
UPDATE Address SET address_value = ?, otherField = ? UPSERT WHERE address_value = ?
只要確保您在相關唯一字段(在這種情況下為address_value
)上具有唯一索引,就可以防止數據重復
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.