2016-07-04 3 views
3

나는 cassandra에 초보자입니다. 페이스 북 게시물의 데이터를 저장하는 카산드라에 테이블을 디자인하려고합니다.cassandra의 페이스 북 게시물을 모델하는 방법

포함 된 내용은

user_id,post_id,post_data,comments_details,likes_details, comments_count and likes_counts입니다.

은 내가 list of map types 필드 comments_details에 대한

{ 
    "comments_details": [ 
    { 
     "created_time": "2016-06-29T09:05:06+0000", 
     "from": { 
     "name": "user_1", 
     "id": "14465295694" 
     }, 
     "message": "Hello How are you", 
     "can_remove": false, 
     "like_count": 1, 
     "user_likes": true, 
     "id": "174022481_674622404" 
    }, 
    { 
     "created_time": "2016-06-29T09:05:14+0000", 
     "from": { 
     "name": "user2", 
     "id": "144652387" 
     }, 
     "message": "hjhjh", 
     "can_remove": false, 
     "like_count": 0, 
     "user_likes": false, 
     "id": "17402248_6752892070" 
    } 
    ] 
} 

이 또는 단일 테이블에 그것을 할이 올바른 방법인가 포함 JSON 데이터를 저장하는 사용자 정의 데이터 형식을 사용하고 Partitioning key

user_id and Post_Id했다 comments_details 및 likes_details에 대한 다른 테이블을 만들 수 있습니까? 또한 해당 게시물에 대한 의견을 세지 않으려합니다. 카산드라의

도와주세요 ..

답변

2

데이터 모델링은 가장 실행하려는 쿼리에 크게 의존한다. 먼저, 특정 쿼리 집합에 대한에 대한 올바른 데이터 모델 에 대해 이야기해야합니다.

Here 카산드라로 시작했다면 정말 좋은 기사가 있습니다. 데이터 모델링을위한 자동화 된 도구를 제시하지만 좋은 데이터 모델링의 기본 원리를 간략하고 정확하게 설명합니다.

일반적으로 응용 프로그램이 가능한 최소한의 파티션 액세스로 데이터 요구 사항을 충족 시키길 원합니다. 데이터의 붉은 색 부분이 중요한 역할을합니다. 예를 들어, 앱의 주요 요구 사항이 주어진 사용자의 가장 최근 게시물을로드하는 것이라면, 예를 들어 user_id를 파티션 키로 사용하고 게시일을 클러스터링 키로 사용하도록 결정합니다. 단일 파티션 액세스로 최신 n 개의 게시물을 가져옵니다. 고려해야 할 다른 측면은 유연성과 데이터 배포 사이의 절충입니다. 즉, 특정 쿼리 및 액세스 패턴 집합을 고려한 다음 거기에서부터 시작하십시오.

관련 문제