programing

Azure Cosmos DB가 멀티 모델이라는 것은 어떤 의미입니까?

fastcode 2023. 4. 20. 22:58
반응형

Azure Cosmos DB가 멀티 모델이라는 것은 어떤 의미입니까?

새로운 Azure cosmos 데이터베이스를 보면 멀티모델의 성격이 좀 헷갈립니다.구체적으로 어떤 의미입니까?

a) 동일한 기본 데이터베이스/스토어를 동시에 여러 방법으로 쿼리할 수 있으므로 동일한 컬렉션에 대해 gremlin 그래프 쿼리와 mongodb api를 모두 사용할 수 있습니다.

  • 또는 -

b) Cosmos DB를 프로비저닝할 때 다른 모델(그래프, 키 값, 열, 문서)을 선택할 수 있다는 의미이며, 그렇게 하면 데이터가 저장된다는 의미입니까?

팜플렛에서는 a)처럼 들리지만 Azure 대시보드를 사용하여 cosmos 인스턴스를 작성하면 모델 유형을 선택해야 하기 때문에 b)처럼 보입니다.

또한 문헌에서는 기둥형 데이터를 참조하고 있지만 작성 시 옵션을 찾을 수 없습니다.

Cosmos DB는 Document DB의 발전된 단일 NoSQL 데이터 엔진입니다.컨테이너("데이터베이스 인스턴스")를 생성할 때 언더링 데이터 저장소와의 상호 작용 방식 및 해당 저장소에 데이터를 유지하는 방법을 최적화하는 사용 사례에 가장 적합한 API를 선택합니다.

따라서 선택한 API에 따라 원하는 모델(그래프, 열, 키 값 또는 문서)을 기본 저장소에 투영합니다.

컨테이너에 대해 사용할 수 있는 API는 1개뿐이며 데이터의 저장 및 검색 방법 때문에 여러 개 사용할 수 없습니다.API는 스토리지 모델(그래프, 키 값, 열 등)을 지시하지만, 모두 후드 아래의 동일한 기술에 매핑됩니다.

아래의 @Jese Carter의 코멘트 덕분에 그래프와 문서를 혼재시킬 수 있습니다.SQL API

문서에서:

멀티모델, 멀티API 지원

Azure Cosmos DB는 기본적으로 문서, 키 값, 그래프 및 열 패밀리를 포함한 여러 데이터 모델을 지원합니다.Cosmos DB 데이터베이스 엔진의 핵심 콘텐츠 모델은 ARS(atom-record-sequence)를 기반으로 합니다.원자는 끈, 불, 숫자와 같은 원시적인 형태의 작은 집합으로 구성되어 있다.레코드는 이러한 유형으로 구성된 구조체입니다.시퀀스는 원자, 레코드 또는 시퀀스로 구성된 배열입니다.데이터베이스 엔진은 다양한 데이터 모델을 효율적으로 변환하고 ARS 기반 데이터 모델로 투영할 수 있습니다.Cosmos DB의 핵심 데이터 모델은 동적 유형의 프로그래밍 언어에서 기본적으로 액세스할 수 있으며 JSON으로 그대로 노출될 수 있습니다.

또한 이 서비스는 데이터 액세스 및 쿼리를 위해 널리 사용되는 데이터베이스 API를 지원합니다.Cosmos DB의 데이터베이스 엔진은 현재 문서를 지원합니다.DB SQL, MongoDB, Azure 테이블(미리보기) 및 Gremlin(미리보기)이 있습니다.널리 사용되는 OSS API를 사용하여 애플리케이션을 계속 구축할 수 있으며, 글로벌하게 분산된 데이터베이스 서비스의 이점을 모두 누릴 수 있습니다.

Cosmos DB는 자체 Atom-Record-Sequence 스토리지 엔진과 인덱스를 갖춘 지리적으로 분산된 데이터베이스입니다.그 외에도 SQL API를 사용하는 SQL 유사 스토어에서 Mongo, Cassandra, Gremlin, Azure Table 스토리지 구현까지 다양한 종류의 스토어를 구현할 수 있습니다.

각 스토어 타입은, 각각 독자적인 데이터 타입(예를 들면, 숫자, 날짜등을 부호화하는 방법)을 가지고 있어, 독자적인 방법으로 스토리지 레이어와 인덱스 레이어에 부호화되어 있습니다.시간이 지남에 따라 이러한 데이터 유형의 대부분은 SQL API에서 기본적으로 지원될 것으로 예상됩니다.그러나 현재 각 데이터베이스 유형은 고유한 인코딩 규칙을 사용합니다.Cosmos DB(조직 단위이며 사용자가 여러 계정을 가질 수 있음)에 계정을 만들 때 계정에 Database의 "유형"이 지정됩니다.Table API 계정이나 Mongo 계정, 또는 당신이 가지고 있는 것을 가질 수 있습니다.

경우에 따라서는 API Y를 사용하여 Data Type X 계정에 액세스할 수 있습니다. 예를 들어 SQL API를 사용하여 Table API 계정의 테이블과 대화할 수 있습니다.하지만 그래프 밖에서는 좋은 생각이 아닙니다.현재 각 API에 대한 정보를 특별한 형식으로 인코딩하고 있으며 서로 다른 데이터 유형은 서로 형식을 사용하지 않습니다.따라서 SQL API를 사용하여 Table API에 쓸 경우 최종 결과는 대부분 손상된 데이터가 될 수 있습니다.

예외는 그래프입니다.그래프는 모든 데이터베이스 유형에서 합리적으로 잘 동작하도록 하기 위해 노력하고 있습니다.앞으로 이에 대해 더 자세히 설명하겠습니다.

따라서 멀티 API 액세스를 가지고 놀고 싶다면 특정 계정에 대해 "네이티브" API를 사용하지 않을 때 "읽기 전용" 모드로만 하는 것이 좋습니다.즉, 반드시 Table API에서 읽어낸 SQL API를 가지고 놀아야 합니다.단, SQL API 클라이언트를 고소하는 Table API 어카운트에는 쓰지 말아 주세요.

받아들여진 답변은 몇 가지 점에서 누락된다.

Cosmos DB는 NoSQL 데이터베이스이지만, 고도로 분산되어 있으며 스토리지 포맷은 Atom-Record-Sequence입니다.

그게 왜 중요하죠?JSON을 입력 및 출력 형식으로 받아들이기 때문에 Cosmos가 데이터를 JSON으로 저장하는 것이 아니라 실제로 어떤 형식일 수 있습니다.이를 통해 Cosmos의 다중 모델성에 대해 추론할 수 있습니다. 특정 모델에 따라 쿼리를 실행하면 데이터의 투영 또는 뷰가 표시될 수 있습니다.

@JeseCarter는 Document API와 Graph API를 서로 바꿔 사용할 수 있다고 이미 설명했습니다.지난 주에 Table API가 공개되었고 아마 이 API도 크게 다르지 않을 것입니다.

Spectological의 직원들은 Cross-API Cosmos 사용에 대한 멋진 블로그 포스트를 썼고, 또한 멀티모델성은 내부 모델보다 더 화장품이며, 유일한 진짜 예외는 Mongo인 것 같다고 지적했다.흥미로운 부분은 https://blog.spectologic.com/2017/06/30/digging-into-cosmosdb-storage/의 '포털 익스피리언스 전환' 장에서 설명합니다.

엔 될 수도 요.GlobalDocumentDb ★★MongoDb

저도 API 사용 감사 관점에서 더 많은 것을 이해하고 싶었고, 이 답변들을 통해 더 많은 읽기를 배웠습니다.

실험해보니 원래 답보다 일이 더 진전된 것 같아 현대적 견해가 더해지면...

SQL API를 선택하여 Cosmos DB 계정을 만들고 포털에서 문서를 만든 후 MongoDB API를 통해 문서를 불러올 수 있었습니다.

원래의 답변은 MongoDB가 홀수 원아웃이며 다른 API로 작성된 데이터와 상호 작용할 수 없음을 시사했습니다.

완전한 테스트를 실시하면, Yaron(https://stackoverflow.com/a/48286729/141022))이 시사한 데이터 타입의 차이로 인해 문서가 파손될지 여부, 또 스토리지의 차이로 인해 퍼포먼스가 저하될지는 아직 알 수 있습니다.

제 목적상 하나의 API로 충분한지 관심이 있는데, 이 경우 한 API로 작성된 데이터를 다른 API로 가져올 수 없기 때문에 자세한 테스트는 하지 않았습니다.

특히 ARM 템플릿은 Global Document를 사용하지 않고 전개됩니다.단, ARM 템플릿을 포털에서 내보내면 GlobalDocument가 됩니다.DB(데이터베이스)를 선택합니다.

CosmosDB의 구현 세부사항에 관심이 있는 경우 이 백서를 읽어보실 수 있습니다(구현이 변경되지 않았다고 가정).http://www.vldb.org/pvldb/vol8/p1668-shukla.pdf

TLDR:

  • 맨 아래 코스모스DB는 데이터를 ARS에 저장하고 JSON 형식으로 공개합니다.
  • 데이터베이스 엔진은 기본적으로 모든 문서의 ALL 필드를 색인화하므로 매우 유연한 조회를 사용할 수 있습니다.
  • 데이터베이스 엔진은 JavaScript와 유사한 중간 언어를 실행하여 데이터베이스가 제공하는 낮은 수준의 스토리지와 API를 브리징합니다.
  • 이 브리징을 통해 데이터베이스 API를 추가하여 다양한 쿼리 메커니즘(예: SQL, 문서, 컬럼)을 지원할 수 있습니다.

Multimodel은 데이터를 다양한 방법으로 저장할 수 있음을 의미합니다.현재 코스모스DB는 4가지 유형의 데이터를 저장하며 API와 통합하고 이러한 데이터베이스 스토리지 유형에 대한 사용자 환경을 구축할 수 있습니다.4가지 유형은 Document DB 또는 Mongo DB, Graph Database, Key Value Paire, Wide Column 또는 Column Family입니다.

언급URL : https://stackoverflow.com/questions/44304947/what-does-it-mean-that-azure-cosmos-db-is-multi-model

반응형