Presto & MongoDB - 架构创建和更新

Presto & MongoDB - Schema creation and updates

我在本地完成了 Presto set-up,并且能够从 MongoDB collection 查询数据。一开始,我将 presto_schema collection 创建到 MongoDB 中,让 Presto 了解 Collection 详细信息以便查询,并且我在我的列表中添加了一个 Collection 条目presto_schema。但是,后来我注意到任何新的 Collection 到 MongoDB,但没有添加到 presto_schema 仍然可以从 Presto 访问,并且在第一次查询时观察到新的 collection 详细信息会自动修改为 presto_schema collection 以及相关的新 collection 架构详细信息。

但是对于具有嵌套架构的 collections,它没有自动添加所有嵌套字段,它只添加它从初始查询中识别的内容。

例如,下面是我的 Collection (new_collection),它是新创建的,内容如下:

{
    "_id" : "13ec5e2a-ef04-4d05-b971-ef8e65638f83",
    "name" : "npt",
    "client" : "npt_client",
    "attributes" : {
        "level" : 697,
        "country" : "SC",
        "doy" : 2022
    }
}

如果我从 Presto 收到的第一个查询如下:

presto:mydb> select count(*) from new_collection where attributes.level > 200;

presto_schema 会自动添加此新 collection 的新条目,但是,它会添加所有 non-nested 字段信息以及可从初始查询,但未能添加其他嵌套字段。因此,对其他嵌套字段的任何查询,Presto 都无法识别它们。我可以继续使用所有缺失的嵌套字段修改 presto_schema,但想知道是否有任何其他自动化方法。因此,我们不需要在 collection 中添加任何新字段时手动修改它(考虑到我们有一个完整的动态字段的场景,它将被添加到 Collection 的嵌套 object).

我建议升级到 Trino(以前称为 PrestoSQL),因为 MongoDB 连接器(版本 >= 360)支持将字段映射到 JSON 类型。此类型映射在 prestodb 中不可用。

https://trino.io/download.html