DoubleCloud 正在关闭。利用限时免费迁移服务迁移到 ClickHouse。立即联系我们 ->->

博客 / 用户故事

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

author avatar
Ananth Gundabattula
2022 年 7 月 27 日

我们很高兴欢迎 Darwinium 作为我们博客的嘉宾。继续阅读以了解 Darwinium 如何使用 ClickHouse,最重要的是,他们为何选择 ClickHouse 作为他们的数据库引擎。

什么是 Darwinium?

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

Darwinium 集成到您的内容交付网络 (CDN) 或代理中,作为 Darwinium 托管的解决方案,或可选的一次点击安装到新的或现有的 Kubernetes 集群中。

安全和欺诈领域的挑战

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

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

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

处理大量数据

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

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

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

为什么 Darwinium 选择 ClickHouse?

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

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

更简单的 数据管道

可变引擎导致更简单的 数据管道

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

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

借助 ClickHouse, 数据管道逻辑得到简化,并且只处理写入的“流式”方面,而不是所有这些复杂性。因此,ClickHouse 使得写入设计模式变得更简单,就像任何其他新型数据湖系统(如 Hudi 等)一样,但开发人员体验更简单。

### 表引擎的选择导致更简单的 数据管道 为了为有兴趣查看聚合的分析师提供数据摘要,当今的湖仓架构中采用了各种实现模式。ClickHouse 解决诸如聚合之类的模式的方法简单但功能强大。

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

高吞吐量写入,CPU 内核读数始终保持极低

像 Darwinium 这样的数字风险引擎,每个安装可以处理每秒数千次写入。除此之外,Darwinium 采用了一种宽表方法来记录每个数字交互。Darwinium 在每次数字旅程的交互中捕获的每个事件中收集数千个属性。单个 ClickHouse 服务器可以轻松处理每秒数千次写入,多个数据管道写入器可以同时写入单个 ClickHouse 服务器。此外,ClickHouse 服务器端指标显示,在仅执行写入操作时,用户空间和系统空间核心使用率始终很低(< 5%)。这为查询处理工作负载留下了充足的 CPU 分配。

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

对复杂数据类型的支持

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

与大多数行业相比,欺诈和安全领域预计将经历模型、风险评估和生成的信号的高速更新。这些会根据业务目标和不断变化的威胁每月动态变化。数据存储解决方案需要能够以一种不需要破坏查询、添加或重载现有模式的方式处理这些不断变化的配置。ClickHouse 映射和数组数据类型是存储这些类型的风险评估的状态和输出的理想候选者。这些数据点上相关函数的丰富性提供了分析这些重要输出所需的分析能力,这通常不需要使用更多面向分析的语言(例如 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 上托管的所有数据的风险。因此,复制允许在云结构上降低风险,并提供用于分发查询处理工作负载的功能。

丰富的函数目录

虽然拥有分布式计算范式是有利的,但拥有丰富的函数数量进一步增强了这些优势,并极大地减少了安全或欺诈分析师得出分析结论所花费的时间。可用于集合(如数组和映射)、用户定义函数以及 lambda 概念的函数目录,为分析网络安全和欺诈数据集提供了新的方法。

SQL 作为更简单的接口

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

以下是对在托管大约 3,000 列的超宽表的单个节点上对 4,000 万个条目数据集运行的查询延迟的图示表示。以下是一些关于下图的评论。

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

DarwiniumStats.png

结论

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

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

订阅我们的时事通讯

随时了解功能发布、产品路线图、支持和云服务!
正在加载表单...

最近的文章

关注我们
Twitter imageSlack imageGitHub image
Telegram imageMeetup imageRss image