Stable Diffusion 文字生成图片的教程已经很多了。这篇文章是讲解如何用 Kohya Trainer 在 Google Colab 上训练一个 LyCORIS 模型。在读之前希望你已经至少玩过 Stable Diffusion。

阅读全文 »

前言: 大数据浪潮已经火了十几年,但是流处理领域似乎一直不温不火。直到近两年,从 Confluent(Kafka 背后的商业化公司)上市,到 Snowflake、Databricks 纷纷投资 Streaming,再到 Decodable、Immerok 这些 start-up 公司的涌现。今年 2023 SIGMOD Systems Award 意外颁发给了 Apache Flink,让人不免有些兴奋——流计算的好时代终于到来了吗?

今天从技术的角度聊聊流计算(Streaming)技术。尽管概念上有许多共通之处,例如时间窗口、水位(Watermark)等等,但其实在实现层面上,各个系统几乎都有独特的设计。所谓“存在即合理”,这种系统设计的多样性也正呼应了流计算应用场景的多样性,而并非简单的单一维度上的孰好孰坏。

本文从内部实现的角度,深入对比了市面上常见的流计算系统,包括 Apache Flink、RisingWave、Spark Streaming、ksqlDB 等。希望这篇文章能在技术选型时对你有帮助。

阅读全文 »

众所周知,Apache Calcite 是为数不多的开源 Volcano/Cascades 查询优化器实现之一,最早脱胎于 Hive 的优化器,后来也被 Flink 等一众项目采用。

但事实上 Calcite 中的 VolcanoPlanner 并非像论文中描述的那样是一个 top-down 优化器。去年阿里云 MaxCompute 团队向 Calcite 提交了 PR,引入了新的 top-down 优化选项,同时也弥补了之前缺失的剪枝、pass-through 等特性。

本文假设读者已经对 Apache Calcite 以及 Volcano/Cascades 优化器的原理比较熟悉。

阅读全文 »

Apache Doris 原名是 Palo,由百度于 2017 年开源,Palo 这个词来自 OLAP 的反转,寓意这是一个 OLAP 系统。

初次看到它的时候以为是又一个数据仓库产品,没怎么关注,直到最近才发现和我们熟悉的 Greemplum、Impala 等等有不少区别,其中最有特色的是它的数据模型,借鉴自 Google 2014 年公开在 VLDB 上的 Mesa。本文的前半部分也会聊聊 Doris/Mesa 的数据模型是怎样的。

阅读全文 »

时间戳(timestamp)是分布式事务中绕不开的重要概念,有意思的是,现在主流的几个分布式数据库对它的实现都不尽相同,甚至是主要区分点之一。本文聊一聊时间戳的前世今生,为了把讨论集中在主题上,假设读者已经对数据库的 MVCC、2PC、一致性、隔离级别等概念有个基本的了解。

阅读全文 »

Yugabyte DB 是一个全球部署的分布式数据库,和国内的 TiDB 和国外的 CockroachDB 类似,也是受到 Spanner 论文启发,所以在很多地方这几个数据库存在不少相似之处。

与 Cockroach 类似,Yugabyte 也主打全球分布式的事务数据库——不仅能把节点部署到全球各地,还能完整支持 ACID 事务,这是他最大的卖点。除此以外还有一些独特的特性,比如支持文档数据库接口。如果我猜的没错,Yugabyte 早期被设计成一个文档数据库,后来才调整技术路线开始主打 SQL 接口。

阅读全文 »

在过去很长一段时间内,HotSpot JVM 的首选垃圾收集器都是 ParNew + CMS 组合。直到 JDK7 中 Hotspot 团队首次公布了 G1(Garbage-First),并在 JDK9 中用 G1 作为默认的垃圾收集器。我们团队最近也将用了很多年的 CMS 换成了 G1 垃圾收集器。

本文主要从 G1 的论文 Garbage-First Garbage Collection 出发,结合其他较新的白皮书等,讲解 G1 垃圾收集器的工作原理。

阅读全文 »

本文翻译自 Javadoc coding standards - Stephen Colebourne's blog

Javadoc 是 Java 编程中很重要的一部分,然而却很少有人谈论如何去写好一个的 Javadoc。如果想写好 Javdoc,首先最好有一份代码规范。

Javadoc 代码规范

我之前尝试过一些 Javadoc 的标准。考虑到每个人喜好不同,我这里只想谈谈最基本的一些原则,不去涉及方方面面的细节。另外,我们只讨论 Javadoc 的格式,其内容不在本文范围之内。

阅读全文 »

窗口函数(Window Function)是 SQL2003 标准中定义的一项新特性,并在 SQL2011、SQL2016 中又加以完善,添加了若干处拓展。窗口函数不同于我们熟悉的普通函数和聚合函数,它为每行数据进行一次计算:输入多行(一个窗口)、返回一个值。在报表等分析型查询中,窗口函数能优雅地表达某些需求,发挥不可替代的作用。

本文首先介绍窗口函数的定义及基本语法,之后将介绍在 DBMS 和大数据系统中是如何实现高效计算窗口函数的,包括窗口函数的优化、执行以及并行执行。

阅读全文 »
0%