Cassandra와 SuperColumns.
-
12-12-2019 - |
문제
다음 질문이 있습니다 : 아래와 같아 보이는 카산드라에서 열 패밀리를 만들 수 있으며 구조를 정의하는 방법 :
Users = { //CF
AlexS : { //row key
Address : { //supercolumn
state: "NJ",
country: "US",
phone : { //super column
zip: "00283",
number : { // supercolumn
home: "23756511",
mobile : "23756512"
}
}
}
}
}
. 해결책
4 레벨의 슈퍼 컬럼 내의 슈퍼 컬럼 중첩 된 수 있습니다.내가 아는 한, 그것은 불가능합니다.현재 삽입을 원하는 열 패밀리를 참조하여 지정해야하기 때문입니다.다음을 고려해보십시오그런 다음이 수퍼 컬럼 패밀리에 여러 개의 슈퍼 컬럼을 가질 수 있으며이 SuperColumn은 하위 컬럼으로 호출되는 여러 column= value 쌍을 갖습니다.예를 들어
list Users;
Using default limit of 100
-------------------
RowKey: AlexS
=> (super_column=Address,
(column=country, value=US, timestamp=1331614891360000)
(column=state, value=NJ, timestamp=1331614891355000))
=> (super_column=number,
(column=home, value=23756511, timestamp=1331614891406000)
(column=mobile, value=23756512, timestamp=1331614891406001))
=> (super_column=phone,
(column=zip, value=00283, timestamp=1331614891396000))
1 Row Returned.
Elapsed time: 21 msec(s).
. 다른 팁
다른 옵션은 사용자 엔티티를 JSON으로 저장하는 것입니다.그런 다음 역방향 조회를 수행 해야하는 경우 자신만의 색인을 작성하기 만하면됩니다.이 경우 키가 "alexs"인 경우 주소 데이터의 JSON 표현 (또는 사용하려는 직렬화)이 포함 된 "주소"열이 있습니다.
그런 다음 전화 번호로 조회하려는 경우 Key= 전화 번호가있는 가정용 인덱스가 있으면 각 사용자 ID의 열이 있습니다.
이것은 Cassandra와 꽤 일반적인 접근 방식입니다.
제휴하지 않습니다 StackOverflow