저는 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에 갈 수있는 방법은 아직인가?
다른 제안 사항이 있으십니까?
감사를 저장 :
또한, 난 그냥 오히려 자산보다, 당신의 "자산"세트의 ID를 저장하는 것입니다. 마지막 지점에 대해서도 사용자 목록을 사용하려면 index = users = [2, 4, 9], assets = [1, 5] 만 사용 하시겠습니까? 나는이 접근법을 사용하지 않았지만 사용자와 자산의 열쇠가 잘 분리되어 있지 않다는 사실을 인정할 것입니다. – Luc
RDMS와 동일한 색인 메커니즘을 구축한다면 nosql의 장점은 무엇입니까? 나는 Redis가 RAM에 있기 때문에 확장 성과 퍼포먼스가 장점이라고 말할 것입니다. – Luc
@Luc 글쎄, 키의 이름으로 ID 범위를 지정할 수 있습니다. "사용자"유형의 값은 "1"이므로 키 사용자를 작성해야합니다. 1 포인트는 관계형 데이터베이스와 관련하여 유효합니다. 통제 인수가 있습니다. 당신은 훨씬 세밀하게 제어 할 수 있습니다. 대부분의 사람들은 데이터를 사용하지 않아도 데이터를 모델링해야한다고 생각하므로 각 요청에 대해 실제로 진행해야 할 작업을 볼 수 있습니다. 오라클은 그것을 숨기고, redis는 그것을 보게합니다. – menacingly