IT技术精华 http://it.taocms.org/ 聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长 2022-01-25 IT技术精华 100766 一封来自工信部的感谢信


今天,阿里巴巴收到一封来自工业信息化部信息通信发展司的感谢信。

信里这样写到:

……我司牵头圆满完成了IPv6规模部署与应用、个人网盘服务业务用户体验保障等重要工作。在上述工作推进过程中,贵公司IPv6项目组,阿里云盘团队、阿里云基础设施事业部、基础产品事业部、法务及合规部积极响应、认真落实,推动工作取得了积极成效,表现出良好的专业素养和工作作风。


值此新年之际,感谢贵公司在过去一年中的鼎力支持,希望在今后继续加强合作,共同为推动信息通信业高质量发展、助力网络强国建设做出贡献!


——工业和信息化部信息通信发展司



收到这封信,相关项目组成员都深受鼓舞,回想一路走来的艰辛历程,倍感珍惜。


4年前,阿里巴巴集团就开始了IPv6(互联网协议第六版)改造项目。目前,阿里巴巴集团旗下淘宝、优酷视频、高德地图等已全面支持IPv6;阿里云全部核心云产品支持IPv6,是国内首家全面提供IPv6服务的云厂商;移动互联网 IPv6流量占比超过76%,超6亿用户因此受益。


为什么IPv6 这么重要?这与我们正在使用的IPv4地址资源逐步枯竭有关。


受限于32位的设计,IPv4能提供的有效IP地址仅有43亿个,早在2年前就已经分配殆尽,安全方面更是面临巨大挑战。


而128位的IPv6拥有近乎无穷的地址资源,在安全性、移动性、服务质量等方面具备巨大优势。


如果把IPv4比作“羊肠小道”,IPv6就如同“高速公路”。全面部署IPv6,刻不容缓。


当然IPv6的部署和改造也不是一帆风顺的。业界专家们认为:“IPv6在阿里巴巴超大规模体量的互联网和云计算场景部署,是一项高难度、高投入、高风险的系统工程。”


短短4年多时间,阿里巴巴旗下应用的IPv6用户数量和流量提升近千倍,但用户体验、应用安全等并未受到影响。基于与运营商的合作,阿里巴巴对IPv6网络进行了多轮专项质量优化,解决了大量连接失败率、网络时延、MTU问题,保障应用体验更加流畅。


此前,阿里巴巴负责的5项IPv6改造案例还入选了由中央网信办、工业和信息化部组织评选的100个IPv6规模部署和应用优秀案例。



IPv6不仅能为“全世界的每一粒沙子”都赋予一个网址,还能让每一个消防栓和路灯都能够变成一个智慧终端,加快全社会向数字经济发展。


立即购买:淘宝网]]>
IT技术精华 2022-01-25 14:01:03
100747 改 3 行代码不应该花一整天的时间

作者 | Adam Berg
译者 | 冬雨
策划 | 凌敏  
我曾在 5 家不同的软件公司工作过,做过游戏开发、手机开发和网页开发。在这些工作经历中,有一个话题一直没有得到应有的关注:迭代时间。原本我打算写一篇关于构建时间的文章,但我认为,迭代时间的视角能够更准确地切中要害。我将迭代时间定义为看到代码变更按照预期工作所花费的时间。

这篇文章的目的是帮助你反思当前的开发过程。你的管道中是否有某些部分花费了过多的时间?是否有方法做一些调试工具,使变更测试更容易?单元测试是否会带来好处,但你却一直回避它,只因它的前期成本比较大?

2014 年,我以实习生的身份加入了 FIFA 团队。3A 游戏开发世界对于我来说是全新的体验。我记得当我看到我的桌面有 16 个 (也许更多?)CPU 核心时,眼睛瞪得像铜铃。而后我按照指示进行设置,被告知初始构建至少要 30 分钟,在此之后增量构建将会变快。

虽然增量构建确实快得多,但编译一行代码变更仍然很可能需要至少 10 秒种。当时作为一名相对稚嫩的 C++ 开发人员,我犯了很多语法错误。每次我修改代码,都要等待 15 秒,看看我做错了什么

改 3 行代码需要一整天的时间

在等待时间里,我可能会随便上网搜点什么,试着想想其他的变更,或者看看聊天工具上的即时消息。毫无疑问,我的注意力可能被分散了,一分钟之后我才想起来去看看编译状态。

编译只是第一步。现在需要将应用程序打包部署到我所使用的平台上。当我首次打开 PS Vita、任天堂 3DS 和任天堂 Wii 时,要等 30 秒钟左右,游戏才可以在主机上运行。而后我需要启动游戏,导航到我正在改的那个游戏功能,最终可能看到我的变更。

我经常负责改竞赛的逻辑。测试这里的变更可能意味着要在职业模式中过上几个赛季,才能测出改了什么。不开玩笑地说,改 3 行代码需要一整天的时间,这样才能知道它实际上是否正确运行。

调试工具

