本节我们将使用Quicksight来展示电影数据,我们将测试使用SPICE和不使用SPICE的效果
由于Quicksight要访问Redshift里的数据,要把Redshift配置成公网访问:

开启之后,要等待十几分钟Redshift更新完成。再把Redshift的安全组加一条规则,放通0.0.0.0/0对5439端口的访问。
进入Quicksight服务,点击New dataset:

选择使用Redshift做为数据源,输入Redshift的帐号和密码后,确认可以连接成功,然后点击Create data source:

在下一步,选择输入SQL的方式来对数据进行查询。我们输入上一节Spectrum实验时的查询语句:

具体内容如下:
select
title.title,
title.language,
title_basics.primarytitle,
title_basics.startyear,
title_basics.genres,
principles.nconst,
name_basics.primaryname,
name_basics.primaryprofession
from imdb.title
join imdb.title_basics on title.titleid = title_basics.tconst
join spectrum_schema.principles on title.titleid = principles.tconst
join imdb.name_basics on name_basics.nconst = principles.nconst
where title.language = 'en'
and title_basics.startyear is not null
order by title_basics.startyear desc
limit 500;
选择Direct query your data,这样Quicksight每次会从Redshift里查询数据再进行展示:

点击primaryprofession,这样报表中会展示它的数量统计:

等待40多秒后,报表加载完成:

查看Redshift的监控,发现这条语句执行了41秒:

转成饼状图展示:

此时会发现又要等待40多秒图形才展示出来
上面的配置,每次展示报表时每次都要在Redshift做计算,每一次展示至少需要十几秒甚至几分钟(对于复杂的查询甚至要十几分钟),这对于前端的使用者体验非常不好;
Super-fase, Parallel, In-memeory, Calculation Engine - SPICE是QuickSight的内存计算引擎,使用SPICE可以将数据加载到内存里,这样会大大加快报表展示的速度:

接下来我们将重新创建一个数据集,使用SPICE来加速Quicksight展示的速度:

数据源依然选择Redshift,连接方式以及SQL查询语句和上面一样:

在最后完成创建的部分,选择Import to SPICE for quicker analytics:

创建数据源完成后,会有一个初始化的过程,这时Quicksight会从Redshift中读取全量数据,加载到内存中:

此时查看Redshift的监控,会发现有一条unload语句在执行:

等待一段时间后,数据加载完成:

此时对报表进行展示,发现速度大大提升,基本在一秒左右就能展示出来:
