首页
学习
活动
专区
圈层
工具
发布

基于 StarRocks + Iceberg,TRM Labs 构建 PB 级数据分析平台实践

我们需要在多个站点之间共享区块链分析数据,而 BigQuery 作为托管服务,并不适合这一需求。同时,面向用户的查询工作负载也需要全新的扩展方式。...在高并发场景下,仅靠 BigQuery 实现 P95 延迟低于 3 秒,需要投入大量计算资源。而将这类负载迁移至分布式 Postgres,仅存储成本就非常高。...基于使用 BigQuery 和 Postgres 的经验,总结出以下几点关键观察:查询时尽量减少数据读取量至关重要,可通过数据压缩、聚簇与分区优化扫描效率;传统的 B-tree 索引在 PB 级别数据下效率低下...尽管 Delta Lake 在功能和性能上表现不错,但由于不支持分区演进,且在大规模分析与批处理场景中与 Iceberg 重叠较多,最终未被采纳。...最大规模集群中,未启用缓存时延迟约 2 秒,启用缓存后最低降至 500 毫秒。Trino:随着集群扩容,性能有所提升,但整体仍存在瓶颈,查询延迟难以突破 2.5 秒。

61010

1年将超过15PB数据迁移到谷歌BigQuery,PayPal的经验有哪些可借鉴之处?

这帮助团队大大减少了我们需要迁移的负载数量。以下是从总体清单中弃用的内容细节。 图 3:在迁移过程中弃用的负载 对自动化框架的投入帮助我们区分了用过 / 未使用的内容,并在最后一步获得用户的验证。...对于每天添加新行且没有更新或删除的较大表,我们可以跟踪增量更改并将其复制到目标。对于在源上更新行,或行被删除和重建的表,复制操作就有点困难了。...由于我们正在逐步切换用户,因此我们必须意识到 BigQuery 中的表需要具有生产级质量。 数据验证:在数据发布给数据用户之前,需要对数据进行多种类型的数据验证。...这包括行计数、分区计数、列聚合和抽样检查。 BigQuery 的细微差别:BigQuery 对单个查询可以触及的分区数量的限制,意味着我们需要根据分区拆分数据加载语句,并在我们接近限制时调整拆分。...用户非常喜欢 BigQuery 日志的查询性能优势、更快的数据加载时间和完全可见性。

