나는 couchbase 디자인에 이러한 문제가 있습니다. Query for view는 40000 개의 레코드를 반환합니다. 나는 그 (것)들에 추가 여과기를 추가하고 "최고 100의 순서"를 얻을 필요가있다.Couchbase 추가 필터
내 응용 프로그램 코드에서 이러한 필터링/정렬을 만들었습니다. 이는 Couchbase에서 40000 개의 레코드를 가져와야한다는 것을 의미합니다 (시간이 많이 걸립니다). couchbase 노드에 필터/정렬을 실행하는 방법이 있습니까 (4000 개의 레코드를 모두 appserver로 가져 오지 않고)?
내 데이터는 ... 관광 투어
{
"OT": "tour",
"dd": 20140720,
"city": 1206,
"hotel": 9656,
"stars": 2,
"resort": 23415,
"country": 34,
"price": 24139,
"priceType": 1,
"tickets": "QQYY",
"nights": 5,
"food": 4,
"oper": 18,
"adult": 1,
"ch": 0,
"ch1": 0,
"ch2": 0,
"ch3": 0,
"avail": 1,
"stop": "Q"
}
을 즉 내가 4 ~ 5 성급 호텔 20140622과 20140710 사이의 칠면조 런던에서 상위 10 저렴한 투어를 선택해야
내보기 모양이다 같은 :
function (doc, meta) {
if(meta.type==='json' && doc.OT==='tour'){
emit(["A",doc.country,doc.city,doc.adult,doc.ch,doc.priceType,doc.dd,doc.price]);
emit(["R" + doc.resort,doc.country,doc.city,doc.adult,doc.ch,doc.priceType,doc.dd,doc.price]);
}
}
RESORT + 나라 + DEPARTURE_CITY + ADULT_COUNT + CHILD_COUNT + 가격 _ + 출발일 날 3000000+에서 (출발일 범위) ~ 40000 개 레코드를 선택할 수 있지만, 때로는 (사용자 입력에 따라) 별 (별표 IN (4,5) 등)별로 필터링해야합니다. 또한 정렬입니다 볼 "날짜 별, 가격은"이 적용 is'nt 예를 들어 내가 다른 측면에서
20140101 110$ <- top but not cheapest
20140101 120$
20140102 100$ <- cheapest but not top
20140102 105$
을 가지고 때때로 나는 또한 DepartureDate A와 BETWEEN X와 Y와 가격 간의 N 저렴한 투어를 가져 오기 위해 필요 Z. 이러한 모든 시나리오는 거대한 데이터 세트 (위의 그림과 같이 고위도 VIEW조차도 내 경우에는 거대한 데이터 세트를 생성 함)에서 걸러 내기 위해 추가 필터가 필요하며 이러한 처리를 위해 전체 데이터 세트를 클라이언트 (AppServer)로 가져 오지 않으려 고합니다. . 나는 Couchbase 노드에서 처리하는 것이 더 많은 CPU를 소비하게 될 것이라고 생각하지만 클러스터에 Couchbase 노드를 더 추가하는 것을 선호한다 ... 어쨌든 누군가이 필터링 작업을 수행해야하는데, 실제로 데이터를 배치 한 곳에서 수행하는 것이 훨씬 더 최적이라고 생각한다. 와 추가 네트워크 오버 헤드 밖으로 ...
질문에 현재보기의 코드를 추가합니다. – scalabilitysolved