我最终转向了较新的平台,被安利了一个“试验台”。它精简了一些包,试图通过只关注特定的代码区域来减少迭代时间。我找到职业模式试验台之后,就几乎再也没有运行过游戏。这个测试平台将在几秒钟内构建,并包含各种调试功能。这一切都运行在个人电脑上,事情变快了。

我很兴奋!但我观察了一下周围的人,我发现很多人很明显不知道如何利用这个工具。相反地,他们在沿用启动整个游戏的老方法,即通过 UI 手动导航到他们需要测试变更的功能。我很快就成为了这个试验台的拥护者,并频繁地添加新功能,使开发新内容变得更容易。

我仍然需要偶尔运行完整的游戏,但这个测试平台让我能够 快速试验并了解代码是如何运行的,从而让我 保持专注。它还使我能够以合理的 (以我的标准来看) 速度来修复实际的问题。

单元测试

最后,我换了团队,我发现这个团队已经在开始做单元测试了。虽然我当时有一些单元测试的经验,但我从未在游戏开发中使用过。

有人向我简单介绍了代码、各种测试,以及如何运行。我发现测试包基本上只包含我们团队特定游戏领域的代码。一次全新的构建可能需要 10 秒,之后的增量构建可能不到 1 秒。

很难强调这个阈值有多重要。实际情况是,在不到一秒钟内编译 (和运行) 测试,我现在可以持续关注这一个任务。编译和逻辑错误在所难免。但当我能够快速发现错误并重新编译时,就进入了一种流畅的状态。

第一次,我开始喜欢在工作中编写代码了。重构和移动大块代码是件轻而易举的事。修改别人的代码变得容易得多,并且知道我没有造成什么破坏。变更代码焦虑症消失了

我接着重写了竞赛逻辑,以加快速度并添加单元测试。各种各样的边缘情况,使单元测试成为确保覆盖所有主要内容的完美方法。

当我最终离开这家公司时,我感觉倍儿爽,因为 我留下了一个有自我检查的系统。我花了很多时间去弄清楚一些东西应该如何工作,这些都被编入了测试规格说明书中。

结    语

在很多方面,我都很感激自己在电子艺界的那段时光。我多次看到长期工程计划生根发芽带来了真正的日常收益,而这就是其中的一次。

在某些时候,有人会站出来说:“测试这些变更需要很长时间,有没有更好的方法?”这个问题我们每天都应该问问自己。

原文链接:

https://devtails.xyz/3-lines-of-code-shouldnt-take-all-day?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDEyODY5NTYsImciOiJZS0pXY1ZLS1RDREp2dDhWIiwiaWF0IjoxNjQxMjg2NjU2LCJ1c2VySWQiOjI1NjUxMTk2fQ.jQ0_q56To1EZSXgHHeaFPLix3gvQa-FeliLv6n8fNwI

译者简介:

冬雨,小小技术宅一枚,从事研发过程改进及质量改进方面的工作,关注编程、软件工程、敏捷、DevOps、云计算等领域,非常乐意将国外新鲜的 IT 资讯和深度技术文章翻译分享给大家,已翻译出版《深入敏捷测试》、《持续交付实战》。

今日好文推荐

GitHub 上只卖 5 美元的脚本,却给我带来了一年数十万元报酬

增加了一行代码,让我们提高了 3000% 的性能

2021 年人均年终奖 2.3 万元;字节跳动日均进账 10 亿;Flink 联合创始人离职;Boss 直聘强制全员春节原地过年 | Q 资讯

云技术的新变革:阿里云 13 年后重构全部核心调度系统



 活动推荐

《中国卓越技术团队访谈录》是 InfoQ 打造的重磅内容产品,为了能进一步了解读者的实际需求和喜好,持续为大家生产有价值、具备启发性的内容,我们发起了本次调查,真诚邀请广大社区读者参与问卷。同时,如果你希望 InfoQ 关注并采访你所在的技术团队,也可以通过本问卷报名,报名选项在问卷底部。

点击【阅读原文】,即刻参与有奖问卷调查,还有机会获得精美礼品。

如对本次调研有任何疑问或建议,欢迎联系微信 13512772438。


点个在看少个 bug 
立即购买:淘宝网]]> IT技术精华 2022-01-25 10:01:12 100746 尤雨溪:Vue 3 将成为新的默认版本

作者 | 闫园园

近日,尤雨溪宣布:Vue 3 将在 2022 年 2 月 7 日成为新的默认版本。


GitHub 的公告信息里显示,“开发者要关注可能需要采取的措施,来确认是否需要在默认版本切换之前做相应改动以避免发生异常。”

以下为尤雨溪公告原文:

从库到框架

在最开始的时候,Vue 仅仅是一个运行时库。但这些年来,它已经逐步发展成了一个包含许多子项目的框架:

  • 核心库,即 vue npm 包

  • 内容足够当作一本书的文档

  • 构建工具链(Vue CLI、Vue Loader 和其他支持包)

  • 用于构建单页应用的路由 Vue Router

  • 用于状态管理的 Vuex

  • 用于调试和分析的浏览器开发者工具扩展

  • 用于支持开发单文件组件的 VSCode 扩展 Vetur

  • 用于进行静态风格 / 错误检查的 ESLint 插件

  • 用于组件测试的 Vue Test Utils

  • 利用 Vue 运行时功能的定制 JSX Babel 插件

  • 用于静态网站生成的 VuePress

