2017-11-23 17 views
0

Orientdbの一意のオブジェクトに挿入したいのですが、重複したオブジェクトを避けるために私はクエリを作成し、それが存在しなければオブジェクトを作成します。私は数十億のオブジェクトを挿入する必要があり、これは非常に長い時間がかかります。どのように挿入オブジェクトの重複を避けるために、良いパフォーマンスがありますか?Orientdbにパターン "create if not exist"を効率的に実装する方法は?

ここ

は(私が道で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()) 

答えて

1

このためUPDATE UPSERT SQLステートメントは、例えば、あります。

UPDATE Address SET address_value = ?, otherField = ? UPSERT WHERE address_value = ? 

はちょうどあなたが、関連するユニークなフィールド(この場合はaddress_value)に一意のインデックスを持っていることを確認し、これはデータの重複

を防ぐことができます
関連する問題