모듈: Mongoid::Shardable
개요
이 모듈에는 업데이트에 샤드 키 필드를 추가하기 위한 동작이 포함되어 있습니다.
네임스페이스 아래에 정의됨
모듈: 클래스 메서드
인스턴스 메서드 요약 접기
-
#shard_key_field_value(필드, prefer_persisted:) ⇒ 객체
비공개
명명된 샤드 키 의 값을 반환합니다.
-
#shard_key_fields ⇒ Array<String>
샤드 키 필드를 가져옵니다.
-
#shard_key_selector(prefer_persisted: false) ⇒ 해시
비공개
정의된 샤드 키와 일치하는 선택기를 반환합니다.
-
#shard_key_selector_in_db ⇒ 해시
비공개
데이터베이스에 있는 이 문서의 기존 버전과 일치하는 선택기를 반환합니다.
인스턴스 메서드 세부 정보
#shard_key_field_value(필드, prefer_persisted:) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
명명된 샤드 키 의 값을 반환합니다. 필드 가 내장된 문서 를 식별하면 키가 구문 분석되고 재귀적으로 평가됩니다. 'prefer_persisted'가 true이면 속성의 현재 값에 관계없이 데이터베이스 에 마지막으로 유지된 값이 반환됩니다.
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_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(기본값)이면 지정된 샤드 키의 현재 값을 사용하고, 그렇지 않으면 가장 최근에 유지된 값을 사용하려고 시도합니다.
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 |