通用高效的数据修复方法:Row level repair

摆脱Excel效率瓶颈:四条可落地的数据系统升级路径 Excel作为交互式计算界面广受欢迎,但当数据规模突破50万行、协作人数超8人、更新频率达小时级时,其单元格中心架构、隐式状态存储与缺失版本控制等设计局限,便导致公式错误频发、多人编辑冲突、审计追溯困难等典型问题。此时需从‘功能替代’转向‘职责分层’——将数据采集交由表单/API、存储托付关系型数据库(如PostgreSQL)、处理交由SQL或低代码ETL、协作依托Git式数据版本工具(如Dolt),最终让Excel回归轻量分析沙盒定位。本文聚焦制造业、互联网与高校科研三大场景,详解数据库迁移、低代码应用构 阅读详情

导读:随着大数据的进一步发展,NoSQL 数据库系统迅速发展并得到了广泛的应用。其中,Apache Cassandra 是最广泛使用的数据库之一。对于 Cassandra 的优化是大家研究的热点,而 ScyllaDB 则为其提供了一个新的思路。ScyllaDB 是一个基于 C 的开源的高性能的 Cassandra 的实现,较之 Cassandra 在性能上有了很大的提升。Nodetool repair 是 Cassandra 日常维护的重要一环,今天主要和大家分享一下 ScyllaDB 在这方面的优化。

今天的介绍会围绕下面五点展开:

ScyllaDB 介绍

Row level repair 介绍

Row level repair 实现

实验结果

总结

▌ScyllaDB 介绍

首先给大家简单介绍一下 ScyllaDB:

  1. ScyllaDB 的产生背景

我们公司是一家具有较多的底层软件开发经验的公司,团队创始人是 KVM 和 OSv 的作者。对于 Cassandra 数据库的优化,我们进行了一系列尝试。最开始是从操作系统的角度,通过提高操作系统的性能来提高 Cassandra 应用的性能,其效果是提高了 Cassandra 约20%的性能而无法再获得更高的性能提升。为了更好地优化 Cassandra,团队开始思考是否可以重新实现 Cassandra。我们首先开发了一个非常高性能的 C 的开源框架 Seastar,然后基于 Seastar 框架改写的 Cassandra 数据库,即 ScyllaDB。

  1. ScyllaDB 的特点

file

ScyllaDB 是一个开源的高性能的 Cassandra 的实现,具有以下几个特点:

一个速度极快的 NoSQL 数据库

单个节点的 QPS 可以达到1000000;可以扩展多个节点以提高性能,99%情况下延迟低于1毫秒。

使用 C 开发,没有 GC

每个物理 CPU 只部署一个线程,线程间无共享,无锁

每个物理 CPU 只部署一个线程,每个线程内部会有自己的 task,scheduler。每个线程跑完全独立的 Cassandra 的任务,因此不同线程之间没有共享,从而也没有锁。这样的效果是获得了较大的性能提升,并且在有较多物理核的时候具有较高的可扩展性。

在用户态实现 CPU 和 DISK scheduler,以及可选 TCP/IP 协议栈

在用户态实现 CPU scheduler,不同的任务设定不同的优先级,分配不同的 CPU 资源;进行了磁盘的优化,不使用操作系统的 page cache,完全 DMA 操作,实现 DISK scheduler,精确控制各个模块 DISK 的使用情况;实现了可选的用户态的 TCP/IP 协议栈。

提供 Apache Cassandra 和 Amazon DynamoDB 的 API

▌Row level repair ( 行级修复 )

  1. 什么是 repair

file

首先介绍一下什么是 repair:

修复是 Cassandra 中一个重要的维护操作。

Cassandra 中的数据具有多个副本,有可能在写操作发生时某些节点不在线,从而拿不到数据的副本,导致了数据的不一致。这种情况发生时,需要让各个节点的数据一致,即 repair。

repair 的两个步骤:

第一步:发现不同节点数据副本之间的不一致。

第二步:修复不一致的数据。

  1. Partition level repair ( 分区级修复 ) 的问题

file

Partition level

目前的 Cassandra 以及 ScyllaDB 3.1 版本之前使用的是 partition level repair。为发现数据不一致需要对一组 partitions 进行哈希得到一组 checksum。对于 Cassandra 是 Merkle tree ( 默克尔树 ) 中的叶子节点,对于 ScyllaDB 是将 token range 进行拆分,直到每个 range 里面有约100个 partition。

其问题在于,哈希的粒度太大,会导致不必要的数据传输:

① 单个行的不一致会导致所有一组 partitions 在网络上传输。

② 有些节点上的分区会很大 ( 达到 5G )。

Two stage repair

Repair 过程包括两个阶段:

① 通过计算比较哈希值寻找不一致的数据,记录下来不一致的节点和 token range。

② Streaming:根据记录的节点和 token range 传输数据进行 repair。

其问题在于,需要两次读取数据,读磁盘开销较高。

  1. Row level repair ( 行级修复 ) 介绍

file

Row level

考虑 partition level 修复粒度太大,存在不必要数据传输的问题,减小修复的粒度:

① 对每一行进行哈希计算得到一个 checksum。

② 利用 set reconciliation 算法,使每个节点得到一个统一的哈希集合,包含所有应有数据的哈希值。

③ 只传输不一致的数据行。

Single stage repair

Row level repair 只有一个阶段,因为通过缩小粒度,正在工作的数据集规模被大大缩小,可以完全放进内存。数据只需要从磁盘读取一次,使用 RPC 框架传输缓存中的不一致数据而不需要额外的 streaming 操作,大大降低了读数据的开销。

下面,重点分享下 row level repair 的实现细节。

▌Row level repair 的实现

file

Row level repair 具有两个重要元素:

① Master:运行 nodetool repair 命令的节点。

② Followers:具有数据备份的节点。

Row level repair 有三个主要步骤:

① 首先,master 与其 followers 协商 sync boundary ( 同步边界 ),以便确定 repair 工作开始的 range。Sync boundary 确定了一 个range,使其中的数据行可以全部放进内存。这个 range 可以小于一个 partition,因此允许 repair 工作在一个大的 partition 的一小部分上。

② 然后,master 从 followers 获取上述范围内它缺少的数据行,使得 master 最终包含所有数据行。这里缺少的数据行有两个含义:其一是确实缺少的数据,其二是有但是内容不同的数据。

③ 最后,master 通过分析得知 followers 各自缺少的数据行,并将缺失的数据行发送给对应的 follower,最终所有 followers 包含所有的数据行。

下面详细介绍 row level repair 的各个步骤。

步骤一:协商 sync boundary ( 同步边界 )

file

首先,Master 和 followers 读取数据直到设定大小的数据行缓存满 ( 如 32M ),计算缓存中每行数据的哈希,并对得到的所有哈希计算一个整体哈希值 ( 如异或 )。Followers 将得到的联合哈希值返回给 master,同时也将 sync boundary 返回给 master。这里请注意,缓存中的数据行是有序的,缓存中的最后一行将作为返回的 sync boundary。

然后,此时的 master 节点已经拿到了所有 followers 节点的整体哈希值和 sync boundary,master 比较这些哈希值和 sync boundary。如果所有节点哈希值一致且 sync boundary 一致,则代表此时这个 range 的数据完全一致,因此继续处理下一个 range 的数据。如果 sync boundary 不一致,master 会选择最小的一个作为本轮的 sync boundary。如果选择的不是最小的,则会导致有多余的数据在本轮同步,违反了有限数据到内存的原则。

步骤二:移动数据到 working row buffer ( 工作缓存 )

file

经过第一步的操作,此时所有节点具有一个统一的 sync boundary。

首先,每个节点把 sync boundary 之内的所有数据移动到 working row buffer 中,每个 follower 会返回一个整体哈希值。

然后,master 节点检查 working row buffer 中各个节点的整体哈希值是否一致,如果一致,则继续处理下一个 range 的数据。如果不一致,则进行下面第三个步骤。

步骤三:得到所有数据行哈希值

file

如果存在节点 working row buffer 中数据的整体哈希值不一致,此时则需要对数据进行 repair。Repair 工作首先要进行的,就是得到各个节点 working row buffer 中所有数据的哈希值集合。这个过程有两个比较常用的方法:

第一种是比较暴力的方法:Master 节点要求所有 follower 节点将其所有数据行的哈希值集合发送给 master,这种方法最容易实现,并且在数据差异特别大的时候是最有效 ( 经测试,如果差异数据占比15%以上,这种暴力方式最有效 )。

