簡體   English   中英

如何在Orientdb中有效地實現“如果不存在則創建”模式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM