作者| Raph Koster
原文|https://www.raphkoster.com/2009/01/08/database-sharding-came-...
TL;DR:数据库词汇 Shard 来源于网游鼻祖 Ultima Online (网络创世纪) 。
「在初创企业的分片」是一篇关于数据库可扩展性的技术文章。引起了我的注意的是这个奇特的术语:分片 (sharding)。为什么要用这种方式描述数据库呢?
所以我了解了一些相关内容,分片指运行一堆并行数据库,并查找正确的那个,而不是试图将所有东西塞进一个。
我快速谷歌了一下,该术语应该源自一名曾在 Friendster (社交网络) 和 Flickr (图片分享网站) 工作过的人,并且维基百科前不久才加上了相关条目)。在开头文章的评论中有人提到了该术语在 2006 年被使用过。
Flickr 的本体是大型多人线上游戏 Game Neverending。其实,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 之间的)。不同之处在于,其中一些得到了化身(由时空领主派遣),而有些则没有。其中一些被守护者俘虏,并且我们发明了影子领主这个概念,他们本质上是从他捕获的碎片中创造出来的邪恶分身。实际上,测试版里的分身最终以这种方式被捕获 - 如果你读了相关资料,就会发现现在已经有第四位影子领主了。
(本来 Second Age 的陆地应该是 Ultima III 中的 Ambrosia,并且北部实际上有一个位置可以放 Exodus。我们甚至作了一个旋涡形状来加进去,但后来却没有安装进去。不过那是另外的故事了...)
(以及至于为什么原始 UO 介绍中的陌生人胸前带着 Ankh?因为当时已经开始开发 U9 了,并且没有人有空制作新模型。所以就用了与 U9 相同的 3D 模型,而 U9 直到几年后才发布。因此,为了方便起见,导致出现虚构故障。)
无论如何,我们将平行服务器称为「分片」,并且它成为该领域内偶尔但不普遍使用的术语。你会听到在 90 年代参与大型多人线上游戏开发的人们交替使用服务器和分片 - 有时说「碎片」是在说平行服务器集群而不是物理服务器。
那么这个数据库术语是否来自我在 1996 年一个下午匆忙写下的文档?...我不确定。这似乎是一个有趣的巧合。
这份 doc 我还留着吗...
通过 Bytebase 的多租户库变更管理 Shard
Bytebase 的多租户数据库管理(Tenant Database)可以保证对多个分片 (shard) 进行统一变更,这里可以进一步阅读来自金融 SaaS 服务商长桥科技的管理实践。
你可以访问官网:https://www.bytebase.com/,免费注册云账号,立即体验 Bytebase。