2011-02-02 2 views
1

나는 색인 열에 의해 요소의 위치를 ​​유지하면서, 데이터베이스에 저장된 간단한 개체의 거대한 자바 목록을 가지고있다. 나는 최대 절전 모드를 사용하지만 컬렉션으로 저장하기에는 너무 커서 자체적으로 목록을 관리합니다.데이터베이스에서 거대한 목록의 여러 위치 변경을 효율적으로 적용하는 방법은 무엇입니까?

목록을 변경 한 후 (추가, 제거, 이동) 색인 열을 수동으로 업데이트하고 최대 절전 모드로 각각 새 요소를 삽입하여 데이터베이스의 변경 사항을 유지하고자합니다.

이제 (1) 목록 델타를 가능한 한 적은 수의 SQL 문에 결합하는 효율적인 알고리즘이 있습니까? (2) 모든 변경 사항을 기록하고 단계별로 적용해야합니까?

답변

1

큰 목록의 세그먼트에 대한 색인 변경을 유지하려고 할 수 있습니다. 예를 들어, 1000 개 항목의 목록에서, 당신 같은 경우

  • 위치 99 및 199에서 새 항목을 삽입 할 위치 6-
  • 이동 항목 2,
  • 제거 항목 277,

  • 삭제 항목 277
  • 업데이트 항목 :

    당신은 HQL로 다음을 수행 할 수 있습니다 set index = 6 여기서 index = 2

  • 업데이트 항목 집합 인덱스 = 인덱스 -1 여기서 인덱스는 3과 6 사이이며 이전 항목이 아닙니다. - 중복되는 부분을 확인하십시오.
  • 업데이트 항목 세트 인덱스 = 인덱스 + 1 여기서 인덱스는 278, 1000
  • 업데이트 항목 세트 인덱스 = 인덱스 + 2 곳 (199) 및 (276)
  • 업데이트 항목 세트 인덱스 = 인덱스 + 1 인덱스 99 내지 198
  • 삽입 항목 99 200
사이 인덱스

알고리즘에 대한 세부 작업을 할 준비가되지 않았습니다. 컬렉션 세그먼트 및 각 세그먼트에 대한 오프셋 목록을 유지해야한다고 말합니다.

관련 문제