第二种方法 ( 如 IDF ) 巧妙地构建一些很小的数据结构,followers 不需要传输所有的哈希值,而是只发送这个数据结构让 master 推测出其具有的数据行。这种方法在数据差异较小的时候最有效。

当拿到所有的哈希之后,master 节点就很清晰地知道了每个 follower 节点有哪些数据行,缺少那些数据行。接下来则需要进行第四个步骤,得到所有的数据行。

步骤四:获取所有缺少的数据行

file

Master 节点通过第三个步骤获得了所有节点 working row buffer 中的数据行哈希。Master 比较本节点的哈希值集合和 follower 节点的哈希值集合,得到本节点缺少的数据行,从而确定应该去每个 follower 节点获取哪些数据,例如:

n1 节点包含数据 {1,2,3},n2 节点包含数据 {1,2,4},n3 节点包含数据 {1,4,5},n1 节点是 master 节点,则 n1 需要从 n2 获取数据 {4},从 n3 获取数据 {5},最终 n1 包含数据 {1,2,3,4,5}。

然后 Master 从 follower 节点读取缺少的数据到 working row buffer,并写进磁盘 SStables。此时,master 节点已经包含了所有的数据信息。

步骤五:将缺少的数据发送给 followers

file

通过前四步,master 节点已经具有了 sync boundary 以内的所有数据,接下来则需要对 follower 节点进行修复。

Master 通过比较本节点和 follower 节点 working row buffer 中数据的哈希值,确定需要将哪些数据推送到哪些节点。例如步骤四中的例子:

最开始 n1 节点包含数据 {1,2,3},n2 节点包含数据 {1,2,4},n3 节点包含数据 {1,4,5}。经过第四步, n1 包含数据 {1,2,3,4,5},n2 包含数据 {1,2,4} ,n3 包含数据 {1,2,5}。在本步骤,n1 将 {3,5} 发送给 n2,将 {2,3} 发送给 n3。

然后 follower 节点将从 master 节点接受到的数据写进磁盘 SStables。此时 master 和 follower 节点中 sync boundary 之内的数据已经达到一致,本轮的 repair 结束。

如果还有更多数据需要 repair,则重复这五个步骤,知道所有数据修复完毕。

▌实验结果

file

实验测试了一个三节点集群,每个节点包含十亿行数据,大小为 1TB,每行数据大小为 1KB,每个分区只有一行数据。测试包含三个场景:

第一个场景是,其中一个节点完全没有数据,另外两个节点有相同的数据,模拟节点的重建。

第二个场景是,各个节点数据完全一致,用来测试数据一致的情况下的 repair 操作的速度。

第三个场景是最常见的情况,即各个节点大量数据是一致的,只有千分之一的数据行不一致。因为在集群运维过程中,是比较推荐定期 repair 的,如果定期 repair,实际数据差异是比较小的。

第三种场景,row level repair 速度获得了六倍的提升,原因是为什么呢?

file

第三种场景,row level repair 速度获得了六倍的提升,原因是为什么呢?我们对 master 节点需要真正传输和接受的数据量做了一个统计,row level repair 只有 partition level repair 的约4%,数据传输量的大幅度减少是速度提升的最主要原因。

file

综上,从实验结果分析得知,row level repair 速度快的原因有三个方面:

没有多余的数据传输,本次实验每个 partition 只有一行数据,当每个 partition 中数据更多时,速度提升会更多。

更快的哈希方法,partition level repair 数据量比较多,因此使用效果更强的256位加密 SHA256 哈希方法,而 row level repair 数据量较少,因此使用64位无加密 xxhash,因此速度更快。

提高了 repair 的并行度,partition level repair 只并行修复一个 token range 的数据,但是 row level repair 同时并行修复更多的 token range 的数据。Scylla 3.1 是16个,3.2更加优化,可以根据每个节点的内存情况确定并行数量。在未来的版本中,还会进一步优化,根据节点之间网络的延迟自动计算一个最优的并行数。这一点对于跨 DC 的集群非常有用,跨 DC 的集群节点之间延迟较高。在这种情况下,为了提高 repair 的吞吐量,需要提高有效缓存的大小。

▌总结

file

通过前面的介绍,大家应该对 row level repair 有了大致的了解。Row level repair 降低了数据修复的粒度,从分区粒度到单行数据的粒度,减少了数据的传输量,减少了数据修复所需的时间,并且减少了 IO 请求,减少了磁盘的读取。

综上,Row level repair 是一个通用的高效的数据修复方法,希望能对大家有所帮助。

file

多维聚合实战:超越GROUP BY的维度建模与工程化方法 多维聚合是OLAP分析的核心能力,本质是基于星型模型的语义化分组计算,其原理远超SQL中GROUP BY的简单语法层面。它依赖维度建模构建可解释的业务语义层,通过聚合粒度隔离、下钻路径显式化、空值填充策略和跨层级计算等机制,保障数据口径一致与分析灵活可靠。该技术直接支撑销售分析、用户行为宽表、IoT时序汇总及财务多维报表等关键场景,显著降低90%的数据口径偏差与35%的报表性能瓶颈。本文聚焦金融风控等真实业务中的工程落地,系统阐述如何用配置化、元数据驱动的方式实现高可用、可维护的多维聚合能力。 阅读详情

相关推荐

R中Excel导入避坑指南:readxl精准读取实战

Excel作为最常用的数据交换格式,本质是面向人类的可视化工具,而非结构化数据容器;其合并单元格、混合类型、自定义格式等特性,导致程序化读取极易失败。readxl凭借纯C++实现、零外部依赖、XML级解析能力,在鲁棒性与可控性间取得关键平衡——它不猜测、不修复、不渲染,只精准提取行列坐标内的原始值。技术价值在于支持sheet动态识别、范围裁剪(range)、头信息修复(.name_repair)、列类型显式声明(col_types)等工程级控制能力,适用于金融报表、政务表格、电商后台等真实业务场景中的脏数据

weixin_30247781的博客 418

python repair修复功能_修复损坏的Python3.2安装(Ubuntu)

I stupidly remove the subprocess.py module from /usr/lib/python3.2so I try to fix this with executing:sudo apt-get install python3but I just got this error:Traceback (most recent call last): File "/...

weixin_39912368的博客 1213

DirectX修复工具通用数据包

本资源中包含DirectX修复工具数据包,适合已经有主程序而缺少数据包的用户使用。 本数据包为通用数据包,适合各种版本的DirectX修复工具使用。内含:Directx Jun2010 Redist、Visual c++ Redistributable Package 2005 SP1、Visual c++ Redistributable Package 2008 SP1、Visual c++ Redistributable Package 2010 SP1。 如果您还没有主程序,请到以下地址下载: http://blog.youkuaiyun.com/vbcom/article/details/6962388

Arcgis处理栅格数据中Nodata值

在前面介绍了对栅格数据Nodata进行补充的一种方法,在实际研究过程中,面临的情况多种多样。下图为LUCC数据,在各省边界上存在较多的数据缺失值,这个缺失值一方面可以使用更高精度的其他数据去填充。在缺失值较少的情况下,也可以使用邻域的数据去填充。以下还有几种方法对数据填充,但都是使用Raster Calculation 工具。

weixin_43416590的博客 6184

DirectX修复工具通用数据包(2018Q3)

本资源中包含DirectX修复工具数据包2018Q3版,适合已经有主程序而缺少数据包的用户使用。 本数据包为通用数据包,适合各种版本的DirectX修复工具使用(其中部分功能在低版本的DirectX修复工具中无法使用)。内含:Directx Jun2010 Redist、Visual c++ Redistributable Package 2005 SP1 x86、Visual c++ Redistributable Package 2005 SP1 x64、Visual c++ Redistributable Package 2008 SP1 x86、Visual c++ Redistributable Package 2008 SP1 x64、Visual c++ Redistributable Package 2010 SP1 x86、Visual c++ Redistributable Package 2010 SP1 x64、Visual c++ Redistributable Package 2012 x86、Visual c++ Redistributable Package 2012 x64、Visual c++ Redistribu table Package 2013 x86、Visual c++ Redistributable Package 2013 x64、Visual c++ Redistributable Package 2015 x86、Visual c++ Redistributable Package 2015 x64、Visual c++ Redistributable Package 2017 x86、Visual c++ Redistributable Package 2017 x64。 如果您还没有主程序,请到以下地址下载: http://blog.youkuaiyun.com/vbcom/article/details/6962388

MWORKS 2025a电气模型库实战:手把手教你搭建全桥LLC电路(附避坑指南)

本文详细介绍了如何使用MWORKS 2025a电气模型库搭建全桥LLC电路,包括环境准备、电路拓扑构建、参数优化及故障诊断。通过实战案例和避坑指南,帮助电源工程师高效设计谐振转换器,提升转换效率至98%以上。文章特别强调了Modelica模型库在电气系统建模中的关键作用。

s8t9u0v1w的博客 603

Python3 注释

Python3 注释

xiqng17111342931的博客 2224

使用MID360在室内快速定位

在预构建的点云地图中实现实时3D全球定位。通过融合FAST-LIO的低频全局定位(约0.5~0.2Hz)和高频里程计,整个系统的计算效率很高。消除里程计的累计误差初始定位可以通过RVIZ的粗略手动估计或来自另一个传感器/算法的姿势来提供。

CTwinkle的博客 1164

栅格数据的缺失值和背景

背景值和中间的有部分都为nodata,如何扣除背景 再Extract by mask

weixin_45704140的博客 450

Windows/Linux双平台实战:QtCreator构建套件配置全攻略(含GCC/G++/GDB/CMake)

本文详细介绍了在Windows和Linux双平台下配置QtCreator构建套件的完整流程,涵盖GCC/G++、GDB和CMake等核心工具链的设置技巧。通过分步指导和实用示例,帮助开发者解决跨平台开发中的配置难题,提升Qt应用开发效率。特别针对QtCreator新手和需要在多平台切换的开发者提供了全面的配置指南。

weixin_28836507的博客 471

TC3xx芯片SPI多从机通信避坑指南:AUTOSAR框架下的DMA配置与片选切换

本文针对英飞凌TC3xx芯片在AUTOSAR框架下实现SPI多从机通信的实战难题,提供了详尽的避坑指南。重点解析了如何利用硬件支持的16路片选(SLSO)灵活切换,在AUTOSAR中正确配置不同时序的从设备,并深入探讨了异步模式下DMA的启用条件与关键配置细节,帮助开发者规避通信失败风险,提升系统可靠性。

nn3456的博客 153

Cassandra 3.0数据修复机制

参考 https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsRepairNodesTOC.html前提: 每个数据副本N,写一致性级别是W,读一致性级别是RHinted Handoff(提示移交):写修复写操作是会发送N个写请求,但是只统计W个。对于另外N-W个节点,如果写失败,则记录hint。hint内容 targ

乔的博客 3930

STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码)

本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。

weixin_29281941的博客 189

python repair修复功能_通用高效的数据修复方法:Row level repair

导读:随着大数据的进一步发展,NoSQL 数据库系统迅速发展并得到了广泛的应用。其中,Apache Cassandra 是最广泛使用的数据库之一。对于 Cassandra 的优化是大家研究的热点,而 ScyllaDB 则为其提供了一个新的思路。ScyllaDB 是一个基于 C++ 的开源的高性能的 Cassandra 的实现,较之 Cassandra 在性能上有了很大的提升。Nodetool re...

weixin_39915820的博客 913

GitLab CI/CD .gitlab-ci.yml 关键词(十一):发布版本 release

本篇文章介绍使用GitLab CI/CD 发布一个版本,对外发布。并填写一些发布的信息。

知无涯 4721

FLUENT 软件中design modeler网格划分后,导出失败:系统显示“在网格文件导出过程中出现异常。请将数据发送给您的技术支持供应商。”...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1472

对象存储存大数据的真相:不是不能用,而是必须懂这3个高效场景

对象存储(如S3、OSS、COS)是一种面向海量非结构化数据的分布式存储服务,其核心设计基于HTTP RESTful API与最终一致性模型,天然支持高扩展性与低成本持久化。但因其不支持追加写、原子重命名和低延迟随机读,无法直接替代HDFS等面向计算优化的文件系统。其技术价值在于归档层、输出层与跨云交换枢纽三大不可替代场景,尤其适配只追加(append-only)、大块顺序读、低频更新的数据流。结合Parquet列式格式、合理分区策略(宽而浅)、COSN/S3A连接器调优及Alluxio缓存,可在电商日志、