正因为 Vue 是一个社区驱动的项目,才让这一切成为可能。这些项目中的许多都是由社区成员发起,他们后来成为了 Vue 团队的成员。其余的项目最初由我发起,但现在除了核心库之外,几乎都完全由团队维护。

Vue 3 的 “软发布”

随着核心库发布新的大版本,框架的所有其他部分也需要一起同步更新。我们还需要为 Vue 2 用户提供一个升级方案。对于 Vue 这样一个社区驱动的团队来说,这是一个巨大的工程。在 Vue 3 的核心库完成的时候,框架的其他部分要么还在 beta 状态,要么还没有开始适配 Vue 3。当时我们的决定是先发布核心库,这样早期用户可以先用起来,库和上层框架的开发者也可以先适配起来,而我们则继续更新框架的其余部分。

在这个过程中,我们依然将 Vue 2 保留为文档和 npm 安装时的默认版本。这是因为我们知道对于大部分用户来说,在 Vue 3 的其余部分完善以前,Vue 2 仍然提供了更一致且完整的体验。

崭新的 Vue

“软发布” 的过程比预期要长,但这个时刻终于到了:我们很高兴地宣布,Vue 3 将在 2022 年 2 月 7 日成为新的默认版本。

除了 Vue 核心库以外,我们还几乎改进了框架的每个方面。

  • 基于 Vite 的极速构建工具链

  • <script setup> 带来的开发体验更丝滑的组合式 API 语法

  • Volar 提供的单文件组件 TypeScript IDE 支持

  • vue-tsc 提供的针对单文件组件的命令行类型检查和生成

  • Pinia 提供的更简洁的状态管理

  • 新的开发者工具扩展,同时支持 Vue 2/Vue 3,并且提供一个插件系统来允许社区库自行扩展开发者工具面板。

我们还彻底重写了主文档。全新的 vuejs.org (目前处于待发布状态,中文版的翻译还在进行中) 将提供最新的框架概述与开发建议、针对不同背景的用户的灵活的学习路径,在整个指南与示例中都能够在选项式 API 和组合式 API 之间进行切换,以及许多新的深入章节。新文档本身的网站性能也非常优秀——我们将在不久后的另一篇博文中详细探讨一下。

版本切换细节

下面是我们所说的“新的默认版本”的具体细节。此外,请阅读可能需要采取的措施部分,来确认你是否需要在默认版本切换之前做相应改动以避免发生异常。

npm 发布标签
  • npm install vue 将默认安装 Vue 3。

  • 所有其他官方 npm 包的 latest 发布标签将指向其 Vue 3 的兼容版本,包括 vue-router、vuex、vue-loader 和 @vue/test-utils。

官方文档与站点

所有的文档和官方站点将默认切换到 Vue 3 版本。包括:

  • vuejs.org

  • router.vuejs.org

  • vuex.vuejs.org

  • vue-test-utils.vuejs.org (将迁移到 test-utils.vuejs.org)

  • template-explorer.vuejs.org

请注意,新的 vuejs.org 将是完全重写的版本,而不是目前部署在 v3.vuejs.org 的版本。

这些站点当前的 Vue 2 版本将被迁移到新地址 (版本前缀表示库的各自版本,而非 Vue 核心库的版本):

  • vuejs.org -> v2.vuejs.org (旧的 v2 网址将自动重定向到新地址上)

  • router.vuejs.org -> v3.router.vuejs.org

  • vuex.vuejs.org -> v3.vuex.vuejs.org

  • vue-test-utils.vuejs.org -> v1.test-utils.vuejs.org

  • template-explorer.vuejs.org -> v2.template-explorer.vuejs.org

GitHub 仓库

在写这篇文章时,仓库相关的变化已经生效了。

vuejs 组织下的所有 GitHub 仓库将把默认分支切换到 Vue 3 对应的版本。此外,以下仓库都将被重命名,以删除其名称中的 next:

  • vuejs/vue-next -> vuejs/core

  • vuejs/vue-router-next -> vuejs/router

  • vuejs/docs-next -> vuejs/docs

  • vuejs/vue-test-utils-next -> vuejs/test-utils

  • vuejs/jsx-next -> vuejs/babel-plugin-jsx

此外,主文档的翻译仓库将被移至 vuejs-translations 组织下。

GitHub 会自动处理仓库的重定向,所以之前的源码与 issue 问题的链接应该仍然有效。

开发者工具扩展

开发者工具 v6 目前是发布到 Chrome Web Store 的 beta 频道下的,在版本切换后,将移至稳定频道。

目前的稳定频道仍然可用。它将被迁移到遗留频道。

