Metabase学习教程:系统管理-6

news2024/12/27 10:59:48

Metabase可扩展性

扩展Metabase以支持更多人和数据库的最佳实践。

Metabase是一个可扩展的、经过实战的软件,被成千上万的公司用来提供高质量的自助服务分析。它通过水平扩展支持高可用性,而且它是开箱即用的高效工具:一台拥有4gb内存的单核机器可以将Metabase扩展到数百个用户。

图1。连接到多个数据库及其应用程序数据库的单个Metabase实例,该数据库存储问题、仪表板和其他特定于Metabase的数据。随着增长,可以轻松添加更多Metabase实例。

本文提供了有关如何随着用户和数据源数量的增加而在生产中保持Metabase平稳运行的高级指导和最佳实践。每个数据系统都是不同的,所以我们只能在较高的层次上讨论扩展策略,但是您应该能够将这些策略转换为您特定的环境和使用情况。

影响Metabase性能和可用性的因素

Metabase在垂直和水平方向上都可以很好地缩放,但它只是数据仓库,系统的总体性能将取决于系统的组成和使用模式。影响您使用Metabase体验的主要因素包括:

  • 连接到Metabase的数据库数。
  • 每个数据库中的表数。
  • 数据仓库的效率。
  • 仪表板中的问题数。

例如,如果问题需要运行数据库需要30分钟才能完成的查询:只需要30分钟。解决方案是重新评估你对这些数据的需求(你真的每次都需要这些信息吗?)或者找到提高数据库性能的方法,例如重新组织、索引或缓存数据。

数据库和表的数量也会影响客户机性能,但仅在管理数百个数据库和/或数千个表的大规模情况下,如元数据它本身可能有很多问题需要查询。为了使性能在这个范围内保持平稳,您可以管理Metabase同步其元数据的时间与您连接的数据库。

现在,让我们确保您的Metabase应用程序能够很好地适应规模。

垂直缩放

垂直缩放是暴力手段。Metabase更多的内核和内存,它将有更多的可用资源来完成它的工作。如果遇到与应用程序本身相关的性能问题(即,与数据库的宽度和大小无关),则在功能更强大的计算机上运行Metabase可以提高性能。

也就是说,Metabase已经是开箱即用的高效工具。例如,对于AWS上的starterMetabase实例,我们建议使用平台即服务技术t3.small实例,并从那里扩展。那是一台双核机器,有2GB的内存。4-8gb的计算机应该可以处理数百个用户,如果需要,可以增加内核数量和千兆字节内存。

虽然添加更多的内核和内存会很有效,但是通常最好使用水平伸缩来支持更多的用户。原因是每个Metabase实例都内置了数据库连接限制,以防止实例用请求压倒数据仓库。你可以增加连接数可用于您的实例,但我们仍建议使用多个实例。

水平缩放

水平缩放涉及到将Metabase的多个实例与负载平衡器一起运行,以将流量定向到实例。Metabase是为水平扩展而设置的,因此不需要任何特殊配置来运行Metabase的多个实例。

水平扩展的主要用例是提高可靠性(也称为高可用性),但是水平扩展也可以提高多用户性能。当负载平衡时,高流量、CPU绑定的Metabase实例的某些流量被定向到其他实例时,其性能会更好(更快),因为CPU负载将分布在多台计算机上。

Metabase与本地H2数据库存储你的申请数据(所有的问题,仪表板,日志和其他Metabase数据),但在生产环境中运行时,应升级到关系数据库,如PostgreSQL在单独的服务器上运行。事实上,当水平扩展时,必须使用在单独服务器上运行的关系数据库来存储应用程序数据。这样,Metabase的所有实例都可以共享一个公共数据库。对于所有生产实例,我们建议在单独的服务器上为所有生产实例使用外部数据库,即使您只运行过一个Metabase实例,因此外部数据库不会增加水平扩展的成本。

