我正在構建自己的分片解決方案。每個ID的結構如下:跨分片的增量ID
- 碎片ID(小INT)
- 表類型ID(小INT)
- 遞增編號(大INT)
離。 00001000010000000015
我使用虛擬碎片,因此我可以將所有碎片指向單臺服務器,當我需要更多容量時,我只需添加另一臺服務器並將某些虛擬碎片指向該服務器,以便下次數據將被寫入到新的服務器而不是第一個服務器上,儘管讀取的內容會轉到兩臺服務器上,至少在移動數據並將其更改爲配置文件之前。
我的問題是增量編號。我希望那些是獨一無二的。在特定的表中使用mysql中的build int incremental id並不好,因爲我可能會將數據移動到另一個服務器,並且在那裏我可能有另一個使用其表的增量數的數據,所以我可能會得到重複的ID。
所以我的問題是如何以可伸縮的方式生成唯一的ID,而無需使用將生成該ID的外部表,因爲它不會縮放。我可以告訴你Pinterest如何解決這個here這可能會有所幫助。我想給每個表賦予一個增量值,以便爲每個分片跳過不同的值,因此它們在所有分片上的增量值永遠不會相同。
這個想法是建立我自己的亞馬遜RDS分片解決方案,所以副本已經存在,平衡很簡單,因爲我可以利用升級的從屬服務器來掌握並刪除兩臺服務器上的數據,並更改我的分區配置文件。我認爲有可能構建一個可以使用Amazon RDS輕鬆擴展的解決方案,而且這個解決方案比其他公司現在提供的便宜很多(已經完成了我的功課)。
我不想在我的網址中使用GUID。我不介意使用長號碼。 Pinterest,Tumblr,Facebook和其他許多人不使用Guid,所以我知道他們是一個解決方案,並且只是想知道您認爲哪種解決方案最好,考慮到我想使用數字ID。
我正在開發ASP.NET中C#
我們正在考慮類似的東西,很高興你先問這個問題。 – crush