2. Key-Value Database
RDB(Oracle) Riak
Database Instance Riak Cluster
Table Bucket
Row Key-Value
RowID Key
* Java 의 HashMap 과 동일함
13년 4월 6일 토
3. What’s the Key-Value
Database
<Bucket = userData>
<Key = sessionID>
<Value = Object>
UserProfile
SessionData
Shopping Cart
Cart Item1
Cart Item2
13년 4월 6일 토
4. What’s the Key-Value
Database
<Bucket = userData>
<Key = sessionID_userProfile>
<Value = UserProfileObject>
세션아이디_객체명
<Key = sessionID_sessionData> 으로 한 버킷 내에서
<Value = SessionDataObject>
다른 타입과의 충돌을
<Key = sessionID_shoppingCart> 회피할 수 있다.
<Value = ShoppingCartObject>
13년 4월 6일 토
5. Consistency
• 1. 한 키에 대해 값을 얻거나 저장, 삭제 연산.
• 2. 일관성은 한 키에 대한 연산에만 적용가능.
• 3. 결과적 일관성으로 구현되어있음.
• 4. 쓰기 정족수, 복제 정족수 로 일관성을 제공.
13년 4월 6일 토
6. Transaction
• 1. 트랜잭션에 대한 보장이 없음.
• 2. 쓰기 정족수를 이용함.
13년 4월 6일 토
7. Inquiry
• 1. Key-Value Database 는 Key로 조회한다.
• 2. Key 를 모를 때 Riak 은 Riak Search 를 제
공.
• 3. Key 는 사용자가 정의한 것으로 사용된다.
예로 세션아이디, 타임스탬프 등으로 사용. 일
반적으로 세션아이디를 사용한다.
13년 4월 6일 토
8. Extendability
• 1. 샤딩을 이용한 확장.
• 2. CAP 정리를 통한 확장성 제어 가능.
• N : 복제 정족수
• R : 읽기 정족수
• W : 쓰기 정족수
• 총 노드 수 : 5
• N : 3 = 최소 3개의 노드에 복제가 되어야 복제 성공
• R : 3 = 최소 3개의 노드에서 데이터를 읽어야 읽기 성공
• W : 3 = 최소 3개의 노드에 데이터를 써야 쓰기 성공
• 3. CAP 정리를 통해 가용성의 높낮이를 조절 할 수 있다.
13년 4월 6일 토
9. Tip
• 1. Key-Value 를 적절히 사용할 수 있는 기능
• 세션 정보 저장.
• 사용자 프로파일 설정
• 장바구니
• 2. Key-Value 가 맞지 않는 기능
• 데이터간의 관계가 존재 하는 경우
• 다중 연산 트랜잭션을 사용하는 경우
• 데이터로 조회하는 경우
• 집합에 의한 연산이 이루어지는 경우
13년 4월 6일 토