抽象的
在本文中,我们将查看如何运行单闸GitHub项目,用于在SinglestoredB Cloud中实现ADTECH应用程序。我们还将使用Looker创建一些可视化。
介绍
在本文中,我们将采用现有的SingleStore GitHub repo,并证明可以在SinglestoredB云上部署并运行的易度性。完整的更新代码可以在forked GitHub repo中找到,以便于使用。
创建一个SinglestoredB云帐户
previous article显示了创建一个免费的SinglestoredB云帐户的步骤。我们将使用 ADTECH DEMO组作为我们的工作区组名称, adtech-demo 作为我们的工作空间名称。我们将记下我们的密码和主机名称。
安装去
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz
我们可能需要使用sudo
,如下:
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz
我们将以下以下内容添加到PATH
变量:
export PATH=$PATH:/usr/local/go/bin
,然后检查版本:
go version
这将打印GO的已安装版本。例如:
go version go1.20.1 linux/amd64
克隆github仓库
现在我们将克隆以下github repo:
git clone https://github.com/VeryFatBoy/starter_kits
数据生成器
让我们首先从AdTech数据生成器开始,然后更改为目录:
cd starter_kits/adtech/generator
现在我们将构建代码,如下:
go mod init generator
go mod tidy
go build
这将创建一个可执行的generator
文件。
现在,让我们创建一个small
数据集用于初始测试:
./generator small
这将创建带有选项卡的值的四个文件:
campaigns-small.tsv
events-small.tsv
networks-small.tsv
platforms-small.tsv
我们将gzip
这些文件:
gzip *.tsv
我们还可以通过参数medium
或large
用于较大的数据集。
加载并运行SQL
我们将提升一个目录级别:
cd ..
在文件setup.sql
中,以下四个代码块每个都使用管道,并已评论:
...
-- create or replace pipeline load_events as
-- load data s3 'reference-solutions.memsql.com/events-large.tsv.gz'
-- config '{"region": "us-east-1"}'
-- credentials '{"aws_access_key_id": "", "aws_secret_access_key": ""}'
-- into table events;
-- start pipeline load_events;
...
-- create or replace pipeline load_campaigns as
-- load data s3 'reference-solutions.memsql.com/campaigns-large.tsv.gz'
-- config '{"region": "us-east-1"}'
-- credentials '{"aws_access_key_id": "", "aws_secret_access_key": ""}'
-- skip duplicate key errors
-- into table campaigns;
-- start pipeline load_campaigns;
...
-- create or replace pipeline load_networks as
-- load data s3 'reference-solutions.memsql.com/networks-large.tsv.gz'
-- config '{"region": "us-east-1"}'
-- credentials '{"aws_access_key_id": "", "aws_secret_access_key": ""}'
-- skip duplicate key errors
-- into table networks;
-- start pipeline load_networks;
...
-- create or replace pipeline load_platforms as
-- load data s3 'reference-solutions.memsql.com/platforms-large.tsv.gz'
-- config '{"region": "us-east-1"}'
-- credentials '{"aws_access_key_id": "", "aws_secret_access_key": ""}'
-- skip duplicate key errors
-- into table platforms;
-- start pipeline load_platforms;
...
如果我们稍后决定使用管道,我们可以删除并修改代码以适合我们的需求。
分别添加了以下四个新代码块,以便我们可以加载本地生成的数据:
...
load data local infile "generator/events-small.tsv.gz"
into table events
columns terminated by '\t';
...
load data local infile "generator/campaigns-small.tsv.gz"
into table campaigns
skip duplicate key errors
columns terminated by '\t';
...
load data local infile "generator/networks-small.tsv.gz"
into table networks
skip duplicate key errors
columns terminated by '\t';
...
load data local infile "generator/platforms-small.tsv.gz"
into table platforms
skip duplicate key errors
columns terminated by '\t';
...
接下来,我们将在setup.sql
文件中运行命令以创建adtech
数据库并加载数据:
mysql -u admin -h <host> -P 3306 -p<password> --local-infile < setup.sql
我们将用我们的singlestoredB云帐户中的值替换<host>
和<password>
。
从我们的singlestoredB云帐户中,我们可以使用 sql编辑器检查表是否正确创建了表:
USE adtech;
SHOW TABLES;
使用dbbench(可选)进行基准测试
dbbench
工具可用于针对单骨数据库运行工作负载。对该工具的讨论超出了本文的范围,但是SingleStore GitHub repo是一个开始的好地方,并包含一个tutorial。
要构建并运行dbbench
程序,我们将首先更改为Directory starter_kits/adtech/benchmarks
。
接下来,我们将设置一些环境变量:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
然后安装dbbench
,如下:
go install github.com/memsql/dbbench@latest
我们可以从starter_kits/adtech/benchmarks
目录运行程序,如下:
dbbench --host=<host> --username=admin --password=<password> --intermediate-stats=false adtech.ini
我们将用我们的singlestoredB云帐户中的值替换<host>
和<password>
。
这是使用small
数据集的S-00
工作区大小的示例:
Connected
starting impressions per campaign
starting ctr_per_country
starting campaign facts
starting spend per advertiser
stopping spend per advertiser
stopping ctr_per_country
stopping campaign facts
stopping impressions per campaign
ctr_per_country: latency 59.327792ms±15.229575ms; 30 transactions (16.847 TPS); 7470 rows (4194.792 RPS)
16.777216ms - 33.554432ms [ 12]: ██████████████████████████████████████████████████
33.554432ms - 67.108864ms [ 7]: █████████████████████████████▏
67.108864ms - 134.217728ms [ 10]: █████████████████████████████████████████▋
134.217728ms - 268.435456ms [ 1]: ████▏
spend per advertiser: latency 58.056977ms±15.261319ms; 30 transactions (17.215 TPS); 15870 rows (9106.741 RPS)
8.388608ms - 16.777216ms [ 1]: ███▎
16.777216ms - 33.554432ms [ 6]: ████████████████████
33.554432ms - 67.108864ms [ 15]: ██████████████████████████████████████████████████
67.108864ms - 134.217728ms [ 7]: ███████████████████████▎
134.217728ms - 268.435456ms [ 1]: ███▎
impressions per campaign: latency 116.803395ms±35.36871ms; 30 transactions (8.559 TPS); 30 rows (8.559 RPS)
8.388608ms - 16.777216ms [ 2]: ██████▋
16.777216ms - 33.554432ms [ 2]: ██████▋
33.554432ms - 67.108864ms [ 2]: ██████▋
67.108864ms - 134.217728ms [ 15]: ██████████████████████████████████████████████████
134.217728ms - 268.435456ms [ 7]: ███████████████████████▎
268.435456ms - 536.870912ms [ 2]: ██████▋
campaign facts: latency 64.628849ms±30.600693ms; 30 transactions (15.464 TPS); 0 rows (0.000 RPS)
8.388608ms - 16.777216ms [ 5]: █████████████████████████
16.777216ms - 33.554432ms [ 5]: █████████████████████████
33.554432ms - 67.108864ms [ 10]: ██████████████████████████████████████████████████
67.108864ms - 134.217728ms [ 9]: █████████████████████████████████████████████
134.217728ms - 268.435456ms [ 0]:
268.435456ms - 536.870912ms [ 1]: █████
使用dbbench
允许我们构建参考实现,然后测试针对这些的性能。
使用Looker的可视化
最后,我们将创建一些可视化。
要使用Looker,我们可以使用现有帐户或request a free trial。
登录到Looker帐户后,从帐户> Admin> Connections 我们将创建新连接,如下:
- 名称:参考_solutions
- 方言: Singlestore 7+
-
远程主机:
<host>
端口:3306 - 数据库: adtech
- 用户名: admin
-
密码:
<password>
我们将用我们的singlestoredB云帐户中的值替换<host>
和<password>
。
我们可以测试连接是否成功。
接下来,从帐户>开发,我们将确保开发模式被切换到上的,选择管理LookMl项目,然后选择 new Lookml项目。
我们现在输入以下内容:
- 项目名称: adtech
- 起点:从数据库架构生成模型
- 连接: reference_solutions
- 从:所有表 构建视图
接下来,我们将从Looker主页中选择 new> dashboard 。我们将使用名称事件,然后单击创建仪表板。
我们将单击编辑仪表板,然后添加可视化。
从左导航中,我们将选择事件表,将会出现在新窗口中。在维度下,我们将选择 country ;在衡量标准下,我们将选择计数。我们将在右侧选择 Google Maps ,然后选择 Run 。
这将创建一个热图,如图1所示。
徘徊在不同国家/地区将为该国提供活动数量。
在Looker主页中,我们将选择 new>仪表板。我们将使用名称广告系列,然后单击创建仪表板。
我们将单击编辑仪表板,然后添加可视化。
我们将从左NAV中选择广告系列表,将会出现在新窗口中。在维度下,我们将选择广告系列名称;在衡量标准下,我们将选择计数。在右侧,我们将将行限制设置为10,选择饼图,然后选择 Run 。
。这将创建图表,如图2所示。
可以创建其他仪表板以获得进一步的见解。
概括
我们已经生成了一些示例ADTECH数据,并将small
数据集加载到SinglestoredB云中。下一步是创建和加载medium
或large
数据集。我们还可以将ADTECH数据存储在云中,并使用管道功能将数据流传输到SinglestoredB中。
我们已经构建并测试了dbbench
。此工具可以方便地创建参考测试结果。
最后,我们使用Looker创建了两个快速仪表板,以了解一些ADTECH数据。可以使用此功能强大的基于浏览器的工具轻松地创建其他可视化。