快速提示:将JSON数据从MongoDB转到Singlestore Kai并创建OpenAi Embeddings
#openai #singlestoredb #mongodb #changedatacapture

抽象的

现在,使用新的更改数据捕获(CDC)解决方案将JSON数据从MongoDB复制到Singlestore Kai是直接的。本文介绍了如何执行此操作的两个示例。在第一个示例中,我们将复制一个小的零售数据集。在第二个示例中,我们将复制一个小书数据集并为书籍创建OpenAI嵌入。最后,我们将构建一个简单的精简应用程序,为书籍推荐系统提供GUI。

可在GitHub上找到数据集,笔记本文件,SQL和简化代码。

介绍

SINGLESTORE的新CDC解决方案使得从MongoDB到Singlestore Kai复制数据非常容易。我们将在本文中进行两个不同的示例,以了解如何。

Mongodb地图集

我们将在M0沙盒中使用MongoDB地图集。我们将在 atlasadmin 特权数据库访问下配置 admin 用户。我们将在网络访问下暂时允许从任何地方(IP地址0.0.0.0/0)访问。我们将记下用户名密码主机

Singlestore Kai

previous article显示了创建一个免费的SinglestoredB云帐户的步骤。我们将使用以下设置:

  • 工作区组名称: CDC演示组
  • 云提供商: aws
  • 地区:美国东1(N。Virginia)
  • 工作空间名称: cdc-demo
  • 大小: S-00
  • 设置:
    • SINGLESTORE KAI选择

可用工作空间后,我们将记下我们的密码主机。主机将从 CDC演示组>概述> Workspaces> CDC-DEMO> Connect> Connect> Connect> Connect> MongoDB客户端。稍后我们需要此信息才能简化。我们还将通过在 CDC演示组>防火墙> firewall>。

1.零售示例

Mongodb地图集

我们将创建一个名为new_transactions的新数据库,其中三个收集称为custsitemstxs。我们将将数据加载到这些集合中。数据负载可以通过多种方式完成,例如使用MongoDB Compass或mongoimport。数据集可以在GitHub

上找到

Singlestore Kai

从singlestoredB云中的左导航窗格中,我们将选择开发> SQL Editor 创建一个new_transactions数据库和link,如下:

CREATE DATABASE IF NOT EXISTS new_transactions;
USE new_transactions;

DROP LINK new_transactions.link;

CREATE LINK new_transactions.link AS MONGODB
CONFIG '{"mongodb.hosts": "<primary>:27017, <secondary>:27017, <secondary>:27017",
        "collection.include.list": "new_transactions.*",
        "mongodb.ssl.enabled": "true",
        "mongodb.authsource": "admin",
        "mongodb.members.auto.discover": "false"}'
CREDENTIALS '{"mongodb.user": "<username>",
            "mongodb.password": "<password>"}';

CREATE TABLES AS INFER PIPELINE AS LOAD DATA LINK new_transactions.link '*' FORMAT AVRO;DROP LINK adtech.link;

我们将用MongoDB Atlas保存的值替换<username><password>。我们还需要用MongoDB Atlas的每个地址替换<primary><secondary><secondary>的值。

接下来,我们将启动管道来复制数据,如下:

START ALL PIPELINES;

不久之后,我们将检查表并确认数据已复制到跨度,如下所示:

SELECT COUNT(*) FROM custs;
SELECT COUNT(*) FROM items;
SELECT COUNT(*) FROM txs;

加载笔记本

我们将使用GitHub上可用的笔记本文件。从SinglestoredB Cloud的左导航窗格中,我们将选择笔记本。在网页的右上角将是新笔记本,带有两个选项:

  1. 新笔记本
  2. 从文件中导入

我们将选择第二个选项,找到我们从github下载的笔记本文件,然后将其加载到singlestoredB云中。

运行笔记本

图1显示了此应用程序的总体流程。

Figure 1. Retail Sales Workflow (Source: SingleStore).

图1.零售销售工作流(来源:SINGLESTORE)。

在图1中,

  • 步骤1:将数据从图书馆复制到SinglestoredB 先前是使用Singlestore CDC解决方案完成的。
  • 步骤2:针对Atlas和Singlestore进行查询使我们能够针对这两个系统运行各种分析查询。

