2017-10-03 5 views
0

다음 데이터 유형이 데이터베이스에 있고 Gemfire에 저장하려고합니다.Gemfire 합성 키 (pojo)를 gemfire 키로 사용

+------------------------------+--------------------------------+----------------------------------------+----------------------------------+----------------------------------+------------------------------------+-----------------------------------+------------------------------+------------------------+----------------------------+-------------------------------------+--+ 
| A       | B        | C          | D        | E        | F         | G         | H       | I      | J       | date        | 
+------------------------------+--------------------------------+----------------------------------------+----------------------------------+----------------------------------+------------------------------------+-----------------------------------+------------------------------+------------------------+----------------------------+-------------------------------------+--+ 
| VK       | XXXXXXXXXXXXXXXX    | YYY         | VBGFD       | 9        | 193.83        | 9         | T       |      | False      | 2017-08-25       | 
| VK       | XXXXXXXXXXXXXXXX    | YYY         | VBGFD       | 25.22       | 193.83        | 9         | T       |      | False      | 2017-08-25       | 
| VK       | XXXXXXXXXXXXXXXX    | YYY         | VBGFD       | 9        | 112.23        | 9         | T       |      | False      | 2017-08-25       | 
| VK       | XXXXXXXXXXXXXXXX    | YYY         | VBGFD       | NULL        | 89.98        | NULL        | T       |      | False      | 2017-08-25       | 
+------------------------------+--------------------------------+----------------------------------------+----------------------------------+----------------------------------+------------------------------------+-----------------------------------+------------------------------+------------------------+----------------------------+-------------------------------------+--+ 

4 rows selected (2.248 seconds) 

1) 데이터가 중복되어 있고 다른 값을 가진 열이 고유 한 행으로 간주 될 수 있습니다.

2) 데이터 중복 때문에) (나는 두 가지 솔루션을 다음 한

값을 대체하므로 내가 Gemfire 키로 모든 열을 사용할 수 없습니다

접근 한

내가 사용 할 수 있습니다 복합 키 (pojo)를 gemfire 키로 사용하지만 문제는 키와 값으로 동일한 pojo를 사용해야한다는 것입니다 (데이터 당).

이 접근 방식의 문제점은 지역의 데이터 크기가 두 배가되고 로더가 메모리 오류가 발생하기 시작한다는 것입니다.

접근법 2

데이터베이스에 자동 증가 ID를 만들고 열쇠로이 ID를 사용하지만, 증분 ID가 내 SQL의 일부가 될 것입니다 후 내가 인덱스를 작성해야합니다.

내 쿼리

query --query='select a,b,c,d,e,f,g,h,i,j,date from/myRegion where a=VK and b=XXXXXXXXXXXXXXXX and c=YYY and F=193.83' 

나는 사람이 같은 시나리오 건너 궁금 해요?

업데이트 : 값으로 자동 증가 ID (Long)를 키와 pojo로 사용하기로 결정했습니다. 열에 범위 색인을 만들 계획입니다.

답변

1

데이터에 대한 액세스 패턴의 종류는 무엇입니까? OQL 또는 함수를 사용하여 데이터를 쿼리하는 경우 무작위 키를 생성하고 값을 데이터로 사용하는 것이 좋습니다.

키의 모든 데이터를 유지하는 데 아무런 가치가 없습니다. (region.get (key)를 사용하여) 조회를 수행하려면 키를 작성하기 위해 모든 데이터가 필요합니다.이 때 get()은 아무런 가치가 없습니다.

(갱신)

키가 조회를 수행하는 동안 항상 사용할 수있는 필드의 최소 수를 가져야한다. 귀하의 질의에 a, b, c 및 d를 사용하고 있으므로 귀하의 키는 a, b, c, d로 구성되고 귀하의 값은 나머지 필드를 포함 할 것을 제안합니다. 이 시점에서 당신은 region.get (key)를 수행 할 수 있습니다. 쿼리를 작성할 필요가 없습니다.

+0

나는 휴식 마이크로 서비스를 드러내고있다. 나는 자동 증가 키를 gemfire 키로 사용하려고 생각했지만 문제는 gemfire 지역에 수십억 개의 레코드가 있으며 키 인덱스를 만들어야한다는 것이다. –

+0

Hey Khan, @Swapnil이 언급했듯이 데이터 액세스/읽기 (이 부분에 답하지 않은 방법)에 대해 생각해야합니다. 예를 들어 "select * from/region1 where A = 'VK'"와 같이 데이터 읽기가 열 중 하나를 쿼리하는 것과 같을 것인지 묻고 있었고 목록을 가져 와서 이후에 작업을 수행했습니다. 아니면 어떤 모습일까요? –

+0

감사합니다 장, 내가 필요한 세부 사항으로 질문을 업데이 트했습니다 –

관련 문제