이 글은 릴리즈 블로그에서 강조된 MongoDB MQL 언어 기능을 간략하게 검토한 글입니다: MongoDB 4.4: 사용자 중심 엔지니어링. 준비 완료. MongoDB 4.4 릴리스에는 MQL 언어에 대한 여러 가지 기능이 추가되었습니다. 카우치베이스 6.5 출시 쿼리 서비스 및 분석 서비스 모두에서 N1QL의 상당수 기능을 올해 초에 발표했습니다. 자세히 살펴보겠습니다.
| MongoDB 4.4 | Couchbase 6.5 | |
|---|---|---|
| 출시 | GA: 2020년 7월 | GA: 2020년 1월 |
| 새로운 기능은 무엇인가요? | https://www.mongodb.com/collateral/mongodb-4.4-guide | https://docs.couchbase.com/server/current/introduction/whats-new.html |
| 유니온 세트 작업 |
데이터를 단일 데이터로 변환하는 집계 파이프라인 단계인 $UnionWith를 도입합니다. 결과 집합을 반환합니다. SQL에서 모든 집합을 통합하는 작업과 거의 동일합니다. https://docs.mongodb.com/master/reference/operator/aggregation/unionWith/#pipe._S_unionWith |
초기 릴리스부터 모든 SQL 집합 연산을 지원합니다: 유니온, 유니온 모두, 제외하고, 모두 제외하고, 교차, 모두 교차. ALL 수정자는 중복된 문서로 이동합니다. ALL 없이 작업을 사용하면 다음에서 필요한 정렬 단계를 피할 수 있습니다. MQL 집계 파이프라인에서 사용할 수 있습니다. 이러한 집합 연산을 사용할 수 있는 곳은 SELECT 쿼리가 사용됩니다(하위 쿼리, 파생 테이블 등). https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/union.html https://blog.jooq.org/2015/10/06/you-probably-dont-use-sql-intersect-or-except-often-enough/ |
| 사용자 지정 집계 표현식 |
집계 내에서 자바스크립트 스니펫을 허용하는 $ 함수 도입 파이프라인을 사용하여 처리를 사용자 정의할 수 있습니다. 사용자 정의 집계를 만들 수 있습니다. $accumulate, $function, $merge 및 $group을 사용합니다. 이 접근 방식은 장황합니다. 를 사용하며 모든 쿼리에 대해 다시 작성해야 합니다. SQL에서는 사용자 정의 집계가 생성되면 가 생성되면 다른 집계와 마찬가지로 재사용할 수 있습니다. 기타 개선 사항으로는 간단한 스칼라 함수가 있습니다. https://docs.mongodb.com/master/release-notes/4.4/#custom-aggregation-expressions |
어디서나 사용 가능한 SQL 함수 및 JavaScript 함수 프리뷰 릴리즈 표현식은 N1QL에서 허용됩니다. 이러한 표현식은 복잡한 쿼리의 일부가 될 수 있으며 다음과 같습니다. 다음 주요 릴리스에서 GA가 될 것으로 예상됩니다. 몽고DB에는 여전히 창 기능이 없는데, 이는 Couchbase 6.5에서 릴리스된 기능입니다. 개발자의 생산성을 크게 향상시킵니다. 하지만 카우치베이스는 맵 축소 보기를 통해 자바스크립트 기반 집계를 지원합니다. N1QL을 통해 액세스할 수 없습니다. 카우치베이스 이벤트 함수도 자바스크립트로 작성되어 있으며 최신 애플리케이션을 위한 확장 가능한 인프라를 제공합니다. |
| 검색 |
MongoDB Atlas에서만 사용할 수 있는 Lucene 기반의 전체 텍스트 $search를 소개합니다. MongoDB 자체는 검색 기능이 제한되어 있으며 Lucene 기반이 아닙니다. $search는 집계 파이프라인의 첫 번째 단계로만 사용할 수 있으며 는 업데이트 또는 삭제에 사용할 수 없습니다. |
Couchbase 6.5에는 SEARCH() 함수와 관련 메타데이터 함수가 도입되었습니다. 심층 통합을 통해 간단한 문자열 검색부터 전체 텍스트 검색까지 지원합니다. 를 N1QL 최적화 도구에 추가합니다. |
| 거래 |
컬렉션과 인덱스를 생성하는 기능을 소개합니다. 비샤딩 트랜잭션. 트랜잭션 내에서 DDL을 사용하는 경우는 아직 드뭅니다. |
Java SDK용 분산 트랜잭션이 출시되어 애플리케이션을 사용할 수 있게 되었습니다. 를 사용하여 여러 문서에 대한 작업을 수행할 수 있습니다. 분산 트랜잭션은 N1QL 문에 대해 지원되지 않습니다. |
리소스: