在 MariaDB 中始终使用正确的 UUID

以下文章由 Stefano Petrilli 撰写,他为 MariaDB 贡献了 UUIDv4UUIDv7 的实现。谢谢你,Stefano!


通用唯一标识符(UUID)的原始版本(现在称为 UUIDv1)首次出现在 20 世纪 80 年代。它们提供的最有趣的保证是,生成的 ID 在空间和时间上始终是唯一的。

为了遵守这一承诺,它使用了三个元素的组合

  • 节点,这是一个标识生成 UUID 的机器的字段。

不可能的任务:零配置 SSL

SSL(姑且这么称呼,尽管 SSL 2.0 和 SSL 3.0 早已被 TLS 1.0–1.3 协议取代)支持于 2001 年在 MySQL 中实现,因此 MariaDB(诞生于 2009 年)一直拥有它。但在这二十多年的 SSL 支持中,存在一个巨大的问题。它需要繁琐的手动配置,所以大多数用户从未费心去配置,并接受了查询和数据以未受保护方式发送的事实。这在 2001 年可能略有风险,但在 2023 年绝对是鲁莽的。

传统方法

让我们看看。首先,安装 MariaDB 或 MySQL 的用户必须生成私钥和证书。

索伦对邓布利多和梅林说……

这听起来像一个蹩脚的跨类型笑话,但它不是。它是一个蹩脚的跨类型数学问题。我不得不承认,当我读到它时,它没有这些名字,但我希望它更具史诗感。所以,

索伦对邓布利多和梅林说,我终于把你们都抓住了。现在我将选择两个大于一且小于一百的数字。邓布利多会知道它们的乘积,梅林会知道它们的总和。如果你们这些蠢货能告诉我我选择的数字,我就放了你们。

10.7 预览功能:CONVERT PARTITION

如果你正在使用表分区,你很可能听说过 ALTER TABLE … EXCHANGE PARTITION … WITH TABLE … 命令。它在 MariaDB 中已经存在很久了。但是如果你 查看手册任何手册)或搜索网络,你会发现它几乎唯一的用例是将分区转换为独立的非分区表,或将独立的非分区表转换为分区。

而且当时的设计使其使用方法一点也不直观。要将分区转换为表,你需要先创建一个结构与分区相同的空表,然后与分区进行交换,最后删除空分区。

MariaDB 10.5.8、10.4.17、10.3.27 和 10.2.36 紧急发布版现已可用

MariaDB 基金会很高兴地宣布 MariaDB 10.5.8MariaDB 10.4.17MariaDB 10.3.27MariaDB 10.2.36 已可用,这是其各自系列的最新稳定版本。

为什么我们在 10.5.7、10.4.16 等版本发布仅一周后再次发布 MariaDB?情况有多紧急?

之前的预定版本系列(10.2 及更高版本)包含了一项与安全相关的更改——MariaDB 服务器在接受来自客户端的网络数据包方面变得更加严格。它从未特别信任客户端,但处理预处理语句时仍然存在一个漏洞,即服务器只是假定客户端发送的数据是正确的。…

MariaDB 10.4 中的身份验证 — 理解这些变化

MariaDB Server 10.4 带来了许多与安全相关的变化。其中一些只是优化(例如 MDEV-15649),一些改进了现有功能,使其更强大(MDEV-15473, MDEV-7598)或更方便(MDEV-12835, MDEV-16266)。一些是 MySQL 兼容性功能,由我们的用户提出需求(MDEV-7597, MDEV-13095)。

但任何 MariaDB Server 用户,无论是经验丰富的老手还是新手,做的第一件事——甚至在发出第一个 SQL 语句之前——就是登录。对数据库服务器进行身份验证。…

决斗:gdb 对阵链表、树和哈希表

我第一次接触 gdb 命令 duel 是大约 15 年前在某个旧的 IRIX 系统上。我立刻爱上了它在 MySQL 调试期间显示各种数据结构的便利性,并希望 Linux 也有类似的东西。后来我发现 Duel 并非 IRIX 特有的东西,而是 Michael Golan 在 93 年编写的一个用于 gdb 4.6 的公共领域补丁。不幸的是,它从未被纳入 gdb 中(据我所知是出于许可原因)。现在 gdb 8 已经发布,而这个补丁显然不再适用。我没有修复这个补丁,而是用 Python 重新实现了 Duel,使用了 gdb Python APIArpeggio 解析器。…

使用 gdb PrettyPrinting API 让输出更美观

任何翻阅过 gdb 手册的人都知道 gdb 有某种 Python API。任何粗略看过的人都见过一个叫做“Pretty Printing”的东西,据说它能告诉 gdb 如何以一种美观易读的方式打印复杂数据结构。嗯,至少我见过这个,但我从未多想。然而,有一天,当我输入
(gdb) p/t table->read_set->bitmap[0] @ (table->read_set->n_bits+7)/8
当我第一百次输入时,我问自己:“为什么不呢?”,然后就开始了…
(更多…)