Use MongoDB API with Oracle Autonomous Database on Dedicated Exadata Infrastructure
MongoDB용 Oracle Database API는 MongoDB 전송 프로토콜을 Oracle Database에서 실행되는 SQL 문으로 변환합니다. MongoDB 기술 세트를 보유한 개발자는 MongoDB 프로토콜을 이해하는 드라이버 및 도구를 사용하는 Oracle Database용 JSON 문서 저장소 애플리케이션을 작성할 수 있습니다. 이 API에 대한 자세한 개요는 Oracle Database API for MongoDB의 Oracle Database API for MongoDB 개요를 참조하십시오.
MongoDB API 사용
OCI 콘솔에서 Autonomous Database에 대해 MongoDB API를 사용으로 설정하거나 ORDS(Oracle REST Data Services)를 사용하여 수동으로 사용으로 설정할 수 있습니다.
MongoDB API를 Autonomous Database와 함께 사용하려면 고객 관리 ORDS(Oracle REST Data Services)를 별도로 설치 및 구성해야 하며, ORDS 버전은 22.3 이상이어야 합니다. 이 API의 아키텍처 개념은 Oracle REST Data Services Installation and Configuration Guide의 Oracle API for MongoDB Support를 참조하십시오.
- Autonomous Database 세부정보 페이지에서 도구 구성 탭을 선택합니다.
- 도구 구성 편집을 누릅니다.
- MongoDB API 행에서 도구 사용 열에서 선택하여 사용을 표시합니다.
- 적용을 누릅니다.
고급 옵션 표시를 선택하고 도구 탭을 선택하여 인스턴스를 프로비전닝하거나 복제할 때 MongoDB API를 사용으로 설정할 수도 있습니다.
-
ords install adb
명령을 사용하여 ORDS를 설치하고 구성합니다.자세한 내용은 Oracle REST Data Services Installation and Configuration Guide의 Installing and Configuring Customer Managed ORDS on Autonomous Database을 참조하십시오.
- ORDS 사용 유저를 생성합니다.
- MongoDB 셸을 사용하여 ORDS에 연결합니다.
위 단계의 데모는 Oracle REST Data Services 설치 및 구성 설명서의 시작하기를 참조하십시오.
MongoDB 애플리케이션 연결
MongoDB API가 사용으로 설정된 후 MongoDB 사용자를 생성하고 연결 문자열을 사용하여 Autonomous Database에 연결할 수 있습니다.
MongoDB API 연결 문자열을 사용하면 명령행 유틸리티인 MongoDB 셸을 사용하여 데이터를 연결하고 쿼리할 수 있습니다.
- Autonomous Database 세부정보 페이지에서 도구 구성 탭을 선택합니다.
- MongoDB API 행의 액세스 URL에서 복사를 누릅니다.
Exadata Cloud@Customer의 Autonomous Database에서 MongoDB API를 사용하는 경우 네트워크/DNS 팀에서 MongoDB 접속 문자열 호스트 이름이 클러스터의 SCAN으로 확인되는지 확인해야 합니다. 그렇지 않으면 MongoDB 클라이언트가 데이터베이스에 접속할 수 없습니다. 와일드카드 DNS 레코드를 사용하여 클러스터 내의 모든 Autonomous Database에 대한 연결을 허용하거나 특정 Autonomous Database를 허용할 수 있습니다.
MongoDB 접속 테스트
MongoDB에 대한 테스트 Autonomous Database 사용자 생성
테스트 목적으로 테스트 유저 또는 유사하게 인증된 유저를 생성할 수 있습니다.
- Autonomous Database용 OCI 콘솔을 엽니다.
- Database Actions를 누릅니다.
- Database Actions Launchpad에서 Administration > Database Users를 누릅니다.
- [데이터베이스 사용자] 페이지에서 + 사용자 생성을 누릅니다.
- 테스트 사용자에 대한 사용자 이름 및 비밀번호를 입력합니다. 웹 액세스를 누르고 테이블스페이스 DATA의 할당량을 설정합니다.
- Granted Roles 탭을 누릅니다.
- 기본 역할 외에도 사용자에 대한
SODA_APP
역할을 선택하고 추가합니다. - Create User를 누릅니다.
명령행을 사용하여 연결 테스트
- 테스트 유저로 로그인합니다. 지침은 이전 예의 단계를 따르십시오.
$ mongosh --tls --tlsAllowInvalidCertificates 'mongodb://TESTUSER:<PASSWORD>@<database URL>. <OCI region>.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&loadBalanced=false' Current Mongosh Log ID: 614c9e2a01e3575c8c0b2ec7 Connecting to: mongodb://TESTUSER:<PASSWORD>@<database URL>.<OCIregion>.oraclecloudapps.com:27017/admin? authMechanism=PLAIN&authSource=$external&tls=true&loadBalanced=false Using MongoDB: 3.6.2 Using Mongosh: 1.0.7 For mongosh info see: https://docs.mongodb.com/mongodb-shell/admin > show dbs testuser 0 B >
주:
URI 퍼센트 인코딩을 사용하여 접속 문자열 URI의 예약된 문자(특히 사용자 이름과 비밀번호의 문자)를 바꿉니다. 다음은 예약된 문자 및 백분율 인코딩입니다.
!
#
$
%
&
'
(
)
*
+
%21
%23
%24
%25
%26
%27
%28
%29
%2A
%2B
,
/
:
;
=
?
@
[
]
%2C
%2F
%3A
%3B
%3D
%3F
%40
%5B
%5D
예를 들어, 사용자 이름이
RUTH
이고 비밀번호가@least1/2#?
인 경우<server>
서버에 대한 MongoDB 접속 문자열은 다음과 같을 수 있습니다.'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'
사용하는 도구 또는 드라이버에 따라 사용자 이름과 암호를 URI 연결 문자열의 일부로 제공하는 대신 별도의 매개변수로 제공할 수 있습니다. 이 경우 포함된 예약된 문자를 인코딩할 필요가 없습니다.
참고 항목:
- 모음을 생성하고 모음에 문서를 삽입합니다.
testuser> show collections testuser> db.createCollection( 'fruit' ) { ok: 1 } testuser> show collections fruit testuser> db.fruit.insertOne( {name:"orange", count:42} ) { acknowledged: true, insertedId: ObjectId("614ca31fdab254f63e4c6b47") } testuser> db.fruit.insertOne( {name:"apple", count:12, color: "red"} ) { acknowledged: true, insertedId: ObjectId("614ca340dab254f63e4c6b48") } testuser> db.fruit.insertOne( {name:"pear", count:5} ) { acknowledged: true, insertedId: ObjectId("614ca351dab254f63e4c6b49") } testuser>
- Database Actions와 같은 SQL 클라이언트를 사용하여 컬렉션을 query합니다.
SELECT f.json_document.name, f.json_document.count, f.json_document.color FROM fruit f;
Node.js 응용 프로그램을 사용하여 연결 테스트
-
Node.js를 다운로드합니다. 환경에 대해 Node.js를 이미 다운로드하거나 설치한 경우 이 단계를 건너뛸 수 있습니다.
$ wget https://nodejs.org/dist/latest-v14.x/node-v14.17.5-linux-x64.tar.xz
-
Node,js 아카이브의 내용을 추출합니다. 환경에 대해 Node.js를 이미 다운로드하거나 설치한 경우 이 단계를 건너뛸 수 있습니다.
$ tar -xf node-v14.17.5-linux-x64.tar.xz
-
PATH
환경 변수를 구성합니다. 환경에 대해 Node.js를 이미 다운로드하거나 설치한 경우 이 단계를 건너뛸 수 있습니다.$ export PATH="`pwd`"/node-v14.17.5-linux-x64/bin:$PATH
-
Javascript 예제로 연결을 테스트합니다.
-
새 디렉토리 생성.
$ mkdir autonomous_mongodb $ cd autonomous_mongodb $ npm init –y
-
mongodb 종속성을 설치합니다.
$ npm install mongodb
-
connect.js
라는 JavaScript 응용 프로그램을 생성합니다.const { MongoClient } = require("mongodb"); const uri = "mongodb://TESTUSER:<PASSWORD>@<Database URI>.<OCI region>.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&loadBalanced=false"; const client = new MongoClient(uri); async function run() { try { await client.connect(); const database = client.db('admin'); const movies = database.collection('movies'); // Insert a movie const doc = { title: 'Back to the Future', year: 1985, genres: ['Adventure', 'Comedy', 'Sci-Fi'] } const result = await movies.insertOne(doc); // Query for a movie that has the title 'Back to the Future' :) const query = { title: 'Back to the Future' }; const movie = await movies.findOne(query); console.log(movie); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
주:
URI 퍼센트 인코딩을 사용하여 접속 문자열 URI의 예약된 문자(특히 사용자 이름과 비밀번호의 문자)를 바꿉니다. 다음은 예약된 문자 및 백분율 인코딩입니다.
!
#
$
%
&
'
(
)
*
+
%21
%23
%24
%25
%26
%27
%28
%29
%2A
%2B
,
/
:
;
=
?
@
[
]
%2C
%2F
%3A
%3B
%3D
%3F
%40
%5B
%5D
예를 들어, 사용자 이름이
RUTH
이고 비밀번호가@least1/2#?
인 경우<server>
서버에 대한 MongoDB 접속 문자열은 다음과 같을 수 있습니다.'mongodb://RUTH:%40least1%2F2%23%3F@<server>:27017/ruth/ ...'
사용하는 도구 또는 드라이버에 따라 사용자 이름과 암호를 URI 연결 문자열의 일부로 제공하는 대신 별도의 매개변수로 제공할 수 있습니다. 이 경우 포함된 예약된 문자를 인코딩할 필요가 없습니다.
참고 항목:
-
예제를 실행합니다. 출력은 다음과 유사해야 합니다.
$ node connect { _id: new ObjectId("611e3266005202371acf27c1"), title: 'Back to the Future', year: 1985, genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ] }
-
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
오라클 고객지원센터 액세스
오라클 고객의 오라클 지원 서비스 접근 및 이용은 해당 서비스의 오라클 주문서에 명시된 조항들에 따릅니다.