Metabase使用外部应用程序数据库存储用户会话数据,这样当一个或所有Metabase实例关闭时,用户不必担心丢失已保存的工作,管理员也不必处理配置粘滞会话以确保用户连接到正确的Metabase实例。负载平衡器会将用户路由到一个可用的实例,这样他们就可以继续工作了。

利用基于时间的水平缩放

一些客户根据一天中的时间调整Metabase实例的数量。例如,一些公司会在早上启动Metabase的多个实例,以便在人们登录并运行其上午的仪表板时处理突发的流量,然后在下午(或晚上或周末)关闭这些实例,以节省云开支。

如果您使用我们的弹性部署,您可以配置两者基于资源的缩放触发器基于时间的缩放。对于其他环境,例如 Kubernetes  Google Cloud Platform,您需要参考每个系统的相应文档来设置类似的自动调整规则。

简单的负载平衡

负载平衡器将流量定向到多个Metabase实例,以确保每个请求获得最快的响应。如果Metabase的一个实例暂时关闭,负载平衡器将请求路由到另一个可用实例。

使用Metabase设置负载平衡器很简单。Metabase API公开运行状况检查终结点,/api/health,负载平衡器可以调用它来确定Metabase实例是否已启动并响应请求。如果实例正常,则端点将返回一个HTTP状态代码200 OK。否则,负载平衡器将知道将请求路由到另一个实例。

请参阅我们的指南在AWS弹性架构上运行Metabase查看设置负载平衡器以使用/api/health终结点。

数据仓库调整

构建数据仓库超出了本文的讨论范围,但是您应该知道,Metabase中的查询速度只会与数据库返回数据的速度一样快。如果您遇到的问题需要大量的数据,而这些数据需要很长时间才能检索到,那么无论Metabase有多快,这些查询时间都会影响您的体验。

以下是一些可以提高数据仓库性能的方法:

  • 以预测人们会问的问题的方式组织数据。确定您的使用模式并以一种便于返回组织中常见问题的结果的方式存储数据。编写ETL以创建新表,这些表将来自多个源的频繁查询的数据集中在一起。
  • 调整数据库。阅读数据库的文档,了解如何通过索引、缓存和其他优化来提高数据库的性能。
  • 过滤数据.鼓励人们使用过滤器提问数据。他们还应该利用Metabase的数据探索工具(包括记录预览),这样他们只查询与他们试图回答的问题相关的数据。
  • 决定是使用数据库还是数据仓库。人们通常从使用像MySQL数据库或PostgreSQL。虽然这些数据库的扩展性相当好,但它们通常没有针对Metabase将使用的分析查询类型进行优化。像这样的操作summax当你达到一定的程度时会减速。随着分析应用的增长,您可能会发现需要探索专用的数据仓库,例如 Amazon RedshiftGoogle BigQuery,  Snowflake..

Metabase应用程序最佳实践

以下是一些策略,可以最大限度地利用Metabase应用程序:

  • 只需要你需要的数据.
  • 使用托管关系数据库存储Metabase应用程序数据.
  • 缓存查询.
  • 寻找瓶颈.
  • 增加到Metabase应用程序数据库的最大连接数.
  • 增加到每个数据库的最大连接数.
  • 只在需要时与数据库同步.
  • 升级至Metabase的最新版本.
  • 使您的浏览器保持最新.

只需要你需要的数据

如果人们正在运行大量返回大量记录的查询,那么Metabase的速度是否快并不重要:用户只会以数据仓库返回所请求记录的速度获取数据。有时,人们对仪表板的要求太高了:当一个包含50个问题的仪表板加载时,它会同时发送50个请求数据的请求。根据数据库的大小,返回这些记录可能需要相当长的时间。

图2。使用Metabase中包含的示例数据库中的数据的筛选器小部件的示例仪表板。

但这不是全部。Metabase不会因为您在仪表板中提出更多问题而减慢速度。如果您的问题没有获取大量数据,或者您的数据仓库可以在一秒钟内返回结果,那么50个问题将很快加载。