可能需要采取的措施
未指定版本的 CDN 链接

如果你通过 CDN 链接使用 Vue 2 而没有指定版本,请确保通过 @2 来指定一个版本范围:

- <script src="https://unpkg.com/vue"></script>+ <script src="https://unpkg.com/vue@2"></script>
- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>+ <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>

注意:即使使用 Vue 3,你也应该始终在生产环境指定一个版本范围,以避免意外地加载到未来的大版本。

npm latest 标签

如果你使用 latest 标签或 * 来从 npm 安装 Vue 或其他官方库,请更新为明确使用兼容 Vue 2 的版本:

{  "dependencies": {-   "vue": "latest",+   "vue": "^2.6.14",-   "vue-router": "latest",+   "vue-router": "^3.5.3",-   "vuex": "latest"+   "vuex": "^3.6.2"  },  "devDependencies": {-   "vue-loader": "latest",+   "vue-loader": "^15.9.8",-   "@vue/test-utils": "latest"+   "@vue/test-utils": "^1.3.0"  }}

英文原文地址:

https://blog.vuejs.org/posts/vue-3-as-the-new-default.html

今日好文推荐

GitHub 上只卖 5 美元的脚本,却给我带来了一年数十万元报酬

增加了一行代码,让我们提高了 3000% 的性能

2021 年人均年终奖 2.3 万元;字节跳动日均进账 10 亿;Flink 联合创始人离职;Boss 直聘强制全员春节原地过年 | Q 资讯

云技术的新变革:阿里云 13 年后重构全部核心调度系统



 活动推荐

《中国卓越技术团队访谈录》是 InfoQ 打造的重磅内容产品,为了能进一步了解读者的实际需求和喜好,持续为大家生产有价值、具备启发性的内容,我们发起了本次调查,真诚邀请广大社区读者参与问卷。同时,如果你希望 InfoQ 关注并采访你所在的技术团队,也可以通过本问卷报名,报名选项在问卷底部。

点击【阅读原文】,即刻参与有奖问卷调查,还有机会获得精美礼品。

如对本次调研有任何疑问或建议,欢迎联系微信 13512772438。


点个在看少个 bug 
立即购买:淘宝网]]> IT技术精华 2022-01-25 10:01:08 100745 Andy Pavlo:回顾数据库的 2021

作者 | Andy Pavlo
译者 | Sambodhi
策划 | Tina  

本文最初发表于 OtterTune 网站,经原作者 Andy Pavlo 授权,InfoQ 中文站翻译并分享。

对数据库行业来说,这是疯狂的一年,新来者超越了守旧者,供应商为基准数字而 竞争,以及一轮又一轮、令人瞠目结舌的融资。我们也不得不跟一些数据库朋友告别,它们要么被收购,要么破产,要么撤资。

随着年底的临近,在我们即将进入 2022 年,这是一个需要反思和总结的时刻。以下是一些亮点,还有一些我对它们对数据库领域可能意味着什么的想法。

PostgreSQL 的优势

在开发者中,传统的想法已经改变。PostgreSQL 已经成为新应用程序的首选。它是可靠的,有许多特性,而且会越来越多。在 2010 年,PostgreSQL 开发团队转而采取更加积极的发行计划,每年推出一次新的主要发行版(H/T Tomas Vondra)。当然,PostgreSQL 也是开源的。

现在,PostgreSQL 的 兼容 性是很多系统的显著特性之一。这种兼容性是通过支持 PostgreSQL 的 SQL 方言(DuckDB)、有线协议(QuestDB、HyPer)或整个前端(Amazon Aurora、YugaByte、Yellowbrick)来实现。大公司纷纷加入。谷歌在 10 月宣布,他们 在 Cloud Spanner 中增加了 PostgreSQL 的兼容性。同年 10 月,亚马逊宣布了将 SQL Server 查询转换为 Aurora PostgreSQL 的 Babelfish 特性。

DB-Engine 排名 是衡量数据库流行的一项指标。这一排名并非十全十美,也有一定的主观性,但是,对于前十个系统来说,它是合理的近似值。根据这份排行榜,截至 2021 年 12 月,尽管 PostgreSQL 依然位居第四位(紧随 Oracle、MySQL 和 MSSQL),但是在过去一年中,PostgreSQL 已经缩小了与 MSSQL 的差距。

另一个需要考虑的趋势是 PostgreSQL 在网上社区被提及的频率。这给出了另一个信号,即人们在数据库中谈论的内容。我在 Reddit 的数据库版块 下载了 2021 条评论,并且计算了一下数据库名称出现的频率(当然是在 PostgreSQL 中)。我在 Database of Databases 网站上交叉参考了我所知道的每一个数据库的列表,并清理了一些缩写(例如,Postgres → PostgreSQL,Mongo → MongoDB,ES → Elasticsearch),然后在计算出被提及最多的 10 个 DBMS:

