博客 / 用户故事

快速、功能丰富且可变:ClickHouse 为 Darwinium 的安全和欺诈分析用例提供支持

author avatar
Ananth Gundabattula
2022年7月27日 - 15 分钟阅读

我们欢迎 Darwinium 作为嘉宾来到我们的博客。请继续阅读,了解 Darwinium 如何使用 ClickHouse,以及最重要的是,他们为什么选择 ClickHouse 作为其数据库引擎。

什么是 Darwinium?

Darwinium 是一个数字风险平台,支持实时旅程编排和持续自适应信任,用于数字用户身份验证。它的构建旨在解决随时发生的复杂业务问题,适应对手,无论他们攻击速度有多快。该平台专为开发人员和数据科学家设计,可以轻松地进行测试、建模和部署,而无需考虑业务流程或组织约束。

Darwinium 可以与您的内容分发网络 (CDN) 或代理集成,作为 Darwinium 托管的解决方案,或者选择一键安装到新的或现有的 Kubernetes 集群上。

安全和欺诈领域的挑战

在处理网络安全和欺诈领域时,Darwinium 需要以下能力:

以高吞吐量摄取和处理数据

  • 拥有一个可以处理高吞吐量(和快速)写入的数据库后端是一项基本要求。此外,能够尽快提供摄取的数据进行分析,是当今和未来数字驱动工作负载的期望。

处理大量数据

  • Darwinium 从头开始构建于旅程的概念之上;其中持续监控数字资产。这导致了大量数据,因为 Darwinium 实时引擎需要持续分析和监控数字资产。数据库需要能够大规模分析数据。此外,规模问题也来自于需要处理整整一年的数据。例如,需要查询一年的数据来查看单张信用卡的行为。另一个用例可能是帐户管理员分析多年的数据,以了解网站所有登录的异常值。
  • 技术类型的欺诈和安全挑战,包括恶意软件、远程桌面和机器人,本质上是高度取证的,需要存储旅程步骤中可用的大多数数字数据点,以供未来调查,然后才能查明有助于检测威胁的模式。
  • Darwinium 强调持续分析和监控数字旅程的重要性,以便全面了解用户意图。这导致了完成的每个旅程所需的存储记录之间存在多对一的关系。此外,某些类型的欺诈,例如帐户接管、诈骗和社交工程,需要长时间的“正常”行为数据,以便与现在的交互进行比较,以检测变化。存储多步骤旅程数据和长时间范围数据意味着记录数量和所需存储量的增加。
  • 结果是大量数据:来自每个记录存储的数据量、存储的记录与进行的旅程之间的多对一关系,以及调查所需的长回溯时间。

具有以复杂方式分析数据的能力

  • 分析欺诈数据的性质需要复杂的交互式分析。拥有功能丰富、分析能力强的堆栈会产生很大影响;从而转化为降低人力成本。拥有一个可以在 1 秒或更短的时间内响应的数据库系统,同时提供功能丰富的功能工具箱,是现代数据库系统需要支持的真正引人注目的用例。

Darwinium 为什么选择 ClickHouse?

Darwinium 在最终选择 ClickHouse 作为数据库引擎之前,评估了一些解决方案。导致这一决定的原因有几个。

以下部分使用一个名为 events 的假设数据库表来表示最终用户数字旅程中的事件。此表中的一行表示为数字旅程中的给定交互收集的所有属性。事件可以包含的属性示例包括设备指纹、事件生成的城市等等。

更简单的数据管道

可变引擎带来更简单的数据管道

可变数据库引擎确实简化了数据摄取管道的复杂性。虽然像 HDFS 这样的不可变存储文件系统以及可以在这些不可变存储层之上执行的查询处理引擎有其优势,但当需要为可变数据处理模式设计和实现数据管道时,它们确实会引入额外的实现复杂性。

让我们以在消息/排队系统中生成数据后 5 秒的时间窗口内摄取数据为例。我们讨论的是网络安全分析师/欺诈分析师需要在事件生成后不超过 5 秒的时间内查看所有登录尝试的详细信息。使用不可变存储文件系统意味着:首先将数据“摄取”到以“.”扩展名开头的文件中,摄取流数据,并在时间窗口过后关闭文件。最后,需要将文件重命名为有效文件名,以便查询处理引擎可以考虑它。此操作必须在管道需要为单个表维护的所有数据分区中进行处理。

使用 ClickHouse,数据管道逻辑得到简化,并且仅处理写入的“流式”方面,而不是所有这些复杂性。因此,ClickHouse 实现了更简单的写入设计模式,就像任何其他新时代的 Data Lake 系统(如 Hudi 等)一样,但具有更简单的开发者体验。

选择表引擎可以简化数据管道

为了向有兴趣查看聚合的分析师提供数据摘要,当今的 Lakehouse 架构中采用了各种实现模式。ClickHouse 解决聚合等模式的方法既简单又强大。

让我们以需要每 5 分钟定期时间窗口汇总每个城市的数据为例。可以使用 AggregatingMergeTree 引擎定义一个城市实体聚合摘要表,该引擎可以“侦听” “events” 表中的更改,并累积和汇总可以到达聚合的时间粒度的城市摘要。这从根本上简化了数据摄取逻辑,因为我们能够消除对单独的数据管道的需求,以创建聚合摘要(以便更快地提供聚合,而不是全表扫描)。然后,数据管道可以专注于仅将数据写入 “events” 表,并且 “CitySummary” 表将可用于分析,由 ClickHouse 管理。

高吞吐量写入,CPU 核心读取始终非常低

像 Darwinium 这样的数字风险引擎每个安装每秒可以处理数千次写入。最重要的是,Darwinium 对每次数字交互都采用宽表方法。Darwinium 为数字旅程的每次交互中捕获的每个事件收集数千个属性。单个 ClickHouse 服务器可以轻松处理每秒数千次写入,并且多个数据管道写入器在任何给定时刻都写入单个 ClickHouse 服务器。此外,ClickHouse 服务器端指标显示,在仅执行写入操作时,用户空间和系统空间的内核使用率始终非常低(<5%)。这为查询处理工作负载留下了充足的 CPU 分配。

因此,ClickHouse 非常适合通常与安全和欺诈领域用例相关的写入密集型工作负载。

支持复杂数据类型

Darwinium 实时引擎在数字交互中为每个事件收集的一些数据点需要地图数据结构表示。此类地图的一个示例是给定数字交互中执行的模型生成的信号集。Darwinium 分析用例要求分析师需要能够在分析数字交互时生成细粒度的查询过滤器表达式。例如,查询表达式可能涉及查看特定数字交互类型队列的信号分布计数。如果不是地图数据结构以及其上的查询能力,我们将需要与可以生成的可能信号数量一样多的列(因为每个信号都特定于在该特定数字交互中执行的模型。)因此,地图和数组成为我们构建交互式分析的基础要求。ClickHouse 非常易于交互,它支持复杂数据类型以及可以使用这些数据结构执行的查询表达式。

欺诈和安全领域,比大多数行业更期望体验到模型、风险评估和生成信号的高流失率。这些会每月动态变化,以适应业务目标和不断变化的威胁。数据存储解决方案需要能够以一种无需破坏查询、添加或使现有架构过载的方式来处理这些不断变化的配置。ClickHouse Map 和 Array 数据类型是存储这些类型风险评估的状态和输出的理想选择。这些数据点上关联函数的丰富性提供了分析能力,可以解释和监控这些重要输出,从而经常消除使用更面向分析的语言(例如 Python)进行单独下游处理的需求。

最近添加的 JSON 类型支持使 Darwinium 的分析要求更进一步。通过对某些数字交互事件使用 JSON 列类型,拥有一个“读取时模式”模式的机制有助于构建 Darwinium 分析组件的多租户设置。

成本感知存储模式

虽然当今数字系统的期望在延迟和查询能力方面变得越来越高,但对运行成本尽可能小的期望也是如此。特别是,安全和欺诈数据分析用例符合边际利益递减原则。随着数字交互中事件的生命周期变长,分析它的需求也随之降低。当然,偶尔需要分析整整一年的数据,但这可能不会是持续的要求。

ClickHouse 支持翻滚数据保留窗口的概念,其中“热”数据最初可以放置在快速访问介质(如本地 SSD)上,并且能够随后将数据移动到相对较慢但更便宜的存储系统(如 S3)(这只是在表级别配置正确的数据保留策略的问题)。

云原生