不过,总的来说,鼓励人们保持仪表盘的重点。仪表板是用来讲述你的数据的故事,你可以用几个问题(甚至一个问题)来讲述一个好故事。利用Metabase的数据探索工具来了解您的数据(例如在表中预览记录的能力),这样您就可以只拨入回答问题所需的记录。

因此,确保每个问题都是完成仪表板所必需的,并且在跨时间或跨空间查询数据时要特别注意,因为您可以通过将问题限制在较短的时间跨度或较小的区域来过滤掉大量不必要的数据。

图3。使用图钉图显示经纬度的示例问题。地理空间数据可以快速累积,从而减慢查询时间,因此只过滤所需的数据非常重要。

使用托管关系数据库存储Metabase应用程序数据

应用程序数据库存储所有问题、仪表板,集合、权限以及与Metabase应用程序相关的其他数据。您可以使用关系数据库(如PostgreSQLMySQL)来管理您的应用程序数据库,但我们推荐一个托管解决方案,如AWS RDSRDS将自动备份,并使您更容易在扩展时调整存储和计算,从而使您少担心一件事。托管数据库解决方案对于自托管的客户特别有用,商业版利用了Metabase的优势审核功能,因为启用审核将增加应用程序数据库中的数据Metabase存储量。

缓存查询

你可以配置缓存存储最近提出的问题的结果,以便不需要重新计算。Metabase将向用户显示结果的时间戳,如果用户想重新运行查询,可以手动刷新问题的结果。缓存适用于不经常更新的结果。

图4。启用缓存以存储问题结果。

寻找瓶颈

一些商业版本提供审计工具用于监视应用程序的使用和性能。例如,您可以查看有多少问题正在被询问,由谁提出,以及这些问题运行了多长时间,这有助于确定任何需要注意的瓶颈。

图5。使用审核工具查看最流行(也是最慢)的问题。

增加到Metabase应用程序数据库的最大连接数

Metabase应用程序数据库的默认连接数MB_APPLICATION_DB_MAX_CONNECTION_POOL_SIZE环境变量,当前默认设置为15如果您的使用经常消耗所有这些连接,则可以通过增加最大连接数来提高性能。或者,您可以通过水平伸缩来增加连接的数量(例如,如果您添加了一个额外的Metabase实例,那么您实际上就向应用程序数据库添加了另外15个连接)。

您可以通过以下方式检查连接数:查看日志,并检查线路,如... App DB connections: 12/15。在该示例中,Metabase正在使用15个可用应用程序数据库连接中的12个。

增加到每个数据库的最大连接数

类似地,单个Metabase实例到每个数据库的默认最大连接数为15,即每个数据库的最大连接数为15,因此,如果已将Metabase连接到两个数据库,则最多可以连接30个。

可以通过更改MB_JDBC_DATA_WAREHOUSE_MAX_CONNECTION_POOL_SIZE环境变量。与上面的应用程序数据库连接一样,您还可以通过水平伸缩来增加连接的数量。每个附加的Metabase实例都会将最大连接数增加15个(或您设置的任何最大值)。要了解更多信息,请参阅我们的环境变量文件.

只在需要时与数据库同步

默认情况下,Metabase每小时执行一次轻量级同步。同步不会复制任何数据。Metabase只是检查以确保表列表,列,并且它在其应用程序数据库中维护的行与数据库中的表、列和行是最新的。

你可以设置这些同步的定时和频率。对于大型数据库,可以考虑限制Metabase执行同步的次数,并将这些同步限制在非高峰时间,尤其是在不经常向数据库添加新表的情况下。

图6。您可以更改Metabase与数据库同步的时间,这可以提高连接到特别大的数据库时的性能。

升级至Metabase的最新版本

如果你还没有,我们推荐你升级至Metabase的最新版本获取最新的性能改进。

通过HTTP/2通过HTTPS服务Metabase

