RDBMS에서 전환 간소화
Couchbase Server 4.5.1 릴리즈는 엔터프라이즈 애플리케이션의 요구 사항을 해결하기 위해 N1QL에서 다양한 기능, 사용성 및 성능 개선을 제공합니다. 이러한 개선 사항은 고객이 중요하게 여기는 여러 문제를 해결하고 RDBMS에서 전환.
Couchbase Server 4.5.1을 사용해 보세요. 파트너 및 고객의 현장 테스트를 거쳐 프로덕션에 사용할 준비가 되었습니다. 새로운 기능 및 개선 사항의 전체 목록은 새로운 기능을 참조하세요.
놓치지 마세요 part1 블로그의
새로운 쿼리 설정 예쁜
예쁘다!! 예쁘다!! 예쁜!! 예, 예쁜 는 쿼리 결과의 예쁜 서식을 사용하거나 사용하지 않도록 설정할 수 있는 N1QL의 매우 인상적인 새로운 쿼리 설정입니다. 이게 뭐가 그리 대단하냐고 물어보실 수도 있습니다. 그리고 왜 누구나 JSON 출력의 아름다운 서식을 비활성화하고 싶어할까요?
옛 속담처럼 공짜 점심은 없습니다. 쿼리 결과를 예쁘게 서식 지정하려면 자체 비용이 발생합니다:
- 먼저, 간단한 사실 하나는 형식이 잘 갖춰진 JSON 문서에서 공백(탭, 공백, 줄 바꿈) 문자가 문서 크기의 거의 3분의 1을 차지한다는 것입니다.
- 따라서 단순히 미화를 줄이면 네트워크를 통해 흐르는 모든 원시 바이트를 절약할 수 있습니다.
- 또한 N1QL 서비스의 메모리 및 처리 리소스를 절약할 수 있다는 점도 고려하세요.
- 전체적으로 비용 절감 효과는 상당히 큽니다.
- 예쁜 출력 형식은 사람이 읽을 수 있는 시나리오에 적합합니다. 사람이 관리할 수 있는 결과 크기.
- 그러나 실제 애플리케이션과 컴퓨터 프로그램은 사람보다 훨씬 더 자주 쿼리를 실행하고 훨씬 더 큰 쿼리 결과를 처리합니다.
- 이 경우 중요한 것은 성능 그리고 효율성를 사용해야 합니다. 사실 이러한 서식은 JSON 구문 분석기와 애플리케이션에 오버헤드가 되기 때문에 일반적으로 버려집니다. 일반적으로 애플리케이션에는 각 사용자에게 적합한 데이터 형식을 지정하는 자체 프레젠테이션 계층이 있습니다.
- 예를 들어 항공편을 검색하는 여행 예약 웹사이트를 생각해 보세요. 어떤 여행 사이트도 이용 가능한 항공편을 여러 개의 JSON 문서로 덤프하지는 않을 것입니다.
새로운 쿼리 매개변수 예쁜 를 사용하여 쿼리 결과 서식 지정을 활성화/비활성화할 수 있습니다. 매개변수는 다음과 같습니다:
- 로 설정
true또는false. - 명령줄 매개변수로 CBQ 엔진에 전달됩니다.
- REST 호출과 함께 쿼리 매개변수로 전달됩니다.
기본적으로 다음과 같이 설정되어 있습니다. true. 로 설정하면 false를 사용하면 쿼리 결과에서 공백 문자가 제거됩니다. 쿼리가 큰 결과를 생성할 때 성능 이점을 크게 볼 수 있으며, 물론 문서의 공백 오버헤드 비율에 따라 달라집니다. 예를 들어 여행 샘플에서 모든 문서를 선택하는 다음 쿼리를 실행하면 거의 3배 빠른 속도 언제 pretty = false. 또한 결과 집합의 크기는 예쁜 형식의 결과의 1/3입니다.
함께 pretty = true
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
바라쿠르프라사드$ 시간 curl -v http://localhost:8093/query/service -d "pretty=true&statement=SELECT * from `travel-sample`" | tail -15 * 호스트 이름 는 NOT 발견 in DNS 캐시 % 합계 % 수신됨 % Xferd 평균 속도 시간 시간 시간 현재 Dload 업로드 합계 소비 왼쪽 속도 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* 시도 중 ::1... * 연결됨 에 localhost (::1) 포트 8093 (#0) * 서버 auth 사용 기본 와 함께 사용자 'travel-sample' > POST /쿼리/서비스 HTTP/1.1 > 권한 부여: 기본 dHJhdmVsLXNhbXBsZTpoZWxsbw== > 사용자-에이전트: curl/7.37.1 > 호스트: localhost:8093 > 수락: */* > 콘텐츠-길이: 51 > 콘텐츠-유형: 애플리케이션/x-www-양식-urlencoded > } [데이터 not 표시] * 업로드 완전히 보낸 꺼짐: 51 out 의 51 바이트 < HTTP/1.1 200 확인 < 콘텐츠-유형: 애플리케이션/json; 버전=1.6.0 < 날짜: Sat, 15 10월 2016 02:04:09 GMT < 전송-인코딩: 청크 < { [데이터 not 표시] 100 103M 0 103M 100 51 16.6M 8 0:00:06 0:00:06 --:--:-- 17.2M * 연결 로컬호스트를 호스트하는 #0은 그대로 유지됨 ], "sourceairport": "TLV", "stops": 0, "type": "경로" } } ], "status": "성공", "metrics": { "elapsedTime": "6.165034483s", "실행 시간": "6.164993497s", "resultCount": 31591, "결과 크기": 107830610 } } real 0m6.208초 사용자 0m5.704초 sys 0m0.373초 |
함께 pretty = false
총 결과 크기는 이제 36754457바이트에 불과하며 쿼리는 2.2초 만에 실행됩니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
바라쿠르프라사드$ 시간 curl -v http://localhost:8093/query/service -d "pretty=false&statement=SELECT * from `travel-sample`" | tail -5 * 호스트 이름 는 NOT 발견 in DNS 캐시 % 합계 % 수신됨 % Xferd 평균 속도 시간 시간 시간 현재 Dload 업로드 합계 소비 왼쪽 속도 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* 시도 중 ::1... * 연결됨 에 localhost (::1) 포트 8093 (#0) * 서버 auth 사용 기본 와 함께 사용자 'travel-sample' > POST /쿼리/서비스 HTTP/1.1 > 권한 부여: 기본 dHJhdmVsLXNhbXBsZTpoZWxsbw== > 사용자-에이전트: curl/7.37.1 > 호스트: localhost:8093 > 수락: */* > 콘텐츠-길이: 52 > 콘텐츠-유형: 애플리케이션/x-www-양식-urlencoded > } [데이터 not 표시] * 업로드 완전히 보낸 꺼짐: 52 out 의 52 바이트 < HTTP/1.1 200 확인 < 콘텐츠-유형: 애플리케이션/json; 버전=1.6.0 < 날짜: Sat, 15 10월 2016 02:03:29 GMT < 전송-인코딩: 청크 < { [데이터 not 표시] 100 35.1M 0 35.1M 100 52 15.9M 23 0:00:02 0:00:02 --:--:-- 15.9M "status": "성공", "metrics": {"elapsedTime": "2.148354775s","실행 시간": "2.148323137s","resultCount": 31591,"결과 크기": 36754457} } real 0m2.223초 사용자 0m1.977초 sys 0m0.141초 |
N1QL 쿼리의 동적 개체 구성에 대한 개선 사항
N1QL은 이미 쿼리에서 동적으로 JSON 객체를 생성하는 기능을 지원합니다. 이는 쿼리 투영 목록에서 특별히 구성된 결과 개체를 생성하는 데 큰 도움이 됩니다. Couchbase Server 4.5.1은 표현식의 기능을 확장하고 N1QL 쿼리에서 동적 객체 생성 및 객체 처리를 강화합니다.
- Couchbase Server 4.5.1에서 N1QL은 개체 필드의 이름과 값을 모두 임의의 표현식으로 사용할 수 있도록 허용합니다. 이전 버전에서는 필드 이름이 정적 문자열이어야 했습니다. 이름이 문자열로 평가되지 않으면 개체 구성의 결과는 NULL입니다. 예를 들어
12345678910선택 { UPPER(콜사인) || "_key" : 콜사인 || ":" || 국가 || ":" || 이름 } AS myobjFROM `여행-샘플`어디 유형 = '항공사' limit 1;[{"myobj": {"MILE-AIR_key": "마일-에어:미국:40마일-에어"}}] - 4.5.1에서는 N1QL 쿼리에서 개체를 구성할 때 이름-값 쌍의 필드 이름은 선택 사항으로 지정할 수 있습니다. 예를 들어, 다음 쿼리는 각 값에 "type" 및 "name"이라는 이름을 암시적으로 할당합니다:
123456789선택 {유형, 이름} AS myobj FROM `여행-샘플` LIMIT 1;[{"myobj": {"type": "공항""name": "airport_123"}}]
새로운 배열 함수 ARRAY_INTERSECT()
ARRAY_INTERSECT() 함수는 두 개 이상의 배열을 매개변수로 받아 입력 배열의 교집합, 즉 모든 입력 배열에 존재하는 값을 포함하는 배열을 결과로 반환합니다. 공통 배열 요소가 없는 경우 빈 배열을 반환합니다. 자세한 내용은 문서를 참조하세요. 예를 들어 다음 쿼리는 다음과 함께 제공된 여행 샘플 버킷에서 Brian 또는 Lilian이 좋아하는 호텔을 찾습니다. 카우치베이스 서버 4.5.1.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
선택 메타().id, 배열_교차(공개_좋아요, ["브라이언 킬백", "릴리안 맥러플린"]) AS 좋아요 FROM `여행-샘플` 어디 유형 = 'hotel' 주문 BY 좋아요 DESC LIMIT 4; [ { "id": "hotel_10025", "좋아요": [ "릴리안 맥러플린", "브라이언 킬백" ] }, { "id": "hotel_10026", "좋아요": [] }, { "id": "hotel_10064", "좋아요": [] }, { "id": "hotel_10063", "좋아요": [] } ] |
다운로드 카우치베이스 서버 4.5.1 를 클릭하고 사용해 보세요. 질문/의견이 있거나 얼마나 멋진지 알려주세요 ;-)
건배!!