2012-02-28 2 views
3

저는 Redis를 nosql 데이터베이스로 사용하고 있습니다 (실제로 그것을 즐기고 있습니다). 그러나 더 편리하지 않은 경우가 있습니다. (모든 데이터 모델을 nosql과 함께 사용할 수있는 것은 아니지만 여전히 ...).
Redis에서 다음 작업을 수행 할 수있는 적절한 방법이 있는지 또는 RDMS를 대신 사용해야 할 것인지 명확히 알고 싶습니다.nosql을 사용하여 정보가 중복됩니까?

- User 
- Asset 

자산이 될 수 있습니다 "전체"는 "건물"또는 "집"

의 내가 2 오브제 있다고 가정 해 봅시다.

내가 좋아하는 자산을 수집 "자산"이라는 레디 스 목록 사용

assets = [asset:1, asset:2, ....] 

각 자산입니다 해시 같은 : 나는 모든 자산의 목록을 얻을 수있는 방법

asset:1 = {type: flat, value: 150000$} 

유형의 "평면"?

가장 쉬운 방법은 자산 목록을 반복하고 각 유형의 유형을 확인하는 것입니다. 이는 선형이므로 매우 좋습니다.

더 좋은 솔루션이 있습니까?

"플랫"유형의 저작물에 대한 참조가 포함되어있는 "플랫"은 새 목록을 작성하는 것이 유용 할 수 있지만이 뉴스 목록은 오버 헤드를 일으킬 수 있으므로 동기화해야합니다.

flats = [asset:1, asset:5, ...] 

그러나 데이터 복제 ... 나쁜이 리드 ...이 NoSQL에 갈 수있는 방법은 아직인가?

다른 제안 사항이 있으십니까?

답변

4

보통 색인이 포함 된 두 번째 키를 만듭니다. 따라서 새 저작물을 작성하면 저작물 세트와 특정 저작물 유형 세트에 해당 저작물을 씁니다. 오버 헤드이지만 다른 데이터베이스에서 경험하는 것과 동일한 오버 헤드가 있습니다. 인덱싱은 항상 추가 쓰기가 필요하며 Redis는 이러한 일이 발생하고 있음을 분명히합니다. 1 단지 you'r, 오른쪽 것은 우리가 오버 헤드 명확하게 볼 NoSQL에 함께 한

+0

감사를 저장 :

또한, 난 그냥 오히려 자산보다, 당신의 "자산"세트의 ID를 저장하는 것입니다. 마지막 지점에 대해서도 사용자 목록을 사용하려면 index = users = [2, 4, 9], assets = [1, 5] 만 사용 하시겠습니까? 나는이 접근법을 사용하지 않았지만 사용자와 자산의 열쇠가 잘 분리되어 있지 않다는 사실을 인정할 것입니다. – Luc

+0

RDMS와 동일한 색인 메커니즘을 구축한다면 nosql의 장점은 무엇입니까? 나는 Redis가 RAM에 있기 때문에 확장 성과 퍼포먼스가 장점이라고 말할 것입니다. – Luc

+0

@Luc 글쎄, 키의 이름으로 ID 범위를 지정할 수 있습니다. "사용자"유형의 값은 "1"이므로 키 사용자를 작성해야합니다. 1 포인트는 관계형 데이터베이스와 관련하여 유효합니다. 통제 인수가 있습니다. 당신은 훨씬 세밀하게 제어 할 수 있습니다. 대부분의 사람들은 데이터를 사용하지 않아도 데이터를 모델링해야한다고 생각하므로 각 요청에 대해 실제로 진행해야 할 작업을 볼 수 있습니다. 오라클은 그것을 숨기고, redis는 그것을 보게합니다. – menacingly

관련 문제