weixin_30432579的博客 370

基于Keil软件实现对射式红外传感器计次 (江协科技HAL库)

用HAL库复现江协科技,让嵌入式学习之路更顺畅。

2401_82728381的博客 798

config.txt预配置技巧:让RTLPlayground烧录后开机即连上网络

RTLPlayground 是一款面向 RTL8372/RTL8373 芯片 2.5GBit 交换机的开源固件,烧录后默认管理地址为 `192.168.10.247`——如果你的电脑不在同一网段,浏览器里很难找到交换机。本文讲解一个技巧:在编译前用 [config.txt](https://link.gitcode.com/i/8bfb4a320e3d7db29ad210b1cca2f035) 做

gitblog_00275的博客 363

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

化石清修与古生物标本工作室通过mainTab(底部四主tab)与subTab(首页七内容子tab)两层导航索引完成全部页面切换,无需Navigation路由组件即可实现复杂的多视图导航

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

jin421352的博客 497

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL数据库评估内容及面试题汇总

一、数据库基础知识 1.1、数据库存储与其他存储有何区别? a)数据保存在数据库:1)数据永久保存;2)使用SQL语句,查询方便效率高。3)专门的管理工具,管理数据方便 b)数据保存在内存:优点: 存取速度快;缺点: 数据不能永久保存 c)数据保存在文件:优点: 数据永久保存;缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便 1.2、什么是SQL? 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。 作用:用于存取数据、查询、更新和管理关系数

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 1062

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

DataX CassandraReader 插件详解:基于 CQL 的 Cassandra 数据同步读取实践

CassandraReader 是阿里云 DataWorks 数据集成分支 DataX 中的一个读取插件,用于将 Apache Cassandra 中的数据抽取出来并交给下游 Writer 完成同步。本文以 [cassandrareader.md](https://link.gitcode.com/i/784f5667731abb7ad5ecb521750fef19) 官方文档为主线,结合插件源码

gitblog_00615的博客 362

多维聚合实战:从数据口径到实时下钻的工程化落地

多维聚合是BI与数据分析的核心能力,本质是将业务交叉视角(如地区、产品、时间)转化为可计算的数据结构。其原理在于维度建模与原子指标协同——先通过星型模型固化业务语义,再以不可拆分的原子度量(如处方药销售额、总订单数)支撑灵活计算与审计追溯。技术价值体现在口径一致性、下钻可追溯性及查询性能跃升,广泛应用于销售分析、风控监控、IoT时序聚合等场景。本文聚焦真实项目中Doris物化视图、Superset零配置下钻、WHERE/HAVING时空分治等关键实践,解决‘数据对不上’‘同比为NULL’‘下钻失效’等高频痛

weixin_33728708的博客 393

Python遗传算法实战:100皇后问题的可复现求解与工程优化

遗传算法(GA)是一种经典的启发式全局优化方法,其核心在于编码设计、适应度函数构建与遗传算子协同演化。在约束满足问题(CSP)中,GA的有效性高度依赖于问题特性的精准建模——例如N皇后问题本质是排列优化,一维数组编码可将冲突检测从O(n⁴)降至O(n²),显著提升可扩展性。本文聚焦真实工程落地,详解如何用纯NumPy实现鲁棒fitness函数(含列唯一性校验与指数衰减评分)、三级定向mutation策略(替代无效交叉),以及防卡死的双终止条件。内容覆盖参数安全边界(如population_size ≥ 2×

weixin_30527423的博客 476

mapshaper 版本演进全景:从 v0.2 到 v0.7 的命令体系、栅格支持与工程实践

本文以 mapshaper 仓库根目录的 [CHANGELOG.md](https://link.gitcode.com/i/88b9757cb93f5cbc4f2e46811bff7ff0) 为骨架,系统梳理该项目从 v0.2.0 到 v0.7.73 的功能演进脉络。Mapshaper 是一款面向 GIS 与 Web 制图的命令行/浏览器工具,用于编辑 Shapefile、GeoJSON、Top

gitblog_00548的博客 234
上一篇: 腾讯信息流内容理解技术实践
下一篇: 如何构建阿里小蜜算法模型的迭代闭环?
DataFunTalk
博客等级 码龄9年 207粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值