当然,这一排名并不是科学的,因为我没有对这些评论进行情感分析。但这一排名清楚地表明,在过去的一年中,人们提到 Postgres 的次数比其他系统要多。经常有开发者发帖询问他们的新应用应该使用哪种 DBMS,而社区的回复几乎都是 Postgres。

 Andy 的观点:

首先,关系型数据库系统已经成为绿地应用(译注:即新建应用程序)的首选,这是一件好事。这表明了 Ted Codd(译注:关系数据库之父,1923 年 8 月 23 日 -2003 年 4 月 18 日)在 20 世纪 70 年代建立的关系模型的持久力。其次,PostgreSQL 是一个伟大的数据库系统。没错,它存在着已知的问题和阴暗的角落,每个 DBMS 都是如此。但是随着如此多的关注和精力集中在它身上,PostgreSQL 在这些年里只会变得越来越好。

基准之争

今年,不同的数据库供应商对基准测试结果并不感兴趣。供应商努力证明自己的系统要比他们的竞争对手更快,这一做法可以追溯到 20 世纪 80 年代末。这也是 TPC 设立的目的,目的在于提供一个无党派的论坛进行对比。然而,近十年来,TPC 的影响和受欢迎程度正在逐渐消退,我们现在正处于一场新的数据库基准之争中。

今年,有三次激烈的“巷战”围绕着基准结果展开。

  • Databricks vs Snowflake

Databricks 宣称其最新的 Photon SQL 引擎 在 100TB TPC-DS 中创造了新的世界纪录。Snowflake 回击称,其数据库 速度快了 2 倍,而且 Databricks 没有正确运行 Snowflake。Databricks 则反驳说,他们的 SQL 引擎的执行和性价比都优于 Snowflake。

  • Rockset vs Apache Druid vs ClickHouse

ClickHouse 针锋相对地说,与 Druid 和 Rockset 相比,它的成本效益还是不错的。不过,这还不算太快:Imply 已经在 Druid 的升级版中进行了测试,并且宣称已经成功。Rockset 也参与了这场竞争,称其在实时分析上表现优于另外两家公司的产品。

  • ClickHouse vs. TimescaleDB

闻到了水里的血腥气,虎式 Timescale 也加入了战斗。他们公布了自己的基准测试结果,并借此机会揭露了 ClickHouse 技术的不足之处。在 Hacker News 网站上,有关第三方基准的争论越来越激烈。

Andy 的观点:

在过去的基准地盘之争中,数据库社区的鲜血已洒得太多 [1] [2] [3]。我坦白说,我也 曾参与这场战争。但我在街上失去了太多的朋友。我曾经和一位女友分手,原因是草率的基准测试结果。当我老了以后,我可以说那是不值得。由于云端 DBMS 拥有大量可活动的部件和可调节的选项,因此,对比这些系统变得更加困难,往往很难确定性能差异的真正原因。实际的应用并不只是一个接一个地运行同样的查询。在获取、转换和清理数据时,用户体验与原始性能数据同样重要。而且,就像我在 这篇有关 Databricks 的基准测试结果的文章 中对记者所说的,只有年长的人才会关心官方的 TPC 数据。

大数据,大手笔

自 2020 年下半年以来,价值至少 1 亿美元的风险投资轮数一直在稳步增长。在 2020 年,共有 327 笔这样的大宗交易(仅占风险投资交易总额的一半不到)。而截至 2021 年 1 月,有 100 多轮风险投资,价值高达 1 亿美元或更多。

2021 年,大量投资资金投向了数据库公司。在运营数据库方面,CockroachDB 在这一年的融资排行榜上遥遥领先,先是以 1.6 亿美元的融资 开始,并于 当年 12 月以 2.78 亿美元的融资 结束。Yugabyte 在 筹集 1.88 亿美元的 C 轮融资 时得到了回报。PlanetScale 获得了 2000 万美元的 B 轮融资,用于其托管版本 Vitess。相对较老的 NoSQL 中坚力量 DataStax 也为他们的 Cassandra 业务进行了一轮风投,募集了 3760 万美元。

虽然这一金额很可观,但是分析型数据库市场更加火爆。TileDB 在 2021 年 9 月筹集了一笔 未披露的金额。Vectorized.io 为其兼容 Kafka 的流媒体平台 筹集了 1500 万美元。StarTree 结束隐身状态,宣布将为 Apache Pinot 商业化 筹资 2400 万美元。Matviews-on-steroids DBMS Materialize 宣布其 C 轮融资金额为 6000 万美元。Imply 为基于 Apache Druid 的数据库服务 筹资了 7000 万美元。2021 年 9 月,SingleStore 筹集了 8000 万美元,这让他们离上市又近了一步。年初,Starburst Data 为其 Trino 系统(以前的 PrestoSQL)筹集了 1 亿美元。另外一家秘密启动的 DBMS 初创公司 Firebolt 宣布,他们已经为其基于 ClickHouse 分叉的新的云数据仓库 筹资了 1.27 亿美元。一家名为 ClickHouse, Inc. 的新公司 筹集了惊人的 2.5 亿美元, 围绕该系统建立了一家新公司(并从 Yandex 取得了 ClickHouse 名称的使用权)。

