7.13. 스트림 기반 인터페이스
Red Hat Single Sign-On의 많은 사용자 스토리지 인터페이스에는 대량 오브젝트 세트를 반환할 수 있는 쿼리 방법이 포함되어 있어 메모리 소비 및 처리 시간 측면에서 상당한 영향을 미칠 수 있습니다. 특히 쿼리 메서드의 논리에 개체의 내부 상태의 작은 하위 집합만 사용되는 경우 더욱 그러합니다.
이러한 쿼리 메서드에서 대규모 데이터 세트를 처리할 수 있는 보다 효율적인 대안을 제공하기 위해 Streams
하위 인터페이스가 사용자 스토리지 인터페이스에 추가되었습니다. 이러한 Streams
하위 인터페이스는 수퍼 인터페이스의 원래 컬렉션 기반 메서드를 스트림 기반 변형으로 교체하여 컬렉션 기반 메서드를 기본값으로 설정합니다. 컬렉션 기반 쿼리 메서드의 기본 구현은 Stream
카운터를 호출하고 적절한 컬렉션 유형으로 결과를 수집합니다.
Streams
하위 인터페이스를 사용하면 구현이 데이터 집합 처리를 위한 스트림 기반 접근 방식에 중점을 두고 해당 접근 방식의 잠재적인 메모리 및 성능 최적화를 활용할 수 있습니다. 구현할 Streams
하위 인터페이스를 제공하는 인터페이스에는 몇 가지 기능 인터페이스, org.keycloak.storage.federated
패키지의 모든 인터페이스 및 사용자 정의 스토리지 구현 범위에 따라 구현할 수 있는 몇 가지 기타 항목이 포함됩니다.
개발자에게 Streams
하위 인터페이스를 제공하는 인터페이스 목록을 참조하십시오.
패키지 | 클래스 |
|
|
|
|
| 모든 인터페이스 |
|
|
인터페이스가 기능 인터페이스임을 나타냅니다.Indicates the interface is a capability interface
스트림 접근 방식을 활용하려는 사용자 정의 사용자 스토리지 구현은 원래 인터페이스 대신 Streams
하위 인터페이스를 구현하는 것입니다. 예를 들어 다음 코드는 UserQueryProvider
인터페이스의 Streams
변형을 사용합니다.
public class CustomQueryProvider extends UserQueryProvider.Streams { ... @Override Stream<UserModel> getUsersStream(RealmModel realm, Integer firstResult, Integer maxResults) { // custom logic here } @Override Stream<UserModel> searchForUserStream(String search, RealmModel realm) { // custom logic here } ... }