DocumentDB SQL-개요
DocumentDB는 Azure에서 실행되는 Microsoft의 최신 NoSQL 문서 데이터베이스 플랫폼입니다. 이 자습서에서는 DocumentDB에서 지원하는 특수 버전의 SQL을 사용하여 문서를 쿼리하는 방법에 대해 모두 알아 봅니다.
NoSQL 문서 데이터베이스
DocumentDB는 Microsoft의 최신 NoSQL 문서 데이터베이스이지만 NoSQL 문서 데이터베이스라고하면 NoSQL과 문서 데이터베이스가 정확히 무엇을 의미합니까?
SQL은 관계형 데이터베이스의 전통적인 쿼리 언어 인 구조적 쿼리 언어를 의미합니다. SQL은 종종 관계형 데이터베이스와 동일합니다.
NoSQL 데이터베이스를 비 관계형 데이터베이스로 생각하는 것이 더 도움이되므로 NoSQL은 실제로 비 관계형을 의미합니다.
다음과 같은 키 값 저장소를 포함하는 다양한 유형의 NoSQL 데이터베이스가 있습니다.
- Azure 테이블 저장소
- Cassandra와 같은 열 기반 저장소
- NEO4와 같은 그래프 데이터베이스
- MongoDB 및 Azure DocumentDB와 같은 문서 데이터베이스
왜 SQL 구문인가?
처음에는 이상하게 들릴 수 있지만 NoSQL 데이터베이스 인 DocumentDB에서는 SQL을 사용하여 쿼리합니다. 위에서 언급했듯이 이것은 JSON 및 JavaScript 의미 체계를 기반으로하는 SQL의 특수 버전입니다.
SQL은 단순한 언어이지만 풍부하고 표현력이 뛰어난 매우 인기있는 언어이기도합니다. 따라서 데이터베이스에서 문서를 가져오고 싶을 때 배워야 할 쿼리를 완전히 새로운 방식으로 표현하기보다는 SQL의 일부 방언을 사용하는 것이 확실히 좋은 생각처럼 보입니다.
SQL은 관계형 데이터베이스 용으로 설계되었으며 DocumentDB는 비 관계형 문서 데이터베이스입니다. DocumentDB 팀은 실제로 문서 데이터베이스의 비 관계형 세계에 SQL 구문을 적용했으며, 이것이 바로 JSON 및 JavaScript에서 SQL을 루팅한다는 의미입니다.
언어는 여전히 익숙한 SQL로 읽지 만 의미 체계는 모두 관계형 테이블이 아닌 스키마없는 JSON 문서를 기반으로합니다. DocumentDB에서는 SQL 데이터 유형이 아닌 JavaScript 데이터 유형으로 작업합니다. SELECT, FROM, WHERE 등에 익숙하지만 숫자와 문자열로 제한되는 JavaScript 유형, 객체, 배열, Boolean 및 null은 광범위한 SQL 데이터 유형보다 훨씬 적습니다.
마찬가지로 식은 T-SQL 형식이 아닌 JavaScript 식으로 평가됩니다. 예를 들어 비정규 화 된 데이터의 세계에서 우리는 행과 열을 처리하지 않고 중첩 된 배열과 객체를 포함하는 계층 구조를 가진 스키마없는 문서를 처리합니다.
SQL은 어떻게 작동합니까?
DocumentDB 팀은 몇 가지 혁신적인 방법으로이 질문에 답했습니다. 그들 중 일부는 다음과 같이 나열됩니다-
첫째, 문서의 모든 속성을 자동으로 인덱싱하도록 기본 동작을 변경하지 않았다고 가정하면 쿼리에서 점 표기법을 사용하여 문서 내에 얼마나 깊게 중첩되어 있든 관계없이 모든 속성의 경로를 탐색 할 수 있습니다.
또한 관계형 세계에서 두 테이블간에 조인이 수행되는 방식과 매우 유사한 방식으로 중첩 된 배열 요소가 문서 내의 부모 요소와 조인되는 문서 내 조인을 수행 할 수 있습니다.
쿼리는 데이터베이스에서 문서를있는 그대로 반환하거나 원하는 문서 데이터를 최대한 많이 또는 적게 기반으로 원하는 사용자 지정 JSON 모양을 프로젝션 할 수 있습니다.
DocumentDB의 SQL은 다음을 포함한 많은 일반적인 연산자를 지원합니다.
산술 및 비트 연산
AND 및 OR 논리
같음 및 범위 비교
문자열 연결
쿼리 언어는 또한 다양한 내장 함수를 지원합니다.