抽象的
现在,使用新的更改数据捕获(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>。
我们将创建一个名为 从singlestoredB云中的左导航窗格中,我们将选择开发> SQL Editor 创建一个 我们将用MongoDB Atlas保存的值替换 接下来,我们将启动管道来复制数据,如下: 不久之后,我们将检查表并确认数据已复制到跨度,如下所示: 我们将使用GitHub上可用的笔记本文件。从SinglestoredB Cloud的左导航窗格中,我们将选择笔记本。在网页的右上角将是新笔记本,带有两个选项: 我们将选择第二个选项,找到我们从github下载的笔记本文件,然后将其加载到singlestoredB云中。 图1显示了此应用程序的总体流程。 在图1中, 我们将在笔记本中输入MongoDB Atlas详细信息,如下: 我们将用MongoDB Atlas保存的值替换 现在,我们将通过零售销售笔记本来生成和查看分析和可视化。 我们将创建一个名为 从singlestoredB云中的左导航窗格中,我们将选择开发> SQL Editor 创建一个 我们将用MongoDB Atlas保存的值替换 接下来,我们将启动管道来复制数据,如下: 不久之后,我们将检查表并确认数据已复制到跨度,如下所示: 我们将使用GitHub上可用的笔记本文件。从SinglestoredB Cloud的左导航窗格中,我们将选择笔记本。在网页的右上角将是新笔记本,带有两个选项: 我们将选择第二个选项,找到我们从github下载的笔记本文件,然后将其加载到singlestoredB云中。 图2显示了此应用程序的总体流程。 在图2中,
1.零售示例
Mongodb地图集
new_transactions
的新数据库,其中三个收集称为custs
,items
和txs
。我们将将数据加载到这些集合中。数据负载可以通过多种方式完成,例如使用MongoDB Compass或mongoimport
。数据集可以在GitHub。
Singlestore Kai
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;
<username>
和<password>
。我们还需要用MongoDB Atlas的每个地址替换<primary>
,<secondary>
和<secondary>
的值。
START ALL PIPELINES;
SELECT COUNT(*) FROM custs;
SELECT COUNT(*) FROM items;
SELECT COUNT(*) FROM txs;
加载笔记本
运行笔记本
myclientmongodb = pymongo.MongoClient("mongodb+srv://<username>:<password>@<host>/?retryWrites=true&w=majority")
<username>
,<password>
和<host>
。
2.书店示例
Mongodb地图集
bookstore
的新数据库,其中一个名为books
的集合。我们将将数据加载到此集合中。数据负载可以通过多种方式完成,例如使用MongoDB Compass或mongoimport
。数据集可以在GitHub上找到。
Singlestore Kai
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;
<username>
和<password>
。我们还需要用MongoDB Atlas的每个地址替换<primary>
,<secondary>
和<secondary>
的值。
START ALL PIPELINES;
SELECT COUNT(*) FROM books;
加载笔记本
运行笔记本
。嵌入式存储在一个新的单口kai系列中。
$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所示。
概括
本文提供了两个示例,说明了我们如何轻松地使用单骨cdc解决方案将数据连接到MongoDB地图集并将数据复制到Singlestore Kai。我们还从JSON Book Data创建了嵌入,并将这些嵌入在Singlestore Kai中。最后,我们构建了一个简单的应用程序来查询数据库系统以提出书籍建议。