2017-11-23 25 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) 고유의 관련 고유의 필드에 대한 인덱스가 있는지 확인이 데이터 중복

을 방지 할 수 있습니다