但在今年规模最大的一轮融资中,Databricks 显然是赢家,他们在 2021 年 8 月 筹集了高达 16 亿美元 的资金,这让其他公司大为吃惊。

 Andy 的观点:

我们正处于数据库的黄金时代。今天有这么多优秀的选择。投资者正在寻找能够成为下一家像 Snowflake 一样上市的数据库初创企业。这些筹款金额超过了以前的数据库初创公司。举例来说,Snowflake 直到其 D 轮才有超过 1 亿美元的融资,这是该公司创立 5 年之后的事情。Starburst 在成立不到三年里就完成了 1 亿美元的融资。目前,融资需要考虑的因素很多(例如,Starburst 团队在分拆之前在 TeraData 从事 Presto 的工作多年),但我感觉这些天来有更多的钱被扔了出去。

悼    念

遗憾的是,在过去的一年里,我们告别了一些数据库朋友。

  • ServiceNow 收购 Swarm64

该公司最初的产品是个 FPGA 加速器,它可以在 PostgreSQL 上进行分析。后来他们使用扩展转而成为 PostgreSQL 的纯软件加速器。但是,他们并没有获得吸引力,特别是和其他拥有大量资金的云数据仓库相比。在完成收购 ServiceNow 之后,仍然没有任何消息表明 Swarm64 产品是否会继续。

  • Splice Machine 破产

Splice 正在推动一种混合(HTAP)的 DBMS,它使用 HBase 来处理工作负载,而 Spark SQL 则用来进行分析。他们随后推动为运营 / 实时机器学习应用提供一个平台。然而,由于 OLTP 和 OLAP 的垄断,使得一体化混合系统无法在数据库市场中得到进一步的发展。

  • 私募股权公司收购 Cloudera

自从上个十年的后半期,世界逐渐远离 MapReduce 和 Hadoop 技术以来,Cloudera 在云数据仓库市场就没有获得同样的吸引力。Impala 和 Kudu 的大部分原始工程团队已经离开了公司,尽管这些项目仍在开发并发布新版本。从 2018 年以来,它的股价已经低于发行价。它的新投资者能否让公司扭亏为盈还有待观察。

 Andy 的观点:

看着另一家数据库项目或公司倒闭,总是让人难过,但是这正是数据库行业的残酷本性。开源可以让 DBMS 的寿命超过创建它的公司,但并非总是这样。因为它的复杂性,数据库需要专职的员工来修复 Bug 并添加新的特性。将一个已经停用的 DBMS 源码的所有权和控制权交给 Apache 基金会 或者 CNCF 这样的开源软件基金会,这并不能说明这个项目将会奇迹般复苏。比如,当 公司倒闭 之后,RethinkDB 就捐给了 Linux 基金会,但是根据 GitHub 的种种迹象,它们已经死在了水里(提交的数量很少,PR 也没有被合并)。这种情况的另一个例子包括 DeepDB:这家公司已经失败,并为其源码创立了 自己的非营利基金会,但是没有人在那里工作。我预期,在接下来的一年里,将会有更多的数据库公司破产,因为他们不可能与大型云计算供应商以及上述那些拥有大量资金的初创公司相抗衡。

坚持不懈的证明

对许多人来说,这场新冠肺炎大瘟疫是一段艰难的时期。新闻中报道了这么多骇人听闻的事情,如果有一则振奋人心的消息,那就太好了。大家都知道,甲骨文公司(Oracle)的联合创始人 Larry Ellison ,在过去几年里运气一直不好。早在 2015 年,Larry 因为是 全球第五富有的人,所以他觉得一切都很好。但时过境迁,Larry 在 2018 年的亿万富翁排名中跌至 第 10 位。

但这种情况在 2021 年 12 月发生了变化,Larry Ellison 的排名超过了谷歌联合创始人 Larry Page 和 Sergey Brin,重新跻身世界第五大富豪。2021 年 12 月,Larry Ellison 的单日收益达到了 160 亿美元,这是由于宣布企业盈利好于预期,甲骨文公司的股票在过去 20 年中单日涨幅第二高。新闻媒体将其归结为投资者对甲骨文向云计算转型的信心增加。

 Andy 的观点:

Larry 和我是 老相识 了,这对数据库界和全人类而言,这无疑是一则感人的故事。身为全球第十富有的人,在他倒霉的时候也许会有些沮丧。但是我很开心看到他能够走出困境,重新回到他所属的名单上。

数据库是我生命中最重要的东西,
仅次于我的家庭

我们期待着迎来光明的新一年。数据库是一个充满弹性和创新的行业,我们很高兴能成为其中的一部分。

祝愿你和你的 宠物 有一个健康和快乐的 2022 年!

作者介绍:

