我们为什么选择Scale-Out数据仓库进行实时分析

2021-05-31 Patsnap. 互联网

工业:人工智能

作者:

  • 曲明星(PatSnap数据仓库团队建筑师)
  • 梁丽(PatSnap数据仓库团队高级DBA)

Transcreator:Caitin陈编辑:汤姆政府高级官员

实时数据流工具和技术

Patsnap.是一个集1.5亿+专利数据记录、1.7亿+化学结构数据记录、数千条财经新闻、科技文献、市场报告、投资信息记录于一体的全球专利检索数据库。我们的用户可以搜索、浏览和翻译专利,并生成专利分析报告。我们帮助50多个国家的10,000多名客户做出更好的创新决策。

随着业务的发展,我们的数据规模迅速增长。之前,我们使用Segment + Amazon Redshift数据分析架构,但它提供的数据并不可靠。我们需要一个数据分析工具来提供更多的当前数据。在我们比较了多个解之后,我们选择了Tidb.+Apache Flink实时数据仓库解决方案。它是快速和水平的可扩展性。现在,我们可以在几分钟内执行数据分析,并制作更快,更聪明的业务决策。

在这篇文章中,我们将分享为什么我们采用TIDB + Flink,我们如何使用此数据仓库以及它带来的好处。

我们的痛苦

随着我们业务的发展和用户的快速增长,在业务运营过程中,我们非常依赖实时数据分析和结果报告来分析用户行为。我们需要实时的市场数据,特定场景的运营数据,以及流量和服务分析。

最初,我们使用Segment + Amazon Redshift数据分析架构,只构建了运营数据存储(ODS)层。我们无法控制数据写入规则和模式。此外,我们需要为ODS编写复杂的提取-转换-加载(ETL)作业脚本。为了完成来自上层应用程序的数据请求,我们需要根据应用程序需求计算各种指标。红移存储了大量的数据,计算数据速度很慢。这降低了对外服务效率。

在我们比较多种解决方案后,我们决定使用TIDB + Flink实时数据仓库解决方案来提高我们的数据分析能力。

Tidb.是一个开源、分布式、混合事务/分析处理(HTAP)数据库。它是在线事务处理(OLTP)和在线分析处理(OLAP)工作负载的一站式解决方案。TiDB的架构集成了行存储和列存储。它的存储使用分离的节点,以确保OLTP和OLAP工作负载不会相互干扰。

Apache Flink是一个低延迟、高吞吐量、统一流和批处理的大数据计算引擎。它广泛应用于对实时计算要求高的场景,并提供精确一次的语义。

将TIDB和Flink与实时数据仓库结合起来的这些优点:

  • 速度快。您可以以秒为单位处理流数据并执行实时数据分析。
  • 水平可扩展性。您可以通过向Flink和TiDB添加节点来提高计算能力。
  • 高可用性。使用TiDB,如果一个实例失败,集群服务不受影响,数据仍然完整和可用。Flink支持针对作业或实例的多种备份和恢复措施。
  • 学习和配置成本低。TiDB与MySQL协议高度兼容。在Flink 1.11中,您可以使用Flink SQL语法和强大的连接器来编写和提交任务。

当我们将Segment + Redshift架构替换为Kinesis + Flink + TiDB时,我们发现我们不需要在数据库中构建ODS层,而只需要在Amazon Simple Storage Service (S3)存储中。

作为预先计算单元,Flink为应用程序构建了Flink ETL作业。这完全控制数据保存规则并定制模式;也就是说,它只清理应用程序侧重于的度量标准,并将它们写入TIDB以进行分析和查询。

我们在TiDB之上构建了三个层:数据仓库细节(DWD)、数据仓库服务(DWS)和分析数据存储(ADS)。这些层提供应用程序统计信息和列表需求。它们基于用户、租户、区域和应用程序指标,以及以分钟或天为单位的时间窗口。上层应用程序可以直接使用构造的数据,并在几秒钟内执行实时分析。

PatSnap实时分析平台

PatSnap数据分析平台架构

这个实时分析平台架构真正实现实时数据服务.我们使用它来分析和跟踪用户行为,并实时分析租户行为。为我们的业务运营提供实时数据支持。

采用TiDB + Flink架构后,我们发现:

  • 入站数据、入站规则和计算复杂度大大降低。
  • 查询,更新和写入要快得多。
  • 合理的数据分层大大简化了基于tidb的实时数据仓库,使开发、扩展和维护更加容易。我们对复杂报表的查询性能显著提高。在许多应用场景中,查询的数据通用性大大提高。以前,在生成一些数据之后,需要花费一天时间来检索用于业务的查询。但现在,它们几乎是实时分析。
  • 此解决方案满足不同特设查询的要求,我们不需要等待Redshift预编译。

如果你想知道更多关于我们故事的细节或有任何问题,欢迎加入Slack上的TiDB社区并发送您的反馈。

准备好开始使用TiDB了吗?