AdTech使用SinglestoredB和Looker
#go #singlestoredb #adtech #looker

抽象的

在本文中,我们将查看如何运行单闸GitHub项目,用于在SinglestoredB Cloud中实现ADTECH应用程序。我们还将使用Looker创建一些可视化。

介绍

在本文中,我们将采用现有的SingleStore GitHub repo,并证明可以在SinglestoredB云上部署并运行的易度性。完整的更新代码可以在forked GitHub repo中找到,以便于使用。

创建一个SinglestoredB云帐户

previous article显示了创建一个免费的SinglestoredB云帐户的步骤。我们将使用 ADTECH DEMO组作为我们的工作区组名称, adtech-demo 作为我们的工作空间名称。我们将记下我们的密码主机名称。

安装去

首先,我们将downloadinstall Go,如下:

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

我们还可以通过参数mediumlarge用于较大的数据集。

加载并运行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所示。

Figure 1. Count per Country.

图1.每个国家/中心>计数。

徘徊在不同国家/地区将为该国提供活动数量。

在Looker主页中,我们将选择 new>仪表板。我们将使用名称广告系列,然后单击创建仪表板

我们将单击编辑仪表板,然后添加可视化

我们将从左NAV中选择广告系列表,将会出现在新窗口中。在维度下,我们将选择广告系列名称;在衡量标准下,我们将选择计数。在右侧,我们将将行限制设置为10,选择饼图,然后选择 Run

这将创建图表,如图2所示。

Figure 2. Count per Campaign.

图2.计数每个广告系列。

可以创建其他仪表板以获得进一步的见解。

概括

我们已经生成了一些示例ADTECH数据,并将small数据集加载到SinglestoredB云中。下一步是创建和加载mediumlarge数据集。我们还可以将ADTECH数据存储在云中,并使用管道功能将数据流传输到SinglestoredB中。

我们已经构建并测试了dbbench。此工具可以方便地创建参考测试结果。

最后,我们使用Looker创建了两个快速仪表板,以了解一些ADTECH数据。可以使用此功能强大的基于浏览器的工具轻松地创建其他可视化。