ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql-各个分片的增量ID

2019-10-31 18:18:33  阅读:191  来源: 互联网

标签:mysql sharding


我正在构建自己的分片解决方案.每个ID的构造如下:

>分片ID(小整数)
>表格类型ID(小整数)
>增量数(大整数)

例如00001000010000000015

我使用虚拟分片,因此我可以将所有分片指向一台服务器,当我需要更多容量时,我只需添加另一台服务器,然后将一些虚拟分片指向该服务器,以便下次将数据写入到新服务器上.服务器而不是第一个服务器,尽管读取将进入两个服务器,至少直到我移动数据并在配置文件中更改它为止.

我的问题是增量数.我希望这些独特.在mysql中为特定表使用build int增量ID是不好的,因为我可能会将数据移动到另一台服务器,并且那里可能还有另一个数据使用其表的增量编号,因此我可能会得到重复的ID.

所以我的问题是,如何在不使用会生成该ID的外部表的情况下以可扩展的方式生成唯一的ID,因为它无法缩放.我可以向您指出Pinterest如何解决了这个here可能会有所帮助的问题.我考虑过为每个表提供一个增量值,该增量值会为每个分片跳过不同的值,因此它们在所有分片上的增量值永远不会相同.

这个想法是用Amazon RDS构建我自己的分片解决方案,因此副本已经存在,平衡很容易,因为我可以利用promove slave来控制主文件,而只是删除两台服务器上的数据并更改我的分片配置文件.我认为有可能构建一个可以使用Amazon RDS轻松扩展的解决方案,并且该解决方案将比其他公司今天提供的价格便宜得多(已经做了我的作业).

我不想在我的URL中使用GUID.我不介意使用长整数. Pinterest,Tumblr,Facebook和其他许多人都不使用Guid,所以我知道他们是那里的一种解决方案,只是想知道您想使用哪种数字标识,并想知道您认为哪种解决方案最有效.

我正在ASP.NET C#中开发应用程序

解决方法:

简而言之,您生成ID的方法就注定了:如果要生成唯一的ID,则需要一个中央服务,该服务最终将成为瓶颈.

还包括分片ID的气味很差;将数据移到新分片时会发生什么?您是否需要更新所有ID?

如果需要可伸缩的解决方案,则必须考虑UUIDs或类似方法.

或者,您可以使用中央服务并为每个呼叫分配一个ID块(例如10’000).这样,您就不必经常敲击中央服务,但是如果服务失败,整个系统将失效.

标签:mysql,sharding
来源: https://codeday.me/bug/20191031/1977472.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有