2017-02-08 1 views
0

Ignite에서 제공하는 데이터 그리드 기능을 사용할 생각입니다. Apache Ignite의 한 측면에 대해서는 분명하지 않습니다.Ignite가 힙에 값을 저장하는 방법

개체를 Ignite 캐시에 넣을 때 (꺼짐 힙이 사용되지 않아서 힙에만 항목을 저장함) 객체를 직렬화하고 힙에 저장하는지 또는 객체를 저장합니까? 그대로?

동일한 JVM (Ignite Value가 저장된 힙)에서 실행되는 프로세스 (IgniteCache # get 사용)에서 저장된 값에 액세스하면 Ignite가 먼저 값을 비 직렬화 한 다음 프로세스에 보냅니 까?

질문에 대한 대답이 '예'인 경우 해당 캐시가 성능 향상을 위해 직렬화 오버 헤드를 우회 할 수있는 해결 방법이 있는지 알고 싶습니다.

답변

0

Ignite는 값을 이진 형식으로 저장하며 기본값은 읽을 때마다 기본값으로 deserialize됩니다.

CacheConfiguration.copyOnRead으로 설정하면 역 직렬화 된 값이 이진 형식과 함께 공유됩니다. 이렇게하면 읽기 성능은 향상되지만 메모리 소비도 증가합니다. 또한 이런 방식으로 변형 된 객체를 피해야합니다.

deserialization을 피하기위한 또 다른 옵션은 withKeepBinary() 플래그를 사용하는 것입니다. 설정되면 캐시는 비 직렬화 된 객체 대신 BinaryObject 인스턴스를 반환합니다. 자세한 내용은 다음 페이지를 참조하십시오. https://apacheignite.readme.io/docs/binary-marshaller

+0

바이너리 마셜 러를 사용하는 경우 개체로 값을 가져 오기 위해 비 직렬화를 수행해야합니까? –

+0

위에서 설명한 모든 것은 모든 마샬 러에게 적용됩니다 (물론'withKeepBinary() '를 제외하고, 이것은'BinaryMarshaller '에 고유합니다). –