查看原文
其他

冷知识|数据库 "Shard" 一词的起源

BB仔 Bytebase 2023-07-28
作者| Raph Koster (https://www.raphkoster.com/about-raph/)
原文|https://www.raphkoster.com/2009/01/08/database-sharding-came-from-uo/
TL;DR:数据库词汇 Shard 来源于网游鼻祖 Ultima Online (网络创世纪) 🤯。

「在初创企业的分片 (Sharding for startups: https://www.startuplessonslearned.com/2009/01/sharding-for-startups.html)」 是一篇关于数据库可扩展性的技术文章。引起了我的注意的是这个奇特的术语:分片 (sharding)。为什么要用这种方式描述数据库呢?
所以我了解了一些相关内容,分片指运行一堆并行数据库,并查找正确的那个,而不是试图将所有东西塞进一个。
我快速谷歌了一下,该术语应该源自一名曾在 Friendster (社交网络) 和 Flickr (图片分享网站) 工作过的人 (http://highscalability.com/unorthodox-approach-database-design-coming-shard),并且维基百科前不久才加上了相关条目 (https://en.wikipedia.org/wiki/Shard_(database_architecture))。在开头文章的评论中有人提到了该术语在 2006 年被使用过。
Flickr 的本体是大型多人线上游戏 Game Neverending (https://en.wikipedia.org/wiki/Flickr)。其实,Ludicorp (Flickr 母公司) 的商业计划书中引用了我的话,并且 Stewart Butterfield (小编注:Flickr 联合创始人) 也问过我是否可以成为顾问,但我和 Sony 的合同没能接受他们邀请 。唉!不过,shard 这个词肯定已经在他们办公室里传开了……因为在大型多人线上游戏中,shards 具有非常特定的含义和历史。
它指在真实世界里数据库的分区。每个并行的世界都运行相同的静态模板数据库源,但演变出不同的运行时数据库。但这些被称为「服务器」- 比如 3D 网友祖师爷 Meridian 59 就有很多服务器,它们用数字来标识,而不是现金流行的名称。
「分片」之所以产生,是因为当我们意识到需要运行多个完整 Ultima Online 副本供用户连接时,我们需要想出一个虚构故事。我去读了一堆早期 Ultima 的东西,并试图想出一个虚构理由:邪恶巫师 Mondain 曾试图通过将其精华困在水晶中来控制 Sosaria。当 UltimaI 第一部结尾处 Mondain 被打败并且水晶被粉碎时,每个水晶分身 (shard) 都持有一部分 Sosaria 的折射复制品。
这个单词是特地选中的,因为水晶是我们编造的。如果 Mondain 在纸张或画作上捕捉了 Sosaria,我会用「残片」或「碎片」,但在第一部中提到他使用了水晶来获得力量。我们甚至在当时讨论了「多元宇宙」等术语,认为这些都是漫画迷的怪癖,不符合 Ultima 的风格...所以就用了「分身」。
现在,随着时间的推移,每个平行的 Sosaria 宇宙都在同时演变(按照年代顺序,UO 应该是在 U3 和 U4 之间的)。不同之处在于,其中一些得到了化身(由时空领主派遣),而有些则没有。其中一些被守护者俘虏,并且我们发明了影子领主这个概念,他们本质上是从他捕获的碎片中创造出来的邪恶分身。实际上,测试版里的分身最终以这种方式被捕获 - 如果你读了相关资料,就会发现现在已经有第四位影子领主了。

原计划的 UO 地图,Cory Doctorow 拍摄,CC BY-SA
(本来 Second Age 的陆地应该是 Ultima III 中的 Ambrosia,并且北部实际上有一个位置可以放 Exodus。我们甚至作了一个旋涡形状来加进去,但后来却没有安装进去。不过那是另外的故事了...)
(以及至于为什么原始 UO 介绍中的陌生人胸前带着 Ankh?因为当时已经开始开发 U9 了,并且没有人有空制作新模型。🙂所以就用了与 U9 相同的 3D 模型,而 U9 直到几年后才发布。因此,为了方便起见,导致出现虚构故障。)
无论如何,我们将平行服务器称为「分片」,并且它成为该领域内偶尔但不普遍使用的术语。你会听到在 90 年代参与大型多人线上游戏开发的人们交替使用服务器和分片 - 有时说「碎片」是在说平行服务器集群而不是物理服务器。
那么这个数据库术语是否来自我在 1996 年一个下午匆忙写下的文档?...我不确定。这似乎是一个有趣的巧合。
这份 doc 我还留着吗...

通过 Bytebase 的多租户库变更管理 Shard

Bytebase 的多租户数据库管理(Tenant Database)可以保证对多个分片 (shard) 进行统一变更,这里可以进一步阅读来自金融 SaaS 服务商长桥科技的管理实践

Bytebase VS Archery
哪个更快,全表扫描还是建立索引?
Star History 月度开源精选|2023 年 4 月
Bytebase 2.1.0 - 支持通过工单审批管控查询和导出权限

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存