모듈: Mongoid::Shardable

확장자:
ActiveSupport::Concern
포함 항목:
컴포저블
다음에 정의됨:
lib/mongoid/shardable.rb

개요

이 모듈에는 업데이트에 샤드 키 필드를 추가하기 위한 동작이 포함되어 있습니다.

네임스페이스 아래에 정의됨

모듈: 클래스 메서드

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#shard_key_field_value(필드, prefer_persisted:) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

명명된 샤드 키 의 값을 반환합니다. 필드 가 내장된 문서 를 식별하면 키가 구문 분석되고 재귀적으로 평가됩니다. 'prefer_persisted'가 true이면 속성의 현재 값에 관계없이 데이터베이스 에 마지막으로 유지된 값이 반환됩니다.

매개변수:

  • 필드 (string)

    평가할 필드의 이름

  • prefer_persisted (true|false)

    현재 값보다 지속된 값을 선호할지 여부입니다.

반환합니다:

  • (객체)

    명명된 필드 의 값입니다.



96
97
98
99
100
101
102
103
104
105
# 파일 'lib/mongoid/shardable.rb', 줄 96

def shard_key_field_value(필드, prefer_persisted:)
  만약 필드.포함?(".")
    관계, 나머지 = 필드.split(".", 2)
    send(관계)&.shard_key_field_value(나머지, prefer_persisted: prefer_persisted)
  elsif prefer_persisted && !new_record?
    attribute_was(필드)
  other
    send(필드)
  end
end

#shard_key_fieldsArray<String>

참고:

클래스 로드 성능을 위해 위임을 사용하지 않도록 리팩터링했습니다.

샤드 키 필드를 가져옵니다.

예시:

샤드 키 필드를 가져옵니다.

model.shard_key_fields

반환합니다:

  • (Array<String>)

    샤드 키 필드 이름입니다.



47
48
49
# 파일 'lib/mongoid/shardable.rb', 줄 47

def shard_key_fields
  self.클래스.shard_key_fields
end

#shard_key_selector(prefer_persisted: false) ⇒ 해시

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

정의된 샤드 키와 일치하는 선택기를 반환합니다. 'prefer_persisted'가 false(기본값)이면 지정된 샤드 키의 현재 값을 사용하고, 그렇지 않으면 가장 최근에 유지된 값을 사용하려고 시도합니다.

매개변수:

  • prefer_persisted (true | false) (기본값은 false)

    샤드 키 필드의 현재 값을 사용할지, 아니면 가장 최근에 유지된 값을 사용할지 여부입니다.

반환합니다:

  • (해시)

    샤드 키 선택기입니다.



63
64
65
66
67
# 파일 'lib/mongoid/shardable.rb', 줄 63

def shard_key_selector(prefer_persisted: 거짓)
  shard_key_fields.each_with_object({}) do |필드, 선택기|
    선택기[필드.to_s] = shard_key_field_value(필드.to_s, prefer_persisted: prefer_persisted)
  end
end

#shard_key_selector_in_db해시

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

데이터베이스에 있는 이 문서의 기존 버전과 일치하는 선택기를 반환합니다.

문서 가 지속되지 않는 경우 이 메서드는 샤드 키 필드의 현재 값을 사용합니다. 문서 가 지속되는 경우 이 메서드는 데이터베이스 에서 검색된 값을 사용합니다.

반환합니다:

  • (해시)

    샤드 키 선택기입니다.



79
80
81
# 파일 'lib/mongoid/shardable.rb', 줄 79

def shard_key_selector_in_db
  shard_key_selector(prefer_persisted: true)
end