redis - 如何设计“多对一”在非关系型数据库
ringa_lee
ringa_lee 2017-04-21 11:16:51
0
3
928

现在存文章内容用hash类型:

post:$post_id
    title,
    content
    ...

comment:$comment_id
    content,
    date,
    status

posts:
    $post_id, $comment_id

存了一个hash类型的posts来表示关系,可能是还是没摆脱关系型数据库。

这种“一对多”的模式,如何在redis上更合理……更redis的体现出来.
应该如何设计这里

ringa_lee
ringa_lee

ringa_lee

모든 응답(3)
伊谢尔伦

NoSQL은 Join 기능을 완벽하게 지원하는 경우가 거의 없으므로 일반적으로 NoSQL에서 확장된 관계를 저장하는 데 비정규화된 형식이 사용되므로 관계는 더 이상 "다대일"이 아니라 "일대다" 관계가 됩니다.

컬렉션 유형을 사용하여 Redis의 목록 또는 집합, MongoDB의 하위 문서 등과 같은 하위 문서를 저장할 수 있습니다.

NoSQL의 경우 기사, 댓글 등 관련된 내용을 함께 모아두는 간단한 원칙이 있습니다. 가능하다면 단순히 Store만 저장하는 것이 아니라 기사, 댓글의 콘텐츠를 포함한 모든 속성을 함께 묶어두는 것이 좋습니다. 기사 기록의 댓글 ID입니다.
이것의 장점은 분명합니다. 이 기사와 관련된 모든 데이터를 얻으려면 한 번의 읽기 작업만 필요합니다. 데이터를 어떻게 분할하더라도 기사와 관련 항목이 서로 다른 물리적 시스템으로 분리되지 않습니다. 백엔드 확장성을 크게 향상시킵니다.
물론 이러한 디자인이 항상 귀하의 애플리케이션에 적합하지는 않을 수 있습니다. 예를 들어 기사와 저자 간의 관계가 완전히 비정규화 가능하지 않을 수 있으므로 데이터 구성 방법을 결정하려면 데이터 표시 방법과 프로세스를 신중하게 고려해야 합니다.

요컨대 NoSQL은 더 높은 유연성, 확장성, 성능을 제공하지만 원래의 블랙박스 데이터베이스를 화이트박스 스토리지 엔진으로 단순화하기도 합니다. 가장 적합한 균형점을 갖춘 이 직업에는 많은 경험과 비즈니스에 대한 심층적인 이해가 필요합니다.

물론 데이터의 양이 적다면 문제가 되지 않습니다.

阿神

사용 목록?

巴扎黑

그냥 set을 사용할 수는 없나요? post_id에 댓글 ID를 set으로 입력하세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