如果不能在至少一家主要的云供应商中部署和运行,那么任何新时代的数字平台都不能声称是完整的解决方案。Darwinium 也不例外。

除了云原生之外,还需要在本地甚至开发人员的笔记本电脑中部署 Darwinium 堆栈。ClickHouse 可以从低端笔记本电脑或本地节点集群运行,也可以在任何可能的硬件配置(即使在单个云提供商(如 AWS)上)上运行,这一事实极大地促进了 Darwinium 部署用例。

使 ClickHouse 成为 Darwinium 用例的云原生产品的其他一些方面是

  • 支持将 S3(在 AWS 的情况下)作为磁盘类型。
  • 配置元数据路径(和可缓存元数据路径)的能力表明,在使 ClickHouse 成为云原生方面投入了大量设计思考。
  • 管理在使用 S3 磁盘时如何配置 AWS 凭证等机密(以 AWS 为例云提供商)。
  • Darwinium 团队能够通过使用 Kubernetes 生态系统工具(如 Replicated)来安装、配置和升级 ClickHouse。

ClickHouse 云服务产品即将作为交钥匙解决方案发布,这将使情况更进一步。管理 ClickHouse 实例的所有复杂性都大大简化了;变得像配置写入或读取 API 端点,然后简单地开始使用它一样简单。

分布式和高可用

欺诈和安全用例生成的信息本质上无法存储在单个节点上。此外,以尽可能并行的方式处理查询将更有利。ClickHouse 可以利用其运行的单个节点上所有可用的内核来处理查询。此外,单个表的数据可以跨多个节点进行分片。这有助于 Darwinium 用例通过使用给定节点集群中的所有内核,使用尽可能多的可用计算能力来处理尽可能多的查询。

在数据被摄取时复制数据会导致为 Darwinium 客户提供更高的正常运行时间。这方面显着降低了 AWS 节点意外关闭并因此丢失托管在其本地 SSD 上的所有数据的风险。因此,复制降低了云构造的风险,并为分配查询处理工作负载提供了条件。

丰富的功能目录

虽然拥有分布式计算范例是有利的,但拥有丰富的功能进一步增强了这些优势,并大大减少了安全或欺诈分析师得出分析结论所需的时间。可用于 Arrays 和 Maps 等集合的功能目录、用户定义函数以及 lambda 的概念,为分析网络安全和欺诈数据集上的数据提供了新方法。

SQL 作为更简单的接口

虽然有一些数据库/搜索系统可以索引数据,但拥有一个提供 SQL 作为接口来分析和查询数据的系统会产生很大影响。Darwinium 允许分析师除了取证仪表板和交互式分析屏幕外,还可以使用 jupyter notebook 体验构建自定义数据分析视图和图表。SQL 是众所周知且经过验证的“语言”之一,因此是实现此类自定义数据分析用例的引人注目的查询接口。

这是在单个节点上托管大约 3k 列的非常宽的表上运行的 4000 万条条目数据集的查询延迟的图示。以下是关于下图的一些评论

  • 查询涉及对随机选择的列的 group by 表达式。
  • 读数是在只有几个分析师查询并行运行时(显示为“较低负载”)、在几个和少于 10 个并行运行的分析师查询之间(显示为“中等负载”)以及超过 10 个(显示为“非常高负载”)时进行的。
  • 请注意,第一个单元格是来自数据集冷状态的读数,即数据集是第一次被命中,并且绝对没有涉及缓存。
  • 第一行表示 SQL 查询,当 5 个过滤器表达式是 SQL 查询的一部分时;第二行表示当有 6 个过滤器表达式和一个复杂数据类型时;第三行表示当有 7 列包含两个复杂数据类型时。
  • 请注意,y 轴刻度在所有这 3 行数据中并不相同。每列代表在应用查询过滤器之前用于过滤数据的时间范围。

DarwiniumStats.png

结论

在分析了其他几个数据库系统并权衡了每个系统的优缺点之后,Darwinium 团队选择 ClickHouse 作为首选数据库引擎,以支持其针对欺诈和网络安全分析师的交互式分析用例。本质上,它是一个首选的数据库系统,因为 ClickHouse 是

  • 快速(低延迟和高吞吐量摄取)。
  • 灵活,具有成本感知的部署模型。
  • 功能丰富。
  • 云就绪
分享这篇文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云服务!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。