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

图1。连接到多个数据库及其应用程序数据库的单个Metabase实例,该数据库存储问题、仪表板和其他特定于Metabase的数据。随着增长,可以轻松添加更多Metabase实例。
本文提供了有关如何随着用户和数据源数量的增加而在生产中保持Metabase平稳运行的高级指导和最佳实践。每个数据系统都是不同的,所以我们只能在较高的层次上讨论扩展策略,但是您应该能够将这些策略转换为您特定的环境和使用情况。
Metabase在垂直和水平方向上都可以很好地缩放,但它只是数据仓库,系统的总体性能将取决于系统的组成和使用模式。影响您使用Metabase体验的主要因素包括:
例如,如果问题需要运行数据库需要30分钟才能完成的查询:只需要30分钟。解决方案是重新评估你对这些数据的需求(你真的每次都需要这些信息吗?)或者找到提高数据库性能的方法,例如重新组织、索引或缓存数据。
数据库和表的数量也会影响客户机性能,但仅在管理数百个数据库和/或数千个表的大规模情况下,如元数据它本身可能有很多问题需要查询。为了使性能在这个范围内保持平稳,您可以管理Metabase同步其元数据的时间与您连接的数据库。
现在,让我们确保您的Metabase应用程序能够很好地适应规模。
垂直缩放是暴力手段。给Metabase更多的内核和内存,它将有更多的可用资源来完成它的工作。如果遇到与应用程序本身相关的性能问题(即,与数据库的宽度和大小无关),则在功能更强大的计算机上运行Metabase可以提高性能。
也就是说,Metabase已经是开箱即用的高效工具。例如,对于AWS上的starterMetabase实例,我们建议使用平台即服务技术在t3.small实例,并从那里扩展。那是一台双核机器,有2GB的内存。4-8gb的计算机应该可以处理数百个用户,如果需要,可以增加内核数量和千兆字节内存。
虽然添加更多的内核和内存会很有效,但是通常最好使用水平伸缩来支持更多的用户。原因是每个Metabase实例都内置了数据库连接限制,以防止实例用请求压倒数据仓库。你可以增加连接数可用于您的实例,但我们仍建议使用多个实例。
水平缩放涉及到将Metabase的多个实例与负载平衡器一起运行,以将流量定向到实例。Metabase是为水平扩展而设置的,因此不需要任何特殊配置来运行Metabase的多个实例。
水平扩展的主要用例是提高可靠性(也称为“高可用性