分析不再仅仅是为了内部利益相关者。如果你正在为客户构建分析应用程序,你可能想知道适合你的数据库后端是什么。
你的本能可能是使用你所知道的,比如 PostgreSQL 或 MySQL。你甚至可能考虑将数据仓库扩展到其核心 BI 仪表板和报告之外。然而,为外部用户进行分析是一项重要的功能,因此你需要合适的工具来完成这项工作。
回答这个问题的关键在于用户体验。以下是你的外部分析应用程序用户的一些关键技术考虑因素。
使用 Apache Druid 避免延迟
在队列中处理查询的等待游戏可能很烦人。延迟的根本原因归结于你正在分析的数据量、数据库的处理能力、用户和 API 调用的数量,以及数据库跟上应用程序的能力。
当有大量数据时,有一些方法可以使用任何通用的 在线分析处理 (OLAP) 数据库构建交互式数据体验,但它们是有代价的。预计算查询使架构非常昂贵且僵化。首先聚合数据可能会最大限度地减少洞察力。将分析的数据限制为仅最近发生的事件并不能为你的用户提供完整的画面。
“不妥协”的答案是针对大规模交互性而优化的架构和数据格式,这正是 Apache Druid(一个旨在为现代分析应用程序提供支持的实时数据库)所提供的。
- 首先,Druid 具有独特的分布式和弹性架构,可以将共享数据层中的数据预取到近乎无限的数据服务器集群中。这种架构比像云数据仓库这样的解耦查询引擎具有更快的性能,因为没有数据需要移动,并且比像 PostgreSQL 和 MySQL 这样的纵向扩展数据库具有更好的可扩展性。
- 其次,Druid 采用自动(有时称为“自动魔法”)多级索引,内置于数据格式中,以驱动每个核心更多的查询。这超越了典型的 OLAP 列式格式,增加了全局索引、数据字典和位图索引。这最大限度地提高了 CPU 周期以实现更快的处理。
高可用性不能是“锦上添花”
如果你和你的开发团队为内部报告构建后端,那么如果它宕机几分钟甚至更长时间,真的有关系吗? 并非如此。这就是为什么在传统的 OLAP 数据库和数据仓库中,总是可以容忍计划外停机和维护窗口。
但是现在你的团队正在为客户构建外部分析应用程序。他们会注意到中断,这会影响客户满意度、收入,当然还有你的周末。这就是为什么弹性(包括高可用性和数据持久性)需要成为外部分析应用程序数据库的首要考虑因素。
重新思考弹性需要考虑设计标准。你能否防止节点或集群范围的故障?丢失数据会有多糟糕,以及保护你的应用程序和数据需要做哪些工作?
服务器会发生故障。构建弹性的默认方法是复制节点并记住 进行备份。但是,如果你正在为客户构建应用程序,那么对数据丢失的敏感度要高得多。偶尔备份根本不够用。
最简单的答案内置于 Apache Druid 的核心架构中。Apache Druid 旨在承受任何情况而不会丢失数据(即使是最近发生的事件),它具有强大而简单的弹性方法。
Druid 基于对象存储中的共享数据,实现了基于自动多级复制的高可用性 (HA) 和持久性。它启用了你期望的 HA 属性,以及你可以认为的持续备份,即使你丢失了整个集群,也可以自动保护和恢复数据库的最新状态。
更多用户应该是一件好事
最好的应用程序拥有最活跃的用户和引人入胜的体验,出于这些原因,为高并发性构建后端非常重要。你最不希望看到的是客户因应用程序卡顿而感到沮丧。为内部报告构建架构是不同的,因为并发用户数量要少得多且有限。现实情况是,你用于内部报告的数据库可能根本不适合高并发应用程序。
为高并发性构建数据库架构的关键在于在 CPU 使用率、可扩展性和成本之间取得适当的平衡。解决并发性的默认答案是投入更多硬件。逻辑表明,如果你增加 CPU 的数量,你将能够运行更多查询。虽然这是事实,但这也可能是一种成本高昂的方法。
更好的方法是查看像 Apache Druid 这样的数据库,它具有优化的存储和查询引擎,可以降低 CPU 使用率。关键词是“优化”。数据库不应读取不必要的数据。使用一些可以让你的基础设施在相同的时间跨度内处理更多查询的东西。
节省资金是开发人员为他们的外部分析应用程序转向 Apache Druid 的一个重要原因。Apache Druid 具有高度优化的数据格式,该格式结合了来自搜索引擎领域的多级索引,以及数据缩减算法,以最大限度地减少所需的处理量。
最终结果是,Apache Druid 提供了比其他任何产品都更高效的处理能力。它可以支持每秒从数十到数千个查询,规模从 TB 级甚至 PB 级。
构建你今天需要的东西,但要使其面向未来
你的外部分析应用程序对你的用户至关重要。构建正确的数据架构非常重要。
你最不希望的就是从错误的数据库开始,然后在扩展时处理各种麻烦。值得庆幸的是,Apache Druid 可以从小规模开始,并轻松扩展以支持任何可以想象的应用程序。Apache Druid 拥有优秀的文档,当然它是开源的,因此你可以尝试并快速上手。
评论已关闭。