我们将在笔记本中输入MongoDB Atlas详细信息,如下:

myclientmongodb = pymongo.MongoClient("mongodb+srv://<username>:<password>@<host>/?retryWrites=true&w=majority")

我们将用MongoDB Atlas保存的值替换<username><password><host>

现在,我们将通过零售销售笔记本来生成和查看分析和可视化。

2.书店示例

Mongodb地图集

我们将创建一个名为bookstore的新数据库,其中一个名为books的集合。我们将将数据加载到此集合中。数据负载可以通过多种方式完成,例如使用MongoDB Compass或mongoimport。数据集可以在GitHub上找到。

Singlestore Kai

从singlestoredB云中的左导航窗格中,我们将选择开发> SQL Editor 创建一个bookstore数据库和link,如下所示:

CREATE DATABASE IF NOT EXISTS bookstore;
USE bookstore;

DROP LINK bookstore.link;

CREATE LINK bookstore.link AS MONGODB
CONFIG '{"mongodb.hosts": "<primary>:27017, <secondary>:27017, <secondary>:27017",
        "collection.include.list": "bookstore.*",
        "mongodb.ssl.enabled": "true",
        "mongodb.authsource": "admin",
        "mongodb.members.auto.discover": "false"}'
CREDENTIALS '{"mongodb.user": "<username>",
            "mongodb.password": "<password>"}';

CREATE TABLES AS INFER PIPELINE AS LOAD DATA LINK bookstore.link '*' FORMAT AVRO;

我们将用MongoDB Atlas保存的值替换<username><password>。我们还需要用MongoDB Atlas的每个地址替换<primary><secondary><secondary>的值。

接下来,我们将启动管道来复制数据,如下:

START ALL PIPELINES;

不久之后,我们将检查表并确认数据已复制到跨度,如下所示:

SELECT COUNT(*) FROM books;

加载笔记本

我们将使用GitHub上可用的笔记本文件。从SinglestoredB Cloud的左导航窗格中,我们将选择笔记本。在网页的右上角将是新笔记本,带有两个选项:

  1. 新笔记本
  2. 从文件中导入

我们将选择第二个选项,找到我们从github下载的笔记本文件,然后将其加载到singlestoredB云中。

运行笔记本

图2显示了此应用程序的总体流程。

Figure 2. Bookstore Workflow (Source: SingleStore).

图2.书店工作流(来源:SINGLESTORE)。

在图2中,

  • 书籍数据先前使用单闸CDC解决方案加载。
  • 笔记本生成数据嵌入用于使用OpenAI的书籍的。嵌入式存储在一个新的单口kai系列中。
  • 笔记本获得查询嵌入式使用OpenAi并在我们查询书籍时执行$dotProduct。如previous article所述,Singlestore Kai还支持$euclideanDistance

现在,我们将通过书店笔记本来生成书籍建议。查询结果将作为JSON数据输出。

奖金:建议人

在书店示例中,我们将构建一个小型的简化应用程序,可提供更具交互性的体验,并以更好的格式输出结果,而不是作为JSON数据。简化代码可以在GitHub上找到。

我们将在简化应用程序中输入SINGLESTORE KAI MONGODB客户端详细信息,如下:

def init_connection():
    return pymongo.MongoClient("mongodb://<username>:<password>@<host>:27017/?authMechanism=PLAIN&tls=true&loadBalanced=true")

我们将用我们从singlestoredb cloud保存的值替换<username><password><host>

我们需要在环境中提供OpenAI API Key。例如:

export OPENAI_API_KEY="<OpenAI API Key>"

用钥匙替换<OpenAI API Key>

接下来,我们将运行精简应用程序,如下:

streamlit run streamlit_app.py

该应用程序显示了可以键入查询的左侧的输入框,结果显示在右侧,格式为表格。示例查询及其输出如图3所示。

Figure 3. Book Recommender.

图3.读书。

概括

本文提供了两个示例,说明了我们如何轻松地使用单骨cdc解决方案将数据连接到MongoDB地图集并将数据复制到Singlestore Kai。我们还从JSON Book Data创建了嵌入,并将这些嵌入在Singlestore Kai中。最后,我们构建了一个简单的应用程序来查询数据库系统以提出书籍建议。