通过HTTPS over HTTP/2Metabase实例提供服务可以提高性能,因为HTTP/1.1上的浏览器可以将每个域的连接限制为大约6个并发连接,而HTTP/2是在单个连接上多路传输的。更多的可用连接无法修复速度较慢的数据库,或线程已用完的重载Metabase实例,但至少您会知道您的浏览器不会限制您的连接。

使您的浏览器保持最新

Metabase是一个web应用程序,可以从最新和最好的浏览器版本中获益,比如 FirefoxChromeEdge, Safari..

支持的部署

建立Metabase的方法有很多种;我们的最爱包括:

  • AWS弹性豆茎:看看我们的弹性部署Metabase建立指南。我们使用Elastic Beanstalk托管内部Metabase应用程序。
  • Docker:参考在Docker上运行Metabase.

Google Cloud PlatformMicrosoft AzureDigital OceanHeroku,以及其他云提供商为托管您的Metabase应用程序提供了其他很好的替代方案。

托管Metabase

如果您不想处理Metabase应用程序的照管和馈送,Metabase提供了一个托管解决方案。您仍然需要确保数据源的性能,但不再需要管理Metabase应用程序的运行。

寻求帮助

如果你还有问题,很可能有人已经有了同样的问题。看看Metabase讨论论坛搜索你的问题。如果你找不到解决办法,请提交你自己的问题。

Metabase中文社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue.js axios 数据不刷新