6.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用Kafka,如何成功迁移SQL数据库中超过20亿条记录?

    在我们的案例中,我们需要开发一个简单的 Kafka 生产者,它负责查询数据,并保证不丢失数据,然后将数据流到 Kafka,以及另一个消费者,它负责将数据发送到 BigQuery,如下图所示。 ?...将数据流到 BigQuery 通过分区来回收存储空间 我们将所有数据流到 Kafka(为了减少负载,我们使用了数据过滤),然后再将数据流到 BigQuery,这帮我们解决了查询性能问题,让我们可以在几秒钟内分析大量数据...在迁移了所有记录之后,我们部署了新版本的应用程序,它向新表进行插入,并删除了旧表,以便回收空间。当然,为了将旧数据迁移到新表中,你需要有足够的空闲可用空间。...不过,在我们的案例中,我们在迁移过程中不断地备份和删除旧分区,确保有足够的空间来存储新数据。 ?...将数据流到分区表中 通过整理数据来回收存储空间 在将数据流到 BigQuery 之后,我们就可以轻松地对整个数据集进行分析,并验证一些新的想法,比如减少数据库中表所占用的空间。

    4.4K20

    20亿条记录的MySQL大表迁移实战

    在我们的案例中,我们需要开发一个简单的 Kafka 生产者,它负责查询数据,并保证不丢失数据,然后将数据流到 Kafka,以及另一个消费者,它负责将数据发送到 BigQuery,如下图所示。...将数据流到BigQuery 通过分区来回收存储空间 我们将所有数据流到 Kafka(为了减少负载,我们使用了数据过滤),然后再将数据流到 BigQuery,这帮我们解决了查询性能问题,让我们可以在几秒钟内分析大量数据...在迁移了所有记录之后,我们部署了新版本的应用程序,它向新表进行插入,并删除了旧表,以便回收空间。当然,为了将旧数据迁移到新表中,你需要有足够的空闲可用空间。...不过,在我们的案例中,我们在迁移过程中不断地备份和删除旧分区,确保有足够的空间来存储新数据。...将数据流到分区表中 通过整理数据来回收存储空间 在将数据流到 BigQuery 之后,我们就可以轻松地对整个数据集进行分析,并验证一些新的想法,比如减少数据库中表所占用的空间。

    5.9K10

    数据仓库事实表深度解析:三种核心类型及其应用场景

    值得注意的是,周期快照事实表虽然能有效捕捉业务状态,但它无法提供状态变化的具体原因。要理解为什么某个时间点的状态会发生变化,通常需要结合事务事实表中的详细事件记录进行分析。...实施注意事项 在实施累计快照事实表时,需要特别注意几个关键问题: 数据更新策略需要精心设计。由于同一行记录会被多次更新,必须建立完善的版本控制和变更审计机制,确保数据的准确性和可追溯性。...同时,要建立清晰的数据血缘关系,通过数据目录工具如DataHub或Amundsen实现端到端的数据溯源。 性能优化的关键考量 在具体实施过程中,分区策略的选择对事实表性能至关重要。...事务事实表建议按时间分区,便于历史数据的归档和管理,在BigQuery中可以利用分区裁剪显著提升查询性能。周期快照事实表可以考虑按业务维度分区,如按产品类别或地理区域,提升特定维度的查询效率。...事务事实表通常需要建立复合索引来支持多种查询场景;周期快照事实表可能更需要位图索引来提升多维分析的性能;累计快照事实表则要重点关注外键关系的索引设计,在Snowflake中可以利用搜索优化服务提升关联查询性能

    30510

    从VLDB论文看谷歌广告部门的F1数据库的虚虚实实

    F1作为一个在谷歌内部不断发展壮大的系统,也是这种竞争关系中的胜出者。 了解这些数据库的历史和服务对象,对我们更深刻的理解F1系统的业务支持和技术选型,有很重要的作用。...文章讨论了系统的分区策略和如何提高系统性能的一些决策,主要是针对data skew和non-optional access pattern。其做法是分布式数据库常见的做法。有兴趣的可以去读论文。...比如说输出的schema是什么,TVF是不是可以被分区以后在每个分区上单独去执行等等。...UDF server在文章中着墨很少,但是在我看来这是2018年的F1论文里相对于2013年的论文最重要的一个不同。有了UDF server才让复杂的ETL逻辑成为可能。...基于MapReduce的非交互式执行的性能有进一步优化的空间。 F1的优化器是比较经典的数据库优化器,只实现了rule-base的优化,没有实现cost-base的优化。

    1.9K30

    CTE公用表表达式的可读性与性能优化

    在复杂SQL查询开发中,开发者常面临两大痛点:嵌套地狱带来的可读性灾难和临时表滥用导致的性能损耗。CTE(Common Table Expression,公用表表达式)正是解决这些问题的利器。...SELECT region, total, (total / SUM(total) OVER ()) * 100 AS percent FROM RegionalSales;实践建议:在需要多次引用相同子查询时...:当层级超10层时,执行时间从 1200ms → 280ms(减少76%)六、分布式数据库的特殊优化在 TiDB/BigQuery 等分布式系统中,CTE面临新挑战:3.1 数据分片下的执行策略WITH...,减少网络传输在TiDB中设置 tidb_enable_parallel_apply 启用并行递归3.2 代价模型调整BigQuery:使用 CREATE TEMP FUNCTION 替代复杂CTE获得确定性性能...深度剪枝 + 尾递归优化 内存占用降低60%分布式环境 分区键传播 + 本地化计算 网络开销减少40%深度洞察:性能优化本质是代价转移的艺术。

    64021

    Thoughtworks第26期技术雷达——平台象限

    我们已经看到我们的团队在使用该平台时获得了良好的体验,这意味着 Azure DevOps正在走向成熟。我们特别喜欢它的灵活性;它甚至允许用户使用来自不同供应商的服务。...但仍有一些需要权衡的事情,例如是否需要降低"机器学习持续交付"的难易程度以使其低门槛好上手,BigQuery ML 仍然是一个有吸引力的选择,特别是当数据已经存储在 BigQuery 中的时候。...我们在2018年首次介绍了 Dataflow,它的稳定性、性能和丰富的功能让我们有信心在这一次的技术雷达中将它移动到试验环。...VerneMQ VerneMQ 是一个开源、高性能的分布式 MQTT 消息服务器。在之前的技术雷达中我们评估过一些 MQTT 消息服务器,比如 Mosquitto 和 EMQ 。...您可以基于 Colima 轻松地使用和测试 containerd 的最新特性,例如容器镜像的惰性加载。凭借其良好的性能,我们期待 Colima 成为 Docker 桌面版的强有力开源替代方案。

    3.3K50

    谷歌发布 Hive-BigQuery 开源连接器,加强跨平台数据集成能力

    所有的计算操作(如聚合和连接)仍然由 Hive 的执行引擎处理,连接器则管理所有与 BigQuery 数据层的交互,而不管底层数据是存储在 BigQuery 本地存储中,还是通过 BigLake 连接存储在云存储桶中...图片来源:谷歌数据分析博客 根据谷歌云的说法,Hive-BigQuery 连接器可以在以下场景中为企业提供帮助:确保迁移过程中操作的连续性,将 BigQuery 用于需要数据仓库子集的需求,或者保有一个完整的开源软件技术栈...Hive-BigQuery 连接器支持 Dataproc 2.0 和 2.1。谷歌还大概介绍了有关分区的一些限制。...由于 Hive 和 BigQuery 的分区方式不同,所以该连接器不支持 Hive PARTITIONED BY 子句。...但是,开发人员仍然可以使用 BigQuery 支持的时间单位列分区选项和摄入时间分区选项。 感兴趣的读者,可以从 GitHub 上获取该连接器。

    2.2K20

    技术译文 | 数据库只追求性能是不够的!

    本文约 4500 字,预计阅读需要 15 分钟。 1论数据库的性能崇拜 从我在西雅图的家到我们在旧金山的办公室大约需要 4.5 小时。...虽然您可能认为发布仅执行单表扫描的基准测试很俗气,但 Clickbench 实际上在代表许多实际工作负载方面做得相当好。如果您进行大量日志分析并需要计算网站的不同用户,这可能是性能的良好代理。...例如,BigQuery 在基准测试中表现得很差,但很多人的实际体验是性能很神奇。BigQuery 亲自表现得很好,因为它没有任何旋钮,并且在很大程度上是自我调整的。...与共享磁盘相比,无共享数据库处于劣势,Redshift 花了很多年才切换到主要共享磁盘架构。依赖于将元数据持久保存到对象存储的 Lakehouse 将很难快速更新;这是内置于模型中的。...在 BigQuery 中,我编写了第一个 CSV 拆分器,当发现它是一个比预期更棘手的问题时,我们派了一位新的研究生工程师来解决这个问题。

    1.1K10

    四两拨千斤:借助Spark GraphX将QQ千亿关系链计算提速20倍

    借助Spark GraphX,我们用寥寥100行核心代码,在高配置的TDW-Spark集群上,只花了2个半小时,便完成了原来需要2天的全量共同好友计算。...所以,这决定了GraphX需要大的内存,才能有良好的性能。 在正常情况下,128G内存,减掉8G的系统占用,剩下120G。...性能优化 即便有了良好的模型和硬件保障,在面对QQ如此巨型的关系链时,依然需要熟练运用GraphX的技巧,并避开各种雷区,才能最终到达终点。...分区策略:EdgePartition2D 对GraphX有所了解的人,应该都知道,有4种分区的策略,而其中性能最好的,莫过于EdgePartition2D这种边分区策略。...其实这也难怪,GraphX的代码,从1.3版本开始,便已经一直没有变动,基本是在吃Core优化的红利,沾光提高性能,没有任何实质性的改进,如果要继续使用,在核心上必须有所提升才行。

    2.9K81

    如何使用5个Python库管理大数据?

    关于BigQuery的另一点是,它是在Bigtable上运行的。重要的是要了解该仓库不是事务型数据库。因此,不能将其视为在线交易处理(OLTP)数据库。它是专为大数据而设计的。...Spark将快速处理数据,然后将其存储到其他数据存储系统上设置的表中。 有时候,安装PySpark可能是个挑战,因为它需要依赖项。你可以看到它运行在JVM之上,因此需要Java的底层基础结构才能运行。...Kafka Python Kafka是一个分布式发布-订阅消息传递系统,它允许用户在复制和分区主题中维护消息源。 这些主题基本上是从客户端接收数据并将其存储在分区中的日志。...使用KafkaPython编程同时需要引用使用者(KafkaConsumer)和引用生产者(KafkaProducer)。 在Kafka Python中,这两个方面并存。...因此,Pydoop在此列表中,但是你需要将Hadoop与其他层(例如Hive)配对,以便更轻松地处理数据。

    3.5K10

    从1到10 的高级 SQL 技巧,试试知道多少?

    这意味着 Google BigQuery MERGE 命令可让您通过更新、插入和删除 Google BigQuery 表中的数据来合并 Google BigQuery 数据。...计算单词数 Counting words 执行 UNNEST() 并检查您需要的单词是否在您需要的列表中可能在许多情况下很有用,即情感分析: with titles as ( select 'Title...它返回连续的排名值。您可以将其与分区一起使用,将结果划分为不同的存储桶。如果每个分区中的行具有相同的值,则它们将获得相同的排名。...,它有助于获取每行相对于该特定分区中的第一个/最后一个值的增量。...使用 PARTITION BY 它使您有机会对所有以下事件进行分组,无论每个分区中存在多少个事件。

    1.5K10

    详细对比后,我建议这样选择云数据仓库

    之前话费数个小时才生成的商业智能报告现在几分钟内就能生成。...与 Redshift 不同,BigQuery 不需要前期配置,可以自动化各种后端操作,比如数据复制或计算资源的扩展,并能够自动对静态和传输中的数据进行加密。...举例来说,加密有不同的处理方式:BigQuery 默认加密了传输中的数据和静态数据,而 Redshift 中需要显式地启用该特性。 计费提供商计算成本的方法不同。...公司需要知道估算自己每个月要整合、存储和分析多少数据,以此来估计成本。基于这些,IT 团队就可以选择一个价格最合理的的云数据仓库提供商。 Redshift 根据你的集群中节点类型和数量提供按需定价。...例如,数据已经在谷歌云中的企业可以通过在谷歌云上使用 BigQuery 或者 Snowflake 来实现额外的性能提升。由于数据传输路径共享相同的基础设施,因此可以更好地进行优化。

    7.4K10

    Adaptive and Robust Query Execution for Lakehouses at Scale(翻译)

    PERFORMANCE OPTIMIZATIONS在本节中,我们将讨论在AQE中应用的几个重要的性能优化,包括:通过逻辑重写注入半连接减少过滤器变体,如动态分区/文件修剪过滤器(DPPs, DFPs)[...因此,我们实现了一个重写规则,以在剩余的逻辑计划中自底向上传播空关系。例如,在内连接的一侧没有行的场景中,规则智能地消除进一步执行连接的需要,并用空关系替代,从而优化查询性能。...然而,确定最佳分区数量是数据依赖的,并且准确的数据大小,特别是中间阶段的数据大小,在静态查询优化期间通常不可得,这使之特别具有挑战性。这一决策对查询性能有关键影响:并行度不足。...然而,在执行时,发现R.a只有2个不同值,因此连接后的哈希聚合在所有执行器上只有两个有效的并行任务,无论有多少混洗分区。...BigQuery利用了一个内存中的、阻塞的混洗实现[2]来动态调整混洗接收端的并行度和分区函数。

    87810

    选择一个数据仓库平台的标准

    如果您正在扩展现有的数据仓库,那么您需要将当前的解决方案与竞争对手进行比较,以查看其他供应商是否提供了更相关的特性,或者在性能方面更好。...在大多数情况下,AWS Redshift排在前列,但在某些类别中,Google BigQuery或Snowflake占了上风。...Panoply进行了性能基准测试,比较了Redshift和BigQuery。我们发现,与之前没有考虑到优化的结果相反,在合理优化的情况下,Redshift在11次使用案例中的9次胜出BigQuery。...在调查了Redshift,Snowflake和BigQuery之后,Periscope的数据也宣称Redshift在价格和性能方面都是明显的赢家。...通过利用Panoply的修订历史记录表,用户可以跟踪他们数据仓库中任何数据库行的每一个变化,从而使分析师可以立即使用简单的SQL查询。

    3.7K40

    超级重磅!Apache Hudi多模索引对查询优化高达30倍

    未来我们计划通过日志压缩服务[11]来增加 MOR 表的更新,这可以进一步减少写入放大。 2.3 快速查找 为了提高读写性能,处理层需要点查找以从元数据表中的文件中找到必要的条目。...此外,这些元数据表索引通过缓存元数据的集中时间线服务器提供服务,进一步减少了执行程序查找的延迟。 3. 多模索引如何提升性能? 元数据表对于提高 Hudi 用户的性能有几个好处。...为了提高文件Listing性能,Hudi 将信息存储在元数据表中名为 files 的分区中,以避免文件系统调用,例如 exists、listStatus 和 listFiles。...文件分区存储数据表中每个分区的文件名、大小和活动状态等文件信息。 我们展示了在 Amazon S3 上使用包含不同数量的文件和分区的各种规模的 Hudi 表对文件列表的性能改进。...在column_stats分区中,记录键是由列名、分区名、数据文件名依次串联而成的,这样我们就可以进行点查找和范围读取。这种记录键设计也解锁了在 column_stats 索引上执行前缀查找的能力。

    2K20

    Apache Hudi 0.9.0 版本发布

    这需要从0.9.0的hudi-cli二进制/脚本执行。 在这个版本中,我们添加了一个新的框架来跟踪代码中的配置属性,不再使用包含属性名和值的字符串变量。这一举动帮助我们自动化配置文档的生成等等。...增强 Bulk_Insert模式(新增行写入器模式),并缺省打开,用户可以使用行写入器模式以获得更好的性能。 在 HiveSyncTool 中添加了对 HMS 的支持。...用户可以选择删除用于生成分区路径的字段(hoodie.datasource.write.drop.partition.columns),以支持使用BigQuery系统查询Hudi快照。...添加了对delete_partition操作的支持,用户可以在需要时利用它删除旧分区。 ORC格式支持,现在用户可以指定存储格式为ORC,注意现在暂时只支持Spark查询。...在 0.9.0 中,我们添加了对 bitcask默认选项的压缩支持,并引入了由 RocksDB 支持,它可以在大批量更新或处理大型基本文件时性能更高。

    1.8K20

    Apache Hudi 0.11.0版本重磅发布!

    多模式索引 在 0.11.0 中,我们默认为 Spark writer 启用具有同步更新的元数据表和基于元数据表的file listing,以提高在大型 Hudi 表上的分区和文件 listing 的性能...我们在元数据表中引入了多模式索引,以显着提高文件索引中的查找性能和数据跳过的查询延迟。元数据表中添加了两个新索引 1....注意:目前仅在COW 表和读优化模式下的MOR 表中支持 Data Skipping。在HUDI-3866中跟踪了对 MOR 表的全面支持的工作 有关更多信息,请参阅性能指南[2]。...索引器在时间线上添加一个名为“indexing”的新action。虽然索引过程本身是异步的并且对写入者来说是非阻塞的,但需要配置锁提供程序以安全地协调运行中的写入者进程。...Google BigQuery集成 在 0.11.0 中,Hudi 表可以作为外部表从 BigQuery 中查询。

    4.7K40

    Apache Hudi 0.14.0版本重磅发布!

    文件列表索引通过从维护分区到文件映射的索引检索信息,消除了对递归文件系统调用(如“列表文件”)的需要。事实证明这种方法非常高效,尤其是在处理大量数据集时。...Google BigQuery 同步增强功能 在 0.14.0 中,BigQuerySyncTool 支持使用清单将表同步到 BigQuery。与传统方式相比,这预计将具有更好的查询性能。...由于新的 schema 处理改进,不再需要从文件中删除分区列。要启用此功能,用户可以将 hoodie.gcp.bigquery.sync.use_bq_manifest_file设置为 true。...与插入操作相比,批量插入具有更好的写入性能。另外简单存储桶索引也支持了行写入器。...已知回退 在Hudi 0.14.0中,当查询使用ComplexKeyGenerator或CustomKeyGenerator的表时,分区值以字符串形式返回。

    3.2K30
    领券