2017-10-05 8 views
0

현재 NodeJS에서 Cassandra (v2.2.8)를 사용 중입니다 (cassandra-driver npm 패키지 사용).Cassandra : 복잡한 중첩 JSON 데이터의 테이블 구조

{ 
    "id": "12345", 
    "name": "John Doe", 
    "approvedTempHours": { 
     "tempHours": [{ 
      "start": "dd/mm/yyyy", 
      "end": "dd/mm/yyyy", 
      "openinghour": "0800" 
     }, { 
      "start": "dd/mm/yyyy", 
      "end": "dd/mm/yyyy", 
      "openinghour": "0900" 
     }], 
     "Recurrence": [{ 
      "recurrence": "12", 
      "day": "Friday" 
     }] 
    }, 
    "rejectedTempHours": { 
     "tempHours": [{ 
      "start": "dd/mm/yyyy", 
      "end": "dd/mm/yyyy", 
      "openinghour": "0830" 
     }], 
     "Recurrence": [{ 
      "recurrence": "12", 
      "day": "Friday" 
     }] 
    } 
} 

내가 현재 위의 복잡한 데이터에 맞게 열심히 디자인 테이블 (들)을 발견하고 :

내가 들어오는 요청의 일환으로 다음과 같은 데이터 구조를 가지고있다.

테이블 구조가 쿼리를 기반으로 수행되어야한다는 것을 알고 있기 때문에. 쿼리하는 동안 approvedTempHours 개체 내에서을 검색하고 start (시작 날짜)을 기준으로 tempHours의 값을 가져와야합니다. 필요한 경우 쿼리 후 예상되는 JSON의 구조를 제공 할 수 있습니다.

지금까지 내가 필요로하는 구조를 얻을 수 map, tuples, user defined 유형 등이 아닌를 사용하여을 시도했다.

어떤 전문가의 조언도 대단히 감사합니다!

추신 : MongoDB가 이러한 복잡한 데이터 모델을 처리하기에 적합한 지 여부도 수정되었습니다. 내가 카산드라에게 고집하는 유일한 이유는 여러 주인과 100 % 가용성 (가동 중단 없음) 때문입니다. 반면에 생산 환경에서 MongoDB는 복원력이 없으며 마스터가 하나뿐이므로 마스터가 다운 된 경우 슬레이브 노드를 '마스터'로 전환하는 데 시간이 걸립니다 (매우 드물지만 발생합니다).

답변

-1

가용성이 100 %이고 마스터가 여러 개인 문서 데이터베이스를 원하면 couchbase로 이동하십시오.