核心技术
文章平均质量分 94
核心技术
@SmartSi
Stay Hungry, Stay Foolish
展开
-
设计模式之访问者模式
访问者模式(Visitor Pattern)是 GoF 提出的 23 种设计模式中的一种,属于行为模式。访问者者模式的英文翻译是 Visitor Design Pattern。翻译成中文就是:允许一个或者多个操作应用到一组对象上,解耦操作和对象本身。设计意图是解耦操作和对象本身,保持类职责单一、满足开闭原则以及应对代码的复杂性。原创 2024-08-05 22:22:59 · 897 阅读 · 0 评论 -
重新认识访问者模式:从实践到本质
访问者模式在设计模式中的知名度虽然不如单例模式,但也是少数几个大家都能叫得上名字的设计模式了(另外几个可能就是“观察者模式”,“工厂模式” 了)。不过因为访问者模式的复杂性,人们很少在应用系统中使用,经过本文的探索,我们一定会产生新的认识,发现其更加灵活广泛的使用方式。和一般介绍设计模式的文章不同,本文不会执着于死板的代码模板,而是直接从开源项目以及应用系统中的实践出发,同时对比其他类似的设计模式,最后阐述其在编程范式中的本质。转载 2024-08-05 15:40:58 · 98 阅读 · 0 评论 -
走近数据变更捕获(CDC):定义、优势和用例
数据变更捕获(CDC)是一种捕捉数据变更的技术。它能实时监控数据源(如数据库、应用系统等)中数据的增、删、改等变化,并记录下这些变更信息。与传统批处理方式相比,CDC 实现了近乎实时的数据集成和同步,使企业能够随时掌握最新信息,从而基于数据做出及时决策。转载 2024-06-30 08:50:48 · 61 阅读 · 0 评论 -
基于用户投票的排名算法(六):贝叶斯平均
上一篇介绍了威尔逊区间,它解决了投票人数过少、导致结果不可信的问题。举例来说,如果只有2个人投票,"威尔逊区间"的下限值会将赞成票的比例大幅拉低。这样做固然保证了排名的可信性,但也带来了另一个问题:排行榜前列总是那些票数最多的项目,新项目或者冷门的项目,很难有出头机会,排名可能会长期靠后转载 2024-06-08 09:11:11 · 62 阅读 · 0 评论 -
基于用户投票的排名算法(五):威尔逊区间
迄今为止,这个系列都在讨论,如何给出"某个时段"的排名,比如"过去24小时最热门的文章"。但是,很多场合需要的是"所有时段"的排名,比如"最受用户好评的产品"。这时,时间因素就不需要考虑了。这个系列的最后两篇,就研究不考虑时间因素的情况下,如何给出排名转载 2024-06-08 09:02:10 · 58 阅读 · 0 评论 -
基于用户投票的排名算法(四):牛顿冷却定律
如果你想放慢 “热文排名” 的更新率,“冷却系数” 就取一个较小的值,否则就取一个较大的值。但是,为了保证所有人都在同一页上,我再说一下,到目前为止,我们用不同方法,企图解决的都是同一个问题:根据用户的投票,决定最近一段时间内的 “热文排名”。这样假设的意义,在于我们可以照搬物理学的冷却定律,使用现成的公式,建立 “温度” 与 “时间” 之间的函数关系,轻松构建一个 “指数式衰减”(Exponential decay)的过程。你可能会觉得,这是一个全新的课题,伴随着互联网而产生,需要全新的方法来解决。转载 2024-06-07 22:20:51 · 611 阅读 · 0 评论 -
基于用户投票的排名算法(三):Stack Overflow
上一篇文章,我介绍了 Reddit 的排名算法。它的特点是,用户可以投赞成票,也可以投反对票。也就是说,除了时间因素以外,只要考虑两个变量就够了。但是,还有一些特定用途的网站,必须考虑更多的因素。世界排名第一的程序员问答社区 [Stack Overflow](http://stackoverflow.com/?tab=hot),就是这样一个网站。转载 2024-06-07 07:00:21 · 62 阅读 · 0 评论 -
基于用户投票的排名算法(二):Reddit
得到净反对票的文章,会排在最后(因为得分 是负值)。假定同一时间有两个帖子发表,文章 A 有 1 张赞成票(发帖人投的)、0 张反对票,文章 B 有 1000 张赞成票、1000 张反对票,那么 A 的排名会高于 B,这显然不合理。结合前一部分,可以得到结论,如果前一天的帖子在第二天还想保持原先的排名,在这一天里面,它的 z 值必须增加 100 倍(净赞成票增加 100 倍)。结论就是,Reddit 的排名,基本上由发帖时间决定,超级受欢迎的文章会排在最前面,一般性受欢迎的文章、有争议的文章都不会很靠前。转载 2024-06-06 07:47:07 · 71 阅读 · 0 评论 -
基于用户投票的排名算法(一):Delicious 和 Hacker News
互联网的出现,意味着 “信息大爆炸”。用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。各种各样的排名算法,是目前过滤信息的主要手段之一。对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新。排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位。转载 2024-06-06 07:26:06 · 64 阅读 · 0 评论 -
流计算系统选哪个?
今天从技术的角度聊聊流计算(Streaming)技术。尽管概念上有许多共通之处,例如时间窗口、水位(Watermark)等等,但其实在实现层面上,各个系统几乎都有独特的设计。所谓“存在即合理”,这种系统设计的多样性也正呼应了流计算应用场景的多样性,而并非简单的单一维度上的孰好孰坏。本文从内部实现的角度,深入对比了市面上常见的流计算系统,包括 Apache Flink、RisingWave、Spark Streaming、ksqlDB 等。希望这篇文章能在技术选型时对你有帮助。转载 2024-06-05 22:08:09 · 62 阅读 · 0 评论 -
图解 CAP 理论
CAP 定理是分布式系统中的一个重要的基本定理,指出任何分布式系统最多只能具有以下三个属性中的其中两个:Consistency(一致性)Availability(可用性)Partition tolerance(分区容错)1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有上述三个指标。它们的第一个字母分别是 C、A、P。Eric Brewer 说,这三个指标不可能同时做到,因此这个结论就叫做 CAP 定理。1. 什么是CAP定理CAP定理指出任何分布式系统不可能原创 2022-05-29 14:57:53 · 380 阅读 · 0 评论 -
Kappa: Lambda 架构的质疑
1. 什么是 Lambda 架构Nathan Marz 写了一篇非常受欢迎的博客文章,描述了 Lambda 架构(如何打破 CAP 定理)。Lambda 架构是一种在 MapReduce 和 Storm 或类似系统之上构建流处理应用程序的方法。Lambda 架构如下图所示:这种架构的工作方式是接收日志,并将其并行输入批处理系统和流处理系统。我们需要两次逻辑处理,一次在批处理系统中,一次在流处理系统中。我们可以在查询时将两个系统的结果融合在一起来产生完整的答案。上述 Lambda 架构可以有很多变种,我翻译 2022-01-15 23:12:29 · 267 阅读 · 0 评论 -
Exactly once 未必严格一次
分布式事件流处理已逐渐成为大数据领域的热点话题。该领域主要的流处理引擎(SPE)包括 Apache Storm、Apache Flink、Heron、Apache Kafka(Kafka Streams)以及 Apache Spark(Spark Streaming)等。处理语义是围绕 SPE 最受关注,讨论最多的话题之一,其中"严格一次(Exactly-once)" 是很多引擎追求的目标之一,很多 SPE 均宣称可提供"严格一次"的处理语义。然而。转载 2022-08-21 22:39:39 · 221 阅读 · 0 评论 -
2022年数据工程现状
虽然该领域的公司数量在不断增加,但可以看到,其中有几个类别的产品出现了整合迹象。MLOps 趋向于端到端,Notebook 正在进入编排领域,而编排正在转向数据谱系和可观察性。与此同时,我们看到,开放式表格式进入了元存储功能。而在治理层,安全和权限管理工具进入目录领域,反之亦然。本文最初发布于 lakeFS 官方博客。自我们分享“2021 年数据工程现状”已经过了一年。从去年 5 月我们发布那篇文章以来,数据领域并没有多少变化。事实上,我们曾在内部讨论过 2022 年还要不要做一次更新。开玩笑的。转载 2024-04-21 15:19:21 · 42 阅读 · 0 评论 -
2024 开源数据工程生态系统全景图
虽然生成式人工智能和ChatGPT带来的沸沸扬扬的炒作令科技界为之一振,但在数据工程领域,2023年仍然是一个令人振奋和充满活力的一年,数据工程生态系统变得更加多样化和复杂化,系统中的所有层面都在不断创新和演进。随着各种开源工具、框架和解决方案的持续涌现,数据工程师的选择也越来越多!在这样快速变化的环境中,紧跟最新技术和趋势的重要性不言而喻。选择合适的工具来完成合适的工作是一项至关重要的技能,确保在不断变化的数据工程挑战面前保持效率和相关性。转载 2024-04-21 10:17:28 · 114 阅读 · 0 评论 -
Latex 常用数学公式
一般来说,1/2 这种形式更受欢迎,因为对于少量的分式,它看起来更好些。这样极限函数的上标和下标就会出现在符号的上下方,而不是右下方。放在开分隔符前,会自动决定分隔符的正确大小。某些情况下有必要手工指出数学分隔符的正确大小,这可以使用命令。,并且只有当这两个分隔符排在同一行时大小才会被正确确定。方根符号的大小由 LATEX自动加以调整。在定义从 A 到 B 的向量时非常有用。作为大多数分隔符命令的前缀。在表达式的上、下方画出水平线。在表达式的上、下方画出一水平的。你可以在下述命令的前面加上。原创 2024-03-27 21:43:31 · 1259 阅读 · 0 评论 -
美团 Doris Bitmap 精确去重优化实践
第一部分将介绍精确去重的业务场景以及现有的一些解决方案,并讲解 Doris MPP 架构在两阶段聚合实现中的原理和 Bitmap 数据结构的作用。在流量场景中,精确去重计算无疑是一项重要任务。尤其在计算多种维度下的去重指标时,如 PV、UV 及日活用户数等,去重指标的计算复杂度相较于普通指标(如 SUM 或 AVG)更高,更容易成为性能瓶颈。数仓生产:在 OLAP 引擎现场计算能力出现之前,去重指标的计算可以在数据仓库生产环节完成。转载 2024-01-30 07:55:19 · 569 阅读 · 0 评论 -
美团酒旅实时数据规则引擎应用实践
美团点评酒旅运营需求在离线场景下,已经得到了较为系统化的支持,通过对离线数据收集、挖掘,可对目标用户进行T+1触达,通过向目标用户发送Push等多种方式,在一定程度上提高转化率。但T+1本身的延迟性会导致用户在产生特定行为时不能被实时触达,无法充分发挥数据的价值,取得更优的运营效果。转载 2023-10-18 07:48:29 · 247 阅读 · 0 评论 -
多数据源场景下360如何构建统一查询?
随着业务的不断增多,为满足不同场景下对计算时延和吞吐的需求,各式各样的数据源大显身手。然而,由于不同数据源的发展历程不同,迭代速度不一,无法向用户提供统一的数据处理范式。且数据源所处介质天然隔离,交叉关联分析阻碍重重,导致数据人员要为此承担高额的学习和分析成本。那么面对这些问题,360 是如何构建高效统一的 SQL 查询引擎呢?以下内容整理来自 ArchSummit 全球架构师峰会(深圳站)2019 奇虎 360 大数据资深研发工程师 刘思源的演讲。转载 2023-04-08 00:03:07 · 283 阅读 · 0 评论 -
个推 异构数据的SQL一站式解决方案
在近日举办的GDG开发者大会广州站上,个推高级技术总监董霖以“异构数据的SQL一站式解决方案”为主题,深入分享了个推在SQL领域多年的实战经验。本文将从三方面阐述统一SQL:一、为什么要统一SQL二、如何统一SQL三、个推统一SQL实践转载 2023-04-07 23:22:11 · 287 阅读 · 0 评论 -
搜狐 Hive SQL 血缘关系解析与应用
在数据仓库构建的过程中,SQL 血缘关系体现了各个数据表以及相关属性的依赖关系。SQL 血缘关系即是对业务流程涉及到的模型表进行梳理,包含了集群血缘关系、系统血缘关系、表级血缘关系和字段血缘关系,其指向数据的上游来源,向上游追根溯源。通过简单的 SQL 语句展现各个表之间的数据关系。转载 2022-12-29 10:39:30 · 1068 阅读 · 0 评论 -
顺丰 基于 Hook 机制实现数据血缘系统
目前已经实现了对 Hive 和 DataX 的 Hook 模块开发,能够满足对基于 Hive 的离线数据计算任务和基于DataX 的离线数据集成任务进行血缘采集,基本满足了大多数场景下的离线任务血缘采集的需求。Hook 模块采取插件式开发模式,实现多种大数据执行引擎各自的 Hook 函数,对其任务配置参数进行解析,获取当前任务的集群信息、数据流向信息,操作规则等,并进行相应的血缘解析工作,生成TableLineageInfo 对象,最后通过 Http 请求的方式将结果发送到 Collector 端。转载 2022-12-29 23:54:48 · 1425 阅读 · 0 评论 -
Doris 基于 Hive 表的全局字典设计与实现
我们在业务上需要OLAP引擎能够⽀持精确去重的预计算,但这个需求本身是不是合理的呢?目前线上数据分析会有一些与⾦钱相关的计算,比如某一个业务方要计算他们个人的销售业绩、以及一些广告的点击率等,这些能够转化为金钱的计算需求是要求精确去重的,近似去重是⽐较难以容忍的。转载 2023-03-07 23:33:00 · 720 阅读 · 0 评论 -
使用 Range-Encoded Bit-Slice Indexes 解决 Bitmap 范围查询和高基维问题
这篇文章中描述的所有概念都是基于过去几十年里一些非常聪明的人所做的研究。我只是从更高层次上描述这些事情,在阅读下面内容之前建议您先阅读更多关于 Bit-sliced Indexes 和 Range-Encoding 的内容。翻译 2023-03-05 15:36:04 · 518 阅读 · 0 评论 -
哔哩哔哩基于拉链表的全量表极限存储优化方案
对全量分区表进行拉链化,优化的技术方案不仅能降低存储,而且还能降低一定的计算资源。后续我们会和大家聊聊如何进行拉链表的幂等化,如何高效地对数据进行覆盖率和重复率测试,预估全量分区表拉链化的收益以及有选择性地优化全量分区表等内容。互联网场景下基于拉链表的全量表极限存储优化方案。转载 2022-10-27 20:57:02 · 248 阅读 · 0 评论 -
大数据分析常用去重算法分析之Bitmap
去重分析在企业日常分析中的使用频率非常高,如何在大数据场景下快速地进行去重分析一直是一大难点。在 Apache Kylin Meetup 北京站上,我们邀请到 Kyligence 大数据研发工程师陶加涛为大家揭开了大数据分析常用去重算法的神秘面纱。Apache Kylin 作为目前唯一一个同时支持精确与非精确去重查询的 OLAP 引擎,非常好地覆盖了大数据上的去重需求。本次分享讲解了 Kylin 这两种去重方式背后用到的算法,希望能让大家从源头上理解为什么 Kylin 的去重查询有着如此优异的性能。转载 2023-02-04 16:39:48 · 328 阅读 · 0 评论 -
深入浅出 SQL 优化器原理
SQL优化器是数据库、数据仓库、大数据等相关领域中最复杂的内核模块之一,它是影响查询性能的关键因素。比如大家熟知的开源产品 MySQL、PostgreSQL、Greenplum DB、Hive、Spark、Presto,都有自己的优化器。本文将由浅入深地带读者了解其中技术原理转载 2023-02-11 21:44:24 · 495 阅读 · 0 评论 -
RoaringBitMap在B站大数据中的应用
本文阐述了RBM的基础原理和性能分析,比较了与原BitMap的异同点,与B站的一些大数据应用场景相结合来做方案改造,来达到降本增效、方便下游使用的目的。大数据方面还有很多方向可以做,比如通过RBM优化Redis中的bitmap,通过RBM来提高Flink存储和计算去重状态的性能,通过RBM用来做实时特征人群的存在判定等等,希望本文为大家提供解决类似问题的一种新思路,欢迎随时探讨。参考文章:348–365.RoaringBitMap在B站大数据中的应用。转载 2022-11-07 22:01:53 · 1393 阅读 · 0 评论 -
Roaring Bitmap 更好的位图压缩算法
Bitsets(也称为Bitmaps)通常用作快速数据结构。不幸的是,他们可能会占用太多内存。为了降低内存的使用,我们经常会使用压缩的位图。Roaring Bitmaps 是一种压缩的位图,要优于常规的压缩位图,例如 WAH,EWAH 或者 Concise。在某些情况下,可以比它们快几百倍,并且通常提供更好的压缩。几乎所有流行的编程语言(Java,C,C ++,Go,C#,Rust,Python …)都提供了 Roaring Bitmaps。原创 2022-11-13 16:08:28 · 1382 阅读 · 0 评论 -
使用 Range-Encoded 实现 Bitmap 范围查询
在一些标签系统中,经常需要通过标签进行筛选,例如电商里的圈人,圈货都是根据预先打上的标签进行运算,得到最终的结果,由于用户和商品的量级往往非常大,常见的解决方案是使用bitmap存储,每个标签对应一个bitmap,通过对bitmap的压缩(数据往往非常稀疏)既可以降低存储压力,同时又能支持高效的标签运算。然而,在某些查询场景下,例如所有低于99元的男士T恤这样的圈货条件,使用bitmap处理起来就比较费劲,因为价格低于99是一个范围查询,bitmap如何支持呢?转载 2022-11-27 22:12:42 · 666 阅读 · 4 评论 -
货拉拉大数据对Bitmap的探索与实践(下)
bitmap 索引广泛应用于很多大数据OLAP引擎中,如Druid、Kylin、Doris等,是一种高效的索引技术。货拉拉大数据使用Apache Druid OLAP引擎支持罗盘、AB test等多个分析场景,所以本篇将介绍在Druid中如何构建bitmap索引实现高效查询。同时也介绍了如何利用bitmap的去重能力实现高效的精确去重功能,以及为了支撑更多场景我们做的一些改造优化。希望大家读后都能有所收获。转载 2023-02-05 18:04:30 · 263 阅读 · 0 评论 -
货拉拉大数据对BitMap的探索与实践(上)
本文首先通过对于BitMap的简单实现以及对于Java中BitSet源码的分析,提升读者对于其底层原理的理解,然后分析了BitMap的特点,并针对其存储优化的方案,讲解了RoaringBitmap技术的原理,最后列举了对于BitMap的常见实用场景。希望大家读后都能有所收获。货拉拉大数据对BitMap的探索与实践(上)转载 2023-02-05 17:32:44 · 382 阅读 · 0 评论