4.Metabase中管理数据源

在使用Metabase进行数据分析之前,首先需要添加数据源。如果在系统的初始化的过程中,没有添加数据源。可以在之后,通过管理面板添加数据源。
在Metabase中对数据源的管理主要包含添加新的数据源、删除数据源、数据库的同步和安全防护。以上的这些操作都是Metabase的管理员角色才有的权限。普通的用户没有操作权限。如下图:

4.1 Metabase支持的数据库

在写这篇文章的时候,Metabase的最新版本是V0.30.0。目前支持的数据库及其版本要求如下:

  • Amazon Redshift
  • Google BigQuery
  • H2
  • MongoDB (V3.0以上的版本)
  • MySQL (V4.1以上的版本,其分支MariaDB也是)
  • Postgres
  • SQLite
  • SQL Server
  • Druid
  • CrateDB
  • Oracle
  • Vertica
  • Presto
  • Google Analytics
  • SparkSQL

4.2 数据库连接详细步骤

链接以上数据库,只需要配置对应的基本信息即可。以下以连接PostgreSQL为例说明。

(1)进入管理面板

如下图,通过右上角的设置按钮进入到管理员面板中——Admin Pannel。


管理员面板入口.png

(2)进入数据库标签页

通过点击DataBases标签页,进入数据库标签页。如下图所示:


数据库标签页.png

在该标签页中,列表显示出了当前Metabase连接的所有数据库。SampleDataset是Metabase在初始化的时候自动创建的H2演示数据库。

(3)点击Add database添加数据库

此时会跳转到新的页面上,输入要连接的PostgreSQL的信息即可,如下图:


数据库连接实例.png

当选择不同的数据库,该页面显示的必填字段是不同的,MySQL和PostgreSQL是相同的。以下是字段说明:

  • Database Type:要连接的数据库的类型;
  • Name:数据库在Metabase中的显示名称,如默认的数据库显示名称为'SampleDataset';
  • Host:数据库的地址;
  • Port: 数据库的端口,PostgreSQL默认是5432,MySQL默认是3306;
  • Database Name:要连接的数据名称;
  • Database username: 登陆数据库的用户名;
  • Database password: 登陆数据库的密码;
  • Additional JDBC Connection String Options:其他JDBC连接的配置选项。比如可以在此指定语言等;
  • Use an SSH-tunnel for database connections: 是否使用SSH安全链接
  • This is a large database, so let me choose when Metabase syncs and scans: 在数据量比较大的时候,为了提高性能,需要自定义数据库同步和扫描的时间

(4) 创建成功

当点击Save按钮后,如果填写的基本信息没有问题,会弹出数据库添加成功的界面,如下图:

数据库添加成功.png

在该弹出窗上,Metabase会建议你"Explore this data",即Metabase机器人会简单的探索该数据库中包含的表和数据等。

(5)数据表概览

当你点击了Explore this data,此时会弹出如下界面,显示了当前库中的每一张表。当然,点击进去之后,系统会对表中的数据做一个简要的分析,此处不再详解。

表信息.png

(6)在数据库列表中查看

添加新的数据库后,可以在数据库列表中查看,Bigdata234就是新添加的数据库。如下图:


数据库列表.png

至此,数据库的添加步骤全部结束。

4.3 数据库删除

数据库的删除是很简单,但是对数据库的删除会发生连带效应,不可以逆转。所以应当谨慎之。考虑对某些查询进行手动备份,达成高可用的方式。如下图所示,直接点击Delete即可完成数据库的删除。

数据库删除.png

在点击了删除后,Metabase会弹出一个提示对话框,提示你数据库的删除可能带来的风险和影响,当你确认无误后,在文本框中输入'Delete',不区分大小写,再点击Delete按钮后,即可删除。如下图所示:
数据库删除确认对话框.png

4.4 数据库修改

在数据库标签页,直接点解数据库的名称,会跳转到数据库修改界面,下图是点击了Sample Dataset数据库后的显示:

数据库修改.png

在此页面可以修改当前数据库的

  • Database type: 数据库类型;
  • Name: 显示名称;
  • Connection String: 链接字符串;
  • 性能优化;

支持的操作有:

  • Sync database schema now: 同步数据库的Schema(数据库模式);
  • Re-scan field values now: 重新扫描数据库的字段值;

危险区域提示:

  • Discard saved field values: 删除已经保存的字段值;
  • Remove this database: 删除数据库;

4.5 性能优化之自定义同步的调度

默认的情况下,Metabase是在操作轻量级的数据库的时候,会每小时对数据库进行同步和数据库的字段扫描的。
但是,在以下两种情形的时候必须要自定义同步和扫描的时间了。

  • 当操作的单个数据库的数据量非常大的时候,每小时进行数据表的同步和字段的扫描显然不合适了,这样会大大的降低Metabase的性能。
  • 当Metabase连接的数据库非常多的时候。Metabase连接一个数据库或者几个数据库的时候,因为表的数量有限,的确不会带来什么影响,但是表多的时候,在同一时间内后台同步更新会大大的降低Metabase的性能,会给降低用户的体验度。

所以,此时操作大数据的时候,为了提高Metabase的性能,Metabase支持自定义数据库的同步。
具体步骤如下:

(1)、首先启用自定义同步

启用自定义同步有两种方法:第一种是在创建数据库链接的时候就启用;第二种,是在链接创建后,进入数据库的管理页面中,启用,然后点击保存。如上面的《数据库修改.png》图中所示。下图是点击启用后的项:


大型数据库同步和扫描.png

(2)、调度设置

启用自定义同步后,页面上会多了一个Scheduling标签页,在该标签页中进行数据库同步的调度配置,如下图所示:

调度设置.png

在上面的页面上,主要设置两个时间:数据库同步的时间和字段扫描的时间。

2.1 数据库同步的时间设置

如下图:


数据库同步时间.png

此处设置的是每天早上一点的时候开始数据库的同步。

  • Scan:支持两种模式Hourly(按小时)和Daily(按天);
  • at:如果设置了按小时,就默认为每小时同步一次,不会有at的设置了。如果设置为按天,需要设置在一天的那个小时开始。

目前Metabase不支持比小时更细的粒度调度。另外,根据经验,数据库的同步最好放置在夜间或者业务量低谷的时候,不要影响到业务的使用。比如,我的Metabase是在8点到18点提供服务的,我就把数据库的同步放在了凌晨1点。

2.2 字段扫描

字段扫描的设置如下图:


字段扫描的调度设置.png

字段扫描的调度支持三种方式:

  • Regularly, on a schedule:手动设置同步时间,同上面的数据库同步时间设置一样;如果使用此方式的时候,注意,同步时间一定要在数据库的同步之后进行。我一般是设置晚一个小时。
  • Only when adding a new filter widget:只有添加了过滤器组件的时候才同步;
  • Never, I'll do this manually if I need to:可以在需要的时候,自己手动的设置。

总之,对数据库的同步和数据字段的扫描的时间调度的设置,需要根据自己的业务需求,比如,你的业务需求就是对实时性要求非常高。但是,在实际的生产环境中,该部分的功能最好由运维的同事来负责维护,他们能够从全局的角度衡量资源的平衡,知道了数据源的更新时间等等,才能配置好更合理的时间调度。

推荐阅读更多精彩内容