카우치베이스 서버 4가 출시되었습니다!
Couchbase .NET SDK를 사용하면 쉽게 사용할 수 있습니다!
새로운 기능은 무엇인가요?
- N1QL - 이제 Couchbase에서 JSON 문서에 대해 풍부한 쿼리를 수행할 수 있습니다.
- 필터링된 XDCR - 모든 데이터를 원격 데이터 센터로 복사할 필요는 없습니다.
- LDAP 보안 - Couchbase 서버 및 로그 이벤트에 대한 보다 간편한 관리 액세스.
- 제가 N1QL에 대해 언급했나요?
- 그리고 다른 많은 기능들!
다운로드하여 설치합니다: 카우치베이스 서버 4.0
N1QL - 리치 쿼리
Couchbase 4.0의 가장 큰 기능 중 하나는 N1QL을 사용하여 문서를 쿼리할 수 있는 옵션입니다. 이 언어는 SQL을 기반으로 하며 비정규화된 JSON 문서로 작업하는 데 도움이 되는 몇 가지 기능을 추가합니다.
|
1 2 3 |
SELECT * FROM bucket WHERE attribute1 = 'HELLO' AND attribute2 LIKE '%N1QL%' LIMIT 2 |
위의 N1QL 쿼리는 SQL과 똑같이 생겼습니다. 유일한 차이점은 N1QL에서는 테이블이 아닌 버킷에서 선택한다는 것이지만, 이것은 구문이 아니라 구현입니다. N1QL 쿼리를 작성하는 것은 보통 일반적인 SQL 쿼리를 작성하는 것과 같습니다.
N1QL은 SQL 그 이상입니다.
SQL은 잘 정의된 스키마와 각 열에 대해 잘 정의된 데이터 유형을 가진 구조화된 데이터를 쿼리하기 위해 만들어졌습니다. 반면에 N1QL은 유연한 스키마가 있는 JSON 데이터를 쿼리하기 위한 것이므로, 이 유연한 데이터 모델을 쿼리하는 데 도움이 되는 몇 가지 추가 옵션이 N1QL에 있습니다.
|
1 2 3 4 5 6 |
SELECT value1, value2, {'yes_this_is_valid': true} FROM bucket WHERE attribute1 = 'HELLO' AND attribute2 LIKE '%N!QL%' AND attribute3 IS NOT MISSING AND ANY item IN list_of.values SATISFIES item.count >= 5 END |
여전히 SQL처럼 보이지만, 이제 JSON 데이터로 작업하는 데 도움이 되는 몇 가지 연산자를 추가했습니다.
N1QL과 카우치베이스 서버에 대해 자세히 알고 싶으신가요?
카우치베이스 .NET SDK 및 N1QL
N1QL은 .NET SDK에서 최고 수준의 지원을 제공하며 LINQ와 함께 N1QL을 사용할 수 있는 옵션도 있습니다. .NET SDK에서 N1QL을 사용하는 몇 가지 다양한 방법을 살펴보겠습니다.
|
1 2 3 4 5 6 7 8 9 |
string sql = "SELECT COUNT(*) FROM default WHERE type=$param1"; query = new QueryRequest(sql) .AddNamedParameter("param1", "..."); var result = ClusterHelper .GetBucket("travel-sample") .Query(query); return result.Rows; |
위의 스니펫은 쿼리를 전달하고 버킷에서 쿼리 호출을 통해 실행하는 원시 N1QL API를 사용하는 방법을 보여줍니다.
|
1 2 3 4 5 |
// Query Syntax var result = from myItem in ClusterHelper.GetBucket("bucket").Queryable() where myItem.Attribute1 == "...." select new { myValue = myItem.Attribute1} |
하지만 LINQ와 함께 쿼리 구문을 사용할 수도 있습니다. LINQ(언어 통합 쿼리)를 사용할 때 .NET은 리플렉션을 사용하여 쿼리 문자열(이 경우 N1QL 쿼리 문자열)을 작성합니다. 손으로 작성한 쿼리보다 LINQ를 사용할 때의 주요 이점 중 하나는 유형 안전, 코드 완성 및 컴파일 시간 확인입니다. 하지만 유형 안전성을 확보하려면 LINQ에서 쿼리하는 문서(인코드 스키마처럼 생각할 수 있음)와 반환되는 결과를 모두 정의하는 클래스가 필요합니다. 이 클래스는 동일한 클래스일 수도 있지만 쿼리에 따라 두 개의 다른 클래스가 될 수도 있습니다.
이 경우 코드 완성 및 N1QL 쿼리 작성에 "MyClass"가 사용되며 익명 유형이 결과를 저장하는 데 사용됩니다.
|
1 2 3 4 5 6 |
// Lambda Syntax ClusterHelper .GetBucket("bucket") .Queryable() .Where(item => myItem.Attribute1 == "....") .Select(item => new { myValue = myItem.Attribute1 }; |
물론 람다 구문도 옵션입니다.
자체 프로젝트에서 N1QL 및 .NET SDK 사용
모두 오픈소스로 제공되므로 언제든지 GitHub에서 소스 코드를 가져올 수 있습니다:
저를 비롯한 대부분의 다른 .NET 개발자가 Nuget 패키지를 선호한다면 여기에서 찾을 수 있습니다:
카우치베이스 서버 4 및 .NET 시작하기
Try-cb-dotnet은 .NET에서 N1QL을 배우고 익숙해지는 데 유용한 리소스로 강조하고 싶은 새로운 샘플 중 하나입니다. try-cb-dotnet
Try-cb-dotnet은 여러 개의 브랜치로 나뉘며, 각 브랜치는 튜토리얼의 한 단계를 나타내므로 .net에서 N1QL을 사용하는 방법을 더 쉽게 배울 수 있습니다.