Andy Pavlo,卡内基梅隆大学计算机科学系数据库专业副教授,自动数据库调优服务初创公司 OtterTune(@OtterTuneAI)共同创始人,在 CMU,他是数据库组和并行数据实验室的成员。Andy 还与 Joy Arulraj (佐治亚理工学院计算机科学副教授) 联合著有图书《Non-Volatile Memory Database Management Systems》(暂无中译本,2019 年出版)。这两位教授是研究非易失性内存数据库的知名学者。Andy Pavlo 的推特账号是 @andy_pavlo。

原文链接:

https://ottertune.com/blog/2021-databases-retrospective/

今日好文推荐

GitHub 上只卖 5 美元的脚本,却给我带来了一年数十万元报酬

增加了一行代码,让我们提高了 3000% 的性能

2021 年人均年终奖 2.3 万元;字节跳动日均进账 10 亿;Flink 联合创始人离职;Boss 直聘强制全员春节原地过年 | Q 资讯

云技术的新变革:阿里云 13 年后重构全部核心调度系统



 活动推荐

《中国卓越技术团队访谈录》是 InfoQ 打造的重磅内容产品,为了能进一步了解读者的实际需求和喜好,持续为大家生产有价值、具备启发性的内容,我们发起了本次调查,真诚邀请广大社区读者参与问卷。同时,如果你希望 InfoQ 关注并采访你所在的技术团队,也可以通过本问卷报名,报名选项在问卷底部。

点击【阅读原文】,即刻参与有奖问卷调查,还有机会获得精美礼品。

如对本次调研有任何疑问或建议,欢迎联系微信 13512772438。


点个在看少个 bug 
立即购买:淘宝网]]> IT技术精华 2022-01-25 10:01:06 100744 分库分表实战(第7期):抽丝剥茧 — 千万级数据之sql优化下篇

「 关注“石杉的架构笔记”,大厂架构经验倾囊相授 

帮您解忧,儒猿特别打造 “跳槽训练专栏系列”

内容试看(点击)   |    课程目录(点击)
<<  滑动查看更多专栏  >>


前 言



上一期,我们讲解了sql优化的一般流程,不管是优化join语句、where语句、聚合函数还是排序操作,核心在于利用索引来优化sql语句,但是,大家以为我们为字段创建了索引之后,索引就一定会生效吗?

当然不是的,因为索引可能会失效。

那索引为什么会失效呢?失效之后会导致什么样的后果呢?这一节,我们利用当下的问题,也就是千万级的订单表查询居然需要耗费3s的时间,通过这个问题我们来一探究竟。

目前为止,我们已经初步确定问题原因,说白了就是sql没有正常使用到索引,因为单表千万级的数据,B+树基本也就是三到四层,那么如果正常使用到索引的话,几十毫秒sql就执行完毕了。

所以这条sql,肯定是没有使用到索引,说白了就是索引失效了,此时就会发生大量的磁盘IO,最终就会导致sql查询时间达到了3s。


索引失效会导致什么后果?



首先我们先来看下,索引失效的话,会导致什么后果呢?我们用之前文章出现过的图来举例

我们可以看到,一个数据表中的数据,是通过多个数据页的方式存储起来的,并且数据页之间是通过双向链表的方式连接起来的 。

就以订单表举例,如果订单表中的数据达到上千万数据的级别了,这个时候,存放订单数据的数据页数量,就不是100个数据页这么少了,可能会有几万甚至几十万个数据页。

如果我们不用上索引的话,就意味着我们要面临加载几万甚至几十万个数据页的风险,这个过程同时会导致大量的磁盘IO,是非常耗费性能,影响我们查询的效率的。

所以,我们也可以知道,为什么随着表中的数据量越来越大,就会导致查询的速度会越来越慢了。

而索引在这个时候,就变得越来越重要了,关键在于,我们怎样优化我们的sql语句,让sql语句查询数据的时候,尽量利用索引来查询数据。


sql优化案例实战



| 体验下无索引的查询效率

在进行sql优化之前,我们先来体验下没有索引时,我们sql的一个查询效率。

(1)无索引的查询效率

当前表的数据量为2500W,查询时间已经消耗了65秒

(2)无索引的执行计划

通过explain分析该查询sql的执行计划,我们可以看到这条sql进行了全表扫描。

 (3)  sql执行慢会发生什么连锁反应?

模拟并发请求时,会发现由于sql查询时间过长,导致数据库连接数快速被消耗完,最终导致后面的sql再执行的时候就被拒绝连接了。

| 体验下有索引的查询效率

(1)创建索引

我们可以给order_no字段加上索引,如下图:

(2)有索引的查询效率

为order_no字段添加上索引后再试试查询,看看效率有多大的提高。

我们可以发现同样的sql在无索引和有索引的情况,查询效率差距是非常大的。所以在遇到大表查询慢的场景不妨先查看一下查询字段是否有添加上合适的索引。

(3)有索引的执行计划

 通过执行计划可以看到加索引后,只扫描了一行就找到了需要查询的数据

| sql优化案例:隐式转换导致索引失效

(1)正常使用到索引的情况

在项目中订单号的类型为String,当我们SQL语句编写正确的情况,查询效率是很快的

 (2) 隐式转换导致索引失效

