使用Airbyte将FAUNA中的数据传输到您的分析工具
#教程 #database #分析 #动物

我们很高兴推出Fauna的新Airbyte开源connector。该连接器使您可以将动物群数据复制到数据仓库,湖泊和分析数据库中,例如雪花,红移,S3等。

为什么要Airbyte

随着应用程序和数据源的扩散,通常需要公司来构建跨架构的数据传输的自定义连接器。这些ETL(提取,转换和负载)工具中的大多数都需要随着时间的流逝而随着需求的变化而维护和更新连接器。 Airbyte是一个开源数据管道平台,通过提供可靠的连接器生态系统来消除这种负担,该系统可以扩展而无需维护连接器本身。

为什么动物群

Fauna是分布式的document-relational database,以云API的形式传递。开发人员选择Fauna的文档相关模型,因为它将NOSQL数据库的灵活性与SQL数据库的关系查询和酸功能相结合。该模型是作为API提供的,因此您可以专注于构建功能,而不必担心任何操作或基础架构管理。

为什么为什么动物群 + airbyte

Fauna和Airbyte既可以提高生产率和开发人员的经验 - 连接器将允许开发人员在Fauna中移植和迁移交易数据,以选择分析工具以推动业务见解。

继续阅读以获取有关如何配置Fauna source 连接器的指南,以将数据库传输到Airbyte支持的数据分析或仓库destination connectors

Fauna来源支持以下方式导出您的数据:

  • 完整刷新附加同步模式将所有数据复制到目的地,而无需删除现有数据。
  • 完整的刷新覆盖同步模式 复制整个流并通过覆盖目标中的数据。
  • 增量附加模式定期将新,更改或删除的数据传输到目的地。
  • 递增的删除历史记录同步模式 从流中复制新记录,并在目标中附加数据,同时提供了一个删除的视图,该视图反映了源
  • 中流的状态

先决条件

您需要一个目标数据库帐户,并且需要设置Data Build Tool(DBT¢)以将文档中的字段转换为目标列。您还需要安装Docker。

创建目标数据库帐户

如果您尚未拥有与目标连接器关联的数据库的帐户,请创建一个帐户并保存身份验证凭据以设置目标连接器以填充目标数据库。

设置DBT

使用SQL风格的语句访问FAUNA源中的字段,创建一个DBT帐户并按照Airbyte Transformations with dbt设置指南中所述设置DBT。该指南在设置中逐步逐步转换源和目标之间的数据,并将您连接到目标数据库。

安装Docker

Fauna连接器是Airbyte开源集成,被部署为Docker映像。如果您尚未安装Docker,请遵循Install Docker Engine指南。

步骤1:设置动物源

根据您的用例,为您的集合设置以下同步模式之一。

完整刷新同步模式

按照以下步骤完全同步源和目标数据库。

1-使用Fauna Dashboardfauna-shell shell创建可以读取要导出的集合的角色。动物源需要访问集合资源,以便可以找到可读的集合。这并不能使其访问所有收藏,只有所有收藏品的名称。例如:

CreateRole({
  name: "airbyte-readonly",
  privileges: [{
    resource: Collection("COLLECTION_NAME"),
    actions: { read: true }
  }],
})

用此连接器的收集名称替换COLLECTION_NAME

2-创建一个具有与角色相关的权限的秘密,使用您创建的角色的name。例如:

CreateKey({
  name: "airbyte-readonly",
  role: Role("airbyte-readonly"),
})
{
  ref: Key("341909050919747665"),
  ts: 1662328730450000,
  role: Role("airbyte-readonly"),
  secret: "fnAEjXudojkeRWaz5lxL2wWuqHd8k690edbKNYZz",
  hashed_secret: "$2a$05$TGr5F3JzriWbRUXlKMlykerq1nnYzEUr4euwrbrLUcWgLhvWmnW6S"
}

保存返回的secret,否则,您需要创建一个新密钥。

增量附加同步模式

使用增量同步模式定期同步源和目的地,仅更新新的和更改的数据。

按照以下步骤设置增量同步。

1-使用Fauna Dashboardfauna-shell创建索引,该索引使连接器可以进行增量同步。例如:

CreateIndex({
  name: "INDEX_NAME",
  source: Collection("COLLECTION_NAME"),
  terms: [],
  values: [
    { "field": "ts" },
    { "field": "ref" }
  ]
})

用您为增量同步索引配置的名称替换INDEX_NAME。将COLLECTION_NAME替换为为此连接器配置的集合的名称。

|Index values|Description|
| --- | ----------- |
|`ts`| Last modified timestamp.|
|`ref`|Unique document identifier.|

2-创建一个可以读取集合和索引的角色,并可以访问索引元数据以验证索引设置。例如:

CreateRole({
  name: "airbyte-readonly",
  privileges: [
    {
      resource: Collection("COLLECTION_NAME"),
      actions: { read: true }
    },
    {
      resource: Index("INDEX_NAME"),
      actions: { read: true }
    },
    {
      resource: Indexes(),
      actions: { read: true }
    }
  ],
})

用为此连接器配置的集合的名称替换COLLECTION_NAME。替换为为增量同步索引配置的名称替换为INDEX_NAME

3-创建一个具有与角色相关的权限的秘密密钥,使用您创建的角色的name。例如:

CreateKey({
  name: "airbyte-readonly",
  role: Role("airbyte-readonly"),
})
{
  ref: Key("341909050919747665"),
  ts: 1662328730450000,
  role: Role("airbyte-readonly"),
  secret: "fnAEjXudojkeRWaz5lxL2wWuqHd8k690edbKNYZz",
  hashed_secret: "$2a$05$TGr5F3JzriWbRUXlKMlykerq1nnYzEUr4euwrbrLUcWgLhvWmnW6S"
}

保存返回的secret。您需要在Install Docker程序的步骤2中输入秘密。保存密钥很重要,否则,如果您失去了提供的秘密,则需要创建一个新密钥。

Fauna源通过数据库上的所有索引进行迭代。对于它所找到的每个索引,必须满足以下条件的增量同步:

  1. 源必须能够索引索引,这意味着它需要阅读访问此索引。

  2. 索引的来源必须是您要同步的集合的引用

  3. 值的数量必须为两个。

  4. 术语数必须为零。

  5. 值必须等于:

    {"field": "ts"}
    {"field": "ref"}
    

以上列出的顺序检查上述所有条件。如果支票失败,它会跳过索引。

如果在初始设置中找不到索引,则没有用于给定集合的增量同步。没有发出错误,因为无法确定您是否期望该集合的索引。

如果您发现该集合没有增量同步,请确保您遵循所有设置步骤,以及索引,术语和值的所有索引。

步骤2:部署和启动Airbyte

  1. 请参阅Deploy Airbyte的说明,要安装和部署Airbyte。输入以下命令部署Airbyte服务器:

    git clone https://github.com/airbytehq/airbyte.git
    cd airbyte
    docker-compose up
    
  2. 当显示Airbyte横幅时,请在http://localhost:8000上启动Airbyte仪表板。

  3. 选择“ 连接”菜单项开始设置数据源。

步骤3:设置动物源

  1. 在Airbyte仪表板中,单击+新连接按钮。如果您以前设置了源,请单击使用现有源按钮选择该源。

  2. 源类型中下拉下,选择 fauna ',然后单击“ ”设置源 '按钮。这列出了可配置的Fauna连接器参数。右侧面板中的应用程序内设置指南还提供了详细的设置说明。

  3. 设置以下必需参数:

    参数 描述
    Name 输入此连接的描述名称。 name Connections - 窗口连接列表中显示。
    Domain 输入要导出的集合的域。请参阅Region Groups有关区域域。
    Port 输入默认端口号:â443
    Scheme 输入用于连接到动物的方案:âhttps
    Fauna Secret 输入您使用数据库进行身份验证的保存的动物秘密。
    Page Size 页面大小使您可以控制内存大小,从而影响连接器性能。
    Deletion Mode 删除模式可让您指定是否忽略文档删除或删除的标志文档,具体取决于您的用例。
    +从以下选项中选择:
    • 忽略选项忽略文档删除。
    • 已删除字段'选项添加了一个日期列,该列具有删除文档时的日期。这在让目标重建删除事件的同时保持文档历史记录。
  4. 设置源后,单击设置源'按钮。

    “通过所有连接测试!”消息证实了与动物群源的成功连接。最小的确认:

-   The secret is valid.

  • The connector can list collections and indexes.

步骤4:设置目的地

  1. 在新连接窗口中,选择A destination type 键入,然后单击“ ”设置目标'按钮。如果您以前设置了目的地,请单击使用现有目的地'按钮选择和使用该目的地。否则,继续设置一个新的目的地。

  2. 目标连接器配置参数是目标唯一的。根据连接器的要求,填充设置目标字段,包括身份验证信息。 Aâ设置指南在右侧面板中提供了详细的设置说明。

  3. 完成后,单击设置目的地按钮。

步骤5:设置连接

设置连接以同步源和目标。

  1. 名称字段中输入连接的描述名称。

  2. 选择Aâ转移>复制频率,即数据同步间隔。

    您可以选择手动同步数据的手册选项。

  3. 流>目标名称空间字段中,选择一个存储数据的目标名称空间。选项包括:

    选项 描述
    Mirror source structure 将目标数据库中的名称设置为用于动物源的名称。
    Other 使用另一个命名选项,例如将数据库名称与字符串前缀。
  4. 可选,在 streams>目标流前缀字段中输入流名前缀。

  5. 激活要同步的流中,单击>箭头以展开可用字段:

    字段 描述
    data 收集数据。
    ref 唯一文档标识符。
    ts 数据时间戳。
    ttl 时间间隔。

    如果文档未在ttl时间间隔中进行修改,则将其删除。默认值为null不使用。文档删除后,它不会在时间查询中显示,并且连接器不会发射adeleted_at row。

  6. 选择ref作为主键。这独特地标识了集合中的文档。

  7. 选择A 同步模式作为源同步行为,完全或增量。

    新的增量同步获得完整的数据库,与完整的同步相同。

    同步模式 描述
    增量 - 辩护历史 从流中同步新记录并在目标中附加数据,还提供了一个删除视图,该视图反映了源中流的状态。
    完整刷新 - 覆盖 同步整个流并通过覆盖目标中的数据。
    增量 - 附录 从流中同步新记录,并在目标中附加数据。
    完整刷新 - 附录 同步整个流并在目标中附加数据。

    如果显示少于四个选项,则表明该索引设置不正确。参见Step 1: Set up the Fauna source

  8. 选择标准化和转换数据格式:

    数据格式 描述
    Raw data (JSON) 将所有源数据放入单列中。
    Normalized tabular data reftsttldata字段放在单独的列中。
  9. 单击+添加转换'按钮添加DBT转换。

    要在“源data”列中提取字段,您需要将DBT配置为将源数据映射到目标数据库列。例如,以下基于SQL的查询从源data列中提取nameaccount_balancecredit_card/expires字段,以填充目标数据的三个单独的列:

    with output as (
      select
        data:name as name
        data:account_balance as balance
        data:credit_card:expires as cc_expires
      from airbyte_schema.users
    )
    
    select *from output
    
  10. 单击设置连接按钮。

步骤6:同步数据

连接上'为您创建的连接的页面,单击同步

运行同步的时间随着同步历史记录显示的状态而变化。同步完成后,状态从运行成功的 - 显示:

  • 传输字节的数量。

  • 发出和投入的记录数量。

  • 同步持续时间。

步骤7:验证集成

要展开同步日志,请单击显示时间右侧的>箭头。这为您提供了同步事件的详细视图。

最后,通过打开和查看目标数据库来验证成功的数据库传输。

结论

将动物区系与在动物区系建造的Airbyte开源解决方案武器开发人员中,具有有力的工具,可以洞悉居住在动物区系的运营数据。我们很高兴能够通过与Airbyte建立合作伙伴关系来引入Airbyte云连接器。如果您对动物区系 + airbyte云集成或开源连接器有任何兴趣,请随时向我们联系,并在我们的forum或我们的Discord中提出问题。