将高级版DNS 365导入ClickHouse中 | WhoisXML API



WhoisXML API Blog

将高级版DNS 365导入ClickHouse中

本项目旨在将 DNS_Premium_365 数据集上传到本地 ClickHouse 数据库中,以实现高效、优化和快速查询功能。

方法

解压

Premium DNS 文件非常大,如使用单线程工具如 gzip 解压缩将花费很长时间,且未压缩的数据可能超过 1TB。因此,我们推荐使用多线程压缩/解压缩工具,如 pigz,地址https://zlib.net/pigz/ ,它可以利用系统的多核,提高解压缩时间达70%以上。

数据预处理

我们使用 shell 脚本处理了 2024 年 3 月份 DNS_Premium_365 数据集中的 17 个 .gz 文件。每个文件在解压后都记录了行数和大小,以验证数据的完整性并为后续处理做好准备。

Data Preprocessing

顶级域名预过滤(可选)

使用 shell 脚本从解压后的文件中过滤出我们感兴趣的顶级域名(TLD),生成相应的域名列表。在数据准备阶段这一步保证质量来说至关重要。我们使用的顶级域名包括:["com", "org", "net", "ru", "de", "cn", "uk", "br", "jp", "ai", "io", "fr", "it", "ir", "il", "ua", "kp", "xyz", "online", "top", "shop", "site", "icu", "club", "store", "vip"]。

TLD Pre-Filtering

ClickHouse 数据库处理

安装和初始化

请参阅 ClickHouse 官方文档了解安装过程:ClickHouse 快速入门,https://clickhouse.com/docs/en/getting-started/quick-start。

Installation and Initialization

数据库创建

执行 SQL 命令创建 production_db 数据库: ./clickhouse client --query="CREATE DATABASE production_db

数据表设计与导入

根据客户需求和数据结构创建表格。以下是创建表格示例:

./clickhouse client --query="CREATE TABLE production_db.domain_new2 (domain String, timestamp UInt64, ip String) ENGINE = MergeTree() ORDER BY domain"

脚本用于自动处理 17 个 DNS 文件,迭代创建相应的表格并插入数据。

Data Table Design and Import

使用案例示例

  1. 数据上传到 ClickHouse 后,可以使用 SHOW DATABASES 和 USE your_database 命令选择数据库,也可以使用 SHOW TABLES 查看现有表格。
select database
  1. 在 ClickHouse 中可以使用 SQL 命令进行数据分析,如搜索特定域名或 IP 地址。示例如下,以下命令在 8.343 秒内检索到 12 亿个带有 .com 顶级域名(TLD)的 FQDN:
retrieve 1.20 billion FQDNs with the .com top-level domain (TLD) in 8.343 seconds
  1. 脚本可以在所有表格中查找特定的域名或 IP 地址。以下示例是寻遍 19 个表格查找的以 104.154.* 开头的 IP:
iterate through 19 tables to find ip that startswith 104.154.*

总结

本项目成功利用 ClickHouse 和自动化脚本高效处理和分析大量域名和 IP 地址数据。通过使用 SQL 命令和脚本进行自动化表格创建和批量数据插入,无缝进行了数据管理。在所有表格中进行数据搜索以识别特定域名或 IP 地址的能力展示了显著的分析能力。展望未来,这些方法可以扩展和适用于更大的数据集,进一步验证了其在数据处理和分析任务中的有效性。

免费试用我们的WhoisXML API
开始