getServerList(){axios.get(/server/showList).then(function(response){this.servers response.data // 不刷新console.log(response.data)}).catch(function (error) {console.log(error);}); } 打印this:this不是vue对象修改为:getServerList(){axi…

Mysql各种缓冲区的功能及之间的联系

buffer poolmysql数据存放在磁盘里面,如果每次查询都直接从磁盘里面查询,会影响性能,因此需要内存态缓存池。另外缓存池的淘汰机制不是基础LRU,而是是改进版LRU,防止大量临时缓存挤出热点数据。buffer pool读缓存分为老…

代码随想录算法训练营第五十三天| LeetCode1143. 最长公共子序列、LeetCode1035. 不相交的线、LeetCode53. 最大子数组和

一、LeetCode1143. 最长公共子序列 1:题目描述(1143. 最长公共子序列) 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一…

Leetcode 1687. 从仓库到码头运输箱子 [四种解法] 动态规划 从朴素出发详细剖析优化步骤

你有一辆货运卡车,你需要用这一辆车把一些箱子从仓库运送到码头。这辆卡车每次运输有 箱子数目的限制 和 总重量的限制 。给你一个箱子数组 boxes 和三个整数 portsCount, maxBoxes 和 maxWeight ,其中 boxes[i] [ports​​i​, weighti] 。ports​​i …

网页制作课作业基于HTML+CSS+JavaScript+jquery仿慕课网教学培训网站设计实例 企业网站制作

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

【强化学习论文】离线元强化学习中基于对比学习的稳定表示

离线元强化学习中基于对比学习的稳定表示 最近几年来深度强化学习在算法上有很多进展,已初步用在很多场景中。目前深度强化学习有两个重要的问题:数据利用问题,泛化能力。深度强化学习通常要与环境进行大量的交互,通常效率较低&am…

Redis数据库 ---- 五种数据类型常用命令汇总

❤️ 作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者🐟 个人主页 :https://blog.csdn.net/qq_52007481⭐ 个人社区:【小鱼干爱编程】 文章目录RedisRedis键(key)数据库相关…

Java面向对象:对象的概念及面向对象的三个基本特征

面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。…

element-ui 中 el-tree 和 el-table 样式调整

使用 el-tree 和 el-table 时&#xff0c;往往需要根据项目整体环境做一些样式调整&#xff0c;记录一下常用样式。 el-tree <!-- 树结构 --> <el-treeref"tree":data"data":props"defaultProps":default-expand-all"isExpanded&…

51单片机烟雾报警器mq2烟雾报警ADC0832采集实践制作DIY- GC0026-烟雾报警器

一、功能说明&#xff1a; 基于51单片机设计-烟雾报警器 功能介绍&#xff1a; STC89C52单片机&#xff08;AT89C51/52&#xff09;lcd1602adc0832mq2烟雾传感器蜂鸣器2个按键设定报警阈值 1.通过ADC0832采集MQ2烟雾输出的电压换算位烟雾浓度0~100 2.如果烟雾浓度超过设定…

机器学习9衡量线性回归法的指标,MSE,RMS,MAE

文章目录一、衡量线性回归法的指标&#xff0c;MSE,RMS,MAE1、MSE均方误差&#xff08;Mean Squared Error&#xff09;2、RSE均方误差&#xff08;Root Mean Squared Error&#xff09;3、平均绝对误差MAE&#xff08;Mean Absolute Error&#xff09;二、演示&#xff1a;三、…

清华、北大、中科大、UMA、MSU五位博士生畅聊深度学习理论

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入&#xff01;伴随着深度学习的蓬勃发展&#xff0c;进入人们视线的好像都是算法或AlphaGo等应用层面的东西。但是在理论上&#xff0c;深度学习似乎却没有很出圈的相关理论。因此&#xff0c;部分人也在批评深度学习是缺乏理论…

易基因课程回顾|表观遗传学和表观育种在品种改良中的应用研究

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 传统作物育种包括杂交、选择所需性状的遗传变异&#xff0c;导致遗传基础缩窄和遗传多样性缺失&#xff0c;从而阻碍作物改良。表型性状受遗传学和表观遗传学影响&#xff0c;利用表观遗传…

简单个人网页设计作业 静态HTML个人主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码 个人网页制作 学生个人网页Dreamweaver设计作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

Spring框架(十二):实现日志功能通过SpringBean后处理器

实现日志功能通过SpringBean后处理器引子需求分析实现Log功能Spring Bean的后置处理器引子 痛定思痛&#xff0c;主要问题出现在自己雀氏不熟悉框架底层、一些面试题&#xff0c;以及sql的一些情况淡忘了。 本章节的开始是对于过去的重新回顾&#xff0c;当然&#xff0c;我也…

技术分享 | 使用 Zabbix + Grafana 搭建服务器监控系统

搭建 Linux 服务器监控的目的是防止以下现象&#xff1a;自己有一台阿里云服务器内存是 2g 的 , 多开一些软件就会把内存和 CPU 使用率弄的很高&#xff0c;最终导致服务器卡死。 所以基于这个痛点&#xff0c;想知道当前的 CPU 和内存是多少。阿里云 ECS 控制台中也提供对服务…

【自适应滤波】基于FxLMS的样条自适应滤波算法分析(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

DockerCompose安装、使用及微服务部署实操

1 什么是DockerCompose DockerCompose是基于Compose文件帮助我们快速的部署分布式应用。 解决容器需手动一个个创建和运行的问题&#xff01; Compose文件本质上是一个文本文件&#xff0c;其通过指令定义集群中的每个容器如何运行。 我们可以将其看做是将多个docker run命令…

RTLinux的介绍

RTLinux RTLinux是由美国新墨西哥州的fsmlabs(finite state machine labs, 有限状态机实验室)公司开发的、利用linux开发的面向实时和嵌入式应用的操作系统。在rtlinux宣言中&#xff0c;这样描述rtlinux &#xff1a; rtlinux is the hard realtime variant of linux that mak…

基于LLVM的AFL分析

简介 Fuzzing是指通过构造测试输入&#xff0c;对软件进行大量测试来发现软件中的漏洞的一种模糊测试方法。当前大多数远程代码执行和特权提升等比较严重的漏洞都是使用Fuzzing技术挖掘的&#xff0c;Fuzzing技术被证明是当前鉴别软件安全问题方面最强大测试技术。 然而Fuzzin…