本文档主要介绍了基于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 |