Presto MongoDB Connector


此连接器允许将MongoDB集合用作Presto中的表。

我们支持MongoDB 2.6+版本,但推荐使用3.0或更高版本。

配置

要配置MongoDB连接器,请创建一个etc/catalog/mongodb.properties包含以下内容的目录属性文件,并根据需要替换这些属性:

connector.name=mongodb
mongodb.seeds=host1,host:port

多个MongoDB集群

您可以根据需要拥有任意数量的目录,因此如果您有其他MongoDB集群,只需添加另一个etc/catalog具有不同名称的属性文件(确保以结尾.properties)。例如,如果您将属性文件sales.properties命名为,Presto将创建一个sales使用配置的连接器命名的目录。

配置属性

以下是可配置的属性:

属性

描述

mongodb.seeds

所有mongod服务器的列表

mongodb.schema-collection

包含架构信息的集合

mongodb.credentials

凭据列表

mongodb.min-connections-per-host

每个主机的连接池的最小大小

mongodb.connections-per-host

每个主机的连接池的最大大小

mongodb.max-wait-time

最长等待时间

mongodb.connection-timeout

套接字连接超时

mongodb.socket-timeout

套接字超时

mongodb.socket-keep-alive

每个socket是否开启keep-alive

mongodb.ssl.enabled

使用TLS/SSL连接到mongod/mongos

mongodb.read-preference

阅读偏好

mongodb.write-concern

写关注

mongodb.required-replica-set

所需的副本集名称

mongodb.cursor-batch-size

批量返回的元素数

  • mongodb.seeds

hostname[:port]相同副本集中所有mongod服务器的逗号分隔列表或同一分片集群中的mongos服务器列表。如果未指定端口,将使用端口27017。

此属性是必需的;没有默认值,必须至少定义一个种子。

  • mongodb.schema-collection

由于MongoDB是一个文档数据库,系统中没有固定的模式信息。所以每个MongoDB数据库中的一个特殊集合应该定义所有表的模式。有关详细信息,请参阅表定义部分。

在启动时,此连接器会尝试猜测字段的类型,但它可能不适合您的集合。在这种情况下,您需要手动修改它。并将为您创建一个条目。CREATETABLECREATETABLEASSELECT

此属性是可选的;默认为_schema。

  • mongodb.credentials

逗号分隔的username:password@collection凭据列

此属性是可选的;没有默认值。

  • mongodb.min-connections-per-host

此MongoClient实例的每个主机的最小连接数。这些连接在空闲时将保留在一个池中,并且该池将随着时间的推移确保它至少包含这个最小数量。

此属性是可选的;默认为0。

  • mongodb.connections-per-host

此MongoClient实例的每个主机允许的最大连接数。这些连接在空闲时将保留在池中。一旦池耗尽,任何需要连接的操作都会阻塞等待可用连接。

此属性是可选的;默认为100

  • mongodb.max-wait-time

线程可以等待连接变为可用的最大等待时间(以毫秒为单位)。值0表示它不会等待。负值意味着无限期地等待连接变为可用。

此属性是可选的;默认为120000。

  • mongodb.connection-timeout

以毫秒为单位的连接超时。值0表示没有超时。它仅在建立新连接时使用。

此属性是可选的;默认为10000

  • mongodb.socket-timeout

以毫秒为单位的套接字超时。它用于I/O套接字读写操作。

此属性是可选的;默认是0并且意味着没有超时。

  • mongodb.socket-keep-alive

此标志控制套接字保持活动功能,通过防火墙保持连接活动。

此属性是可选的;默认为false

  • mongodb.ssl.enabled

此标志启用到MongoDB服务器的SSL连接。

此属性是可选的;默认为false。

  • mongodb.read-preference

用于查询、map-reduce、聚合和计数的读取首选项。可用的值是PRIMARY,PRIMARY_PREFERRED,SECONDARY,SECONDARY_PREFERRED和NEAREST。

此属性是可选的;默认为PRIMARY

  • mongodb.write-concern

要使用的写关注。可用的值有ACKNOWLEDGED,FSYNC_SAFE,FSYNCED,JOURNAL_SAFEY,JOURNALED,MAJORITY,NORMAL,REPLICA_ACKNOWLEDGED,REPLICAS_SAFE和UNACKNOWLEDGED。

此属性是可选的;默认为ACKNOWLEDGED

  • mongodb.required-replica-set

所需的副本集名称。设置此选项后,MongoClient实例将

  1. 以副本集模式连接,并根据给定的服务器发现该集的所有成员
  2. 确保所有成员报告的集名称与所需的集名称匹配。
  3. 如果种子列表的任何成员不是具有所需名称的副本集的一部分,则拒绝为任何请求提供服务。

此属性是可选的;没有默认值。

  • mongodb.cursor-batch-size

限制一批中返回的元素数量。游标通常会获取一批结果对象并将它们存储在本地。如果batchSize为0,将使用驱动程序的默认值。如果batchSize为正,则表示检索到的每批对象的大小。可以对其进行调整以优化性能并限制数据传输。如果batchSize为负数,它将限制返回的对象数量,符合最大批量大小限制(通常为4MB),并且光标将被关闭。例如,如果batchSize为-10,则服务器将返回最多10个文档,并且尽可能多地容纳4MB,然后关闭光标。

注意:不要使用1。此属性是可选的;默认为0。

表定义

MongoDB在mongodb.schema-collection配置值指定的特殊集合上维护表定义。

注意:插件无法检测集合是否已删除。您需要删除MongoShell中的条目。或者通过使用Presto运行来删除集合。db.getCollection(“_schema”).remove({table:deleted_table_name})DROPTABLEtable_name

模式集合由表的MongoDB文档组成。

{
"table":...,
"fields":[
{"name":...,
"type":"varchar|bigint|boolean|double|date|array(bigint)|...",
"hidden":false},
...
]
}
}

字段

必需的

类型

描述

table

必需的

细绳

Presto表名

fields

必需的

大批

字段定义列表。每个字段定义都会在Presto表中创建一个新列。

每个字段定义:

{
"name":...,
"type":...,
"hidden":...
}

字段

必需的

类型

描述

name

必需的

细绳

Presto表中列的名称。

type

必需的

细绳

列的Presto类型。

hidden

可选的

布尔值

从和隐藏列。默认为.DESCRIBE<tablename>SELECT*false

键或消息的字段描述没有限制。

对象ID

MongoDB集合有特殊的领域_id。连接器尝试对这个特殊字段遵循相同的规则,因此会有隐藏字段_id。

CREATETABLEIFNOTEXISTSorders(
orderkeybigint,
orderstatusvarchar,
totalpricedouble,
orderdatedate
);

INSERTINTOordersVALUES(1,'bad',50.0,current_date);
INSERTINTOordersVALUES(2,'good',100.0,current_date);
SELECT_id,*FROMorders;

_id|orderkey|orderstatus|totalprice|orderdate
-------------------------------------+----------+-------------+------------+------------
55b151633864d6438c61a9ce|1|bad|50.0|2015-07-23
55b151673864d6438c61a9cf|2|good|100.0|2015-07-23
(2rows)

SELECT_id,*FROMordersWHERE_id=ObjectId('55b151633864d6438c61a9ce')

_id|orderkey|orderstatus|totalprice|orderdate
-------------------------------------+----------+-------------+------------+------------
55b151633864d6438c61a9ce|1|bad|50.0|2015-07-23
(1row)