当我们错误的使用数值类型的订单号去进行查询时,我们看一下查询时间。

通过图中的执行情况,执行效率确是天差地别的,查询时间竟然需要整整24秒!

(3)通过explain查看索引失效的执行计划

通过explain分析这条SQL的执行计划,我们会发现虽然order_no字段上我们设置了索引,但这条查询依然进行了全表扫描,说白了就是根本没有用到索引,因此查询效率才会大减。


结束语



最后,简单做一个说明,那就是实际的sql优化是比较复杂的,可能还会涉及到锁、内存和网络,我们这里只是列举了sql优化中需要注意的2个点而已,而这2个点只是sql优化的一小部分。之所以提出来这2个点,主要是为了达到抛砖引玉的效果,就是遇到问题时,大家首先要聚焦在sql优化这里,而不是说先考虑一些高大上的解决方案。

B站视频链接:https://sourl.cn/sdcJGa

下期连载预告:分库分表实战(第8期)激流勇进 — 千万级数据优化之加缓存



精彩往期

-------------  END  -------------




为了程序员能够顶住面试现场的连环炮,将生产上线的分库分表经验用到自己项目中去。顺利跳槽加薪,实现人生跨越!儒猿特制了海量数据场景下的分库分表生产实践”专栏。有跳槽计划或分库分表技术感兴趣的同学一定要点击下方海报了解哈!







扫描上方二维码,获取更多资料

点个在看你最好看


立即购买:淘宝网]]>
IT技术精华 2022-01-25 10:01:04
100709 InnoDB,快照读,在RR和RC下有何差异?(很多人,以为自己懂了...)
什么是快照读(Snapshot Read)?
MySQL数据库,InnoDB存储引擎,为了提高并发,使用MVCC机制,在并发事务时,通过读取数据行的历史数据版本,不加锁,来提高并发的一种不加锁一致性读(Consistent Nonlocking Read)
画外音:本文所有讨论基于MySQL-InnoDB。

快照读的内核原理,详见:
InnoDB并发如此高,原因竟然在这?

什么是读提交(Read Committed)?
(1)数据库领域,事务隔离级别的一种,简称RC;
(2)它解决“读脏”问题,保证读取到的数据行都是已提交事务写入的;
(3)它可能存在“读幻影行”问题,同一个事务里,连续相同的read可能读到不同的结果集;

什么是可重复读(Repeated Read)?
(1)数据库领域,事务隔离级别的一种,简称RR;
(2)它不但解决“读脏”问题,还部分解决了“读幻影行”问题,同一个事务里,连续相同的read读到相同的结果集;

读提交(RC),可重复读(RR)两个不同的事务的隔离级别下,快照读有什么不同呢?
我们一起来做一些实验。

假设有InnoDB表:

t(id PK, name);
 
表中有三条记录:
1, shenjian
2, zhangsan
3, lisi


case 1,两个并发事务A,B执行的时间序列如下(A先于B开始,B先于A结束):

A1: start transaction;
         B1: start transaction;
A2: select * from t;
         B2: insert into t values (4, wangwu);
A3: select * from t;
         B3: commit;
A4: select * from t;


提问1:假设事务的隔离级别是可重复读RR,事务A中的三次查询,A2, A3, A4分别读到什么结果集?
提问2:假设事务的隔离级别是读提交RC,A2, A3, A4又分别读到什么结果集呢?

case 2,仍然是上面的两个事务,只是A和B开始时间稍有不同(B先于A开始,B先于A结束):

         B1: start transaction;

A1: start transaction;

A2: select * from t;
         B2: insert into t values (4, wangwu);
A3: select * from t;
         B3: commit;
A4: select * from t;


提问3:假设事务的隔离级别是可重复读RR,事务A中的三次查询,A2, A3, A4分别读到什么结果集?
提问4:假设事务的隔离级别是读提交RC,A2, A3, A4的结果集又是什么呢?

case 3,仍然是并发的事务A与B(A先于B开始,B先于A结束):

A1: start transaction;
         B1: start transaction;
         B2: insert into t values (4, wangwu);
         B3: commit;
A2: select * from t;


提问5:假设事务的隔离级别是可重复读RR,事务A中的A2查询,结果集是什么?
提问6:假设事务的隔离级别是读提交RC,A2的结果集又是什么呢?

case 4,事务开始的时间再换一下(B先于A开始,B先于A结束):

         B1: start transaction;

A1: start transaction;

         B2: insert into t values (4, wangwu);

         B3: commit;
A2: select * from t;


提问7:假设事务的隔离级别是可重复读RR,事务A中的A2查询,结果集是什么?
提问8:假设事务的隔离级别是读提交RC,A2的结果集又是什么呢?

很多时候,我们以为自己懂了,其实...
架构师之路-分享可落地的架构文章

相关文章
InnoDB并发如此高,原因竟然在这?

知其然,知其所以然,下一篇揭晓答案。

立即购买:淘宝网]]>
IT技术精华 2022-01-25 02:01:05