本文檔主要介紹了基於MongoDB集合自動推斷建表的操作步驟。
前提條件
為了更加方便地示範操作,您需要先通過以下步驟在MongoDB中準備好測試資料。
- 說明
DLA和MongoDB所屬地區必須相同,否則無法進行本文檔的操作。由於DLA將通過VPC網路連接MongoDB資料庫,建議您建立MongoDB執行個體時,網路類型選擇VPC。同時,MongoDB支援將傳統網路切換為VPC網路。
- 說明
在DLA中建立MongoDB Schema之前,需要將IP位址區段
100.104.0.0/16
加入到MongoDB白名單列表中。 寫入測試資料。
本樣本在MongoDB執行個體的
mongo_test
資料庫中建立person
集合,集合測試資料如下所示:db.person.insert({id:1, name: "james", age: 10, create_time: new Date()}); db.person.insert({id:2, name: "bond", age: 20, create_time: new Date()}); db.person.insert({id:3, name: "lily", age: 30, create_time: new Date()}); db.person.insert({id:4, name: "lucy", age: 20, create_time: new Date()});
建立MongoDB Schema。
本文樣本中所有資料表使用以下
MongoDB
Schema。CREATE DATABASE mongo_test WITH DBPROPERTIES ( catalog = 'mongodb', location = 'mongodb://<your-user-name>:<your-password>@dds-bp1694axxxxxxxx.mongodb.rds.aliyuncs.com:3717,dds-bp1694ayyyyyyyy.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=zzzzz', database = 'mongo_test', instance_id = 'mongodb_instance_id', vpc_id = 'vpc-*******' );
上述樣本的參數說明如下:
參數名稱
參數描述
location
MongoDB執行個體的ConnectionStringURI。
database
MonoDB資料庫名字。
instance_id
MongoDB執行個體ID。
vpc_id
MongoDB執行個體所屬VPC ID。
注意事項
如果您的MongoDB執行個體位於VPC網路內,預設情況下DLA無法訪問該VPC網路中的資源。為了讓DLA能訪問MongoDB,需要利用VPC反向訪問技術,即在MongoDB白名單中添加100.104.0.0/16
IP位址區段。
當您在MongoDB白名單中添加了100.104.0.0/16
IP位址區段,即視為您同意我們利用VPC反向訪問技術讀寫MongoDB資料庫。
操作步驟
您可以通過以下兩種方式在DLA中自動對應MongoDB資料庫中的表資料。
通過
CREATE TABLE LIKE MAPPING
建立表。在DLA中建立表。
create external table person like mapping('person'); +-------------+-----------+-----------------+ desc person; +-------------+-----------+-----------------+ | Field | Type | Collation | +-------------+-----------+-----------------+ | age | double | utf8_general_ci | | create_time | timestamp | utf8_general_ci | | id | double | utf8_general_ci | | name | varchar | utf8_general_ci |
在DLA中查詢表資料。
select * from person limit 4; +------+-------------------+---+------+ | age | create_time | id| name | +------+-----------------------+------+ | 10 | 2019-04-19 18:03:03 | 1 | james| | 20 | 2019-04-19 18:03:04 | 2 | bond | | 30 | 2019-04-19 18:03:04 | 3 | lily | | 20 | 2019-04-19 18:03:05 | 4 | lucy |
通過
CREATE TABLE LIKE
複製表。傳統資料庫支援將一個表複製一份產生一張新表,DLA中通過
CREATE TABLE LIKE
可以實現同樣的功能。在DLA中複製表。
以
person
表為例,通過CREATE TABLE LIKE
複製一份與person
表結構、資料相同的表person_2
。create external table person_2 like person;
在DLA中查詢表資料。
select * from person_2 limit 4; +------+-------------------+---+------+ | age | create_time | id| name | +------+-----------------------+------+ | 10 | 2019-04-19 18:03:03 | 1 | james| | 20 | 2019-04-19 18:03:04 | 2 | bond | | 30 | 2019-04-19 18:03:04 | 3 | lily | | 20 | 2019-04-19 18:03:05 | 4 | lucy |