[發明專利]一種分布式數據庫主鍵生成方法及系統在審
| 申請號: | 201710317420.6 | 申請日: | 2017-05-05 |
| 公開(公告)號: | CN107247734A | 公開(公告)日: | 2017-10-13 |
| 發明(設計)人: | 仇亞東 | 申請(專利權)人: | 上海斐訊數據通信技術有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 杭州千克知識產權代理有限公司33246 | 代理人: | 周希良,吳輝輝 |
| 地址: | 201616 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 分布式 數據庫 主鍵 生成 方法 系統 | ||
技術領域
本發明涉及分布式數據庫領域,尤其涉及一種分布式數據庫主鍵生成方法及系統。
背景技術
在數據庫軟件系統中,需要在數據庫范圍內生成唯一的一串數字或字符串,作為數據庫中一條記錄的身份標識號(ID),即數據庫術語中的主鍵。在單機數據庫中,往往直接使用數據庫自增特性生成主鍵ID,該方法操作簡單,便于使用。
而在分布式數據庫環境中,數據分布在不同的數據庫上,不能再借助各數據庫自增長特性直接生成,否則會造成不同分片上的數據表主鍵會重復。
對數據庫的主鍵要求除了全局唯一,還要求在一個分數據庫中的主鍵盡量連續分布,同時還要求生成ID的算法的并發性能要高效。如果一個程序只需要單體數據庫,那數據庫自帶的sequence功能就能很好滿足這三個要求,但在分布式數據庫中,數據是分布在多個數據庫中,同時滿足這三個要求的方案和實現很難。或者有其他缺陷。
目前針對分布式數據庫的全局ID的主流兩種方案:
1.UUID/GUID:它是32位26個字母和數字組成的字符串。這種方案大部分程序語言和數據庫均提供直接支持。如果用這種方式,全局唯一ID不需要額外任何開發工作量。但這種方式為數據庫的ID,其索引效率非常低效,因為它的生成32位字符串是隨機的。
2.Snowflake(又名“雪花算法”);它是18位10進制數字組成,41位Bits的timestamp+10位Bits自定義的機器碼+12位Bits累加計數器組成。這算法生成的ID不但是在主流數據庫數字類型Interger長度內的十進制數字,關鍵還是在一定時間內連續自增排序的,且不會重復或并發的問題。但是該方法至少要18位數字起。有字長的限制。
公開號為CN105608165A的涉及一種分布式數據庫主鍵生成的方法和系統,建立一種系統,在多機分布式環境中,保證各個節點都是對等的,各個節點通過自動協商來決定主鍵生成,也解決了集中式鎖在高并發訪問下的缺陷,達到了擴展性和性能的同時增強。該發明通過引入分布式環境中的多個對等節點間自動協商來決定分布式主鍵生成,能夠有效的以節點協商方式解決因為集中式鎖故障導致的分布式主鍵生成的整體癱瘓問題,使得分布式系統可以完全水平自由擴展,達到了性能上的極大增強。但是該方法效率低并且不能保證分數據庫的主鍵連續分布。
發明內容
本發明要解決的技術問題目的在于提供一種分布式數據庫主鍵生成方法及系統,用以解決現有分布式數據庫生成的主鍵字長有限制的問題。
為了實現上述目的,本發明采用的技術方案為:
一種分布式數據庫主鍵生成方法,包括步驟:
S1、接收主鍵生成請求;
S2、根據所述主鍵生成請求生成唯一的主鍵;所述主鍵由種子部分及自增長部分組成。
進一步地,所述主鍵通過分隔符將種子部分及自增長部分隔開。
進一步地,所述生成主鍵的種子部分的步驟具體包括:
生成九進制數字;
查詢所述九進制數字是否存在于數據庫中,若是,重新生成一個九進制數字,否則,分配所述九進制數字于所述主鍵的種子部分;
將所述九進制數字保存至數據庫。
進一步地,所述生成主鍵的自增長部分的步驟具體包括:
將起始值為零的九進制數字存儲在所述種子部分對應的數據庫中;
按照增加記錄的順序依次增加所述自增長部分的值。
進一步地,當所述自增長部分增加到預設最大值,所述種子部分再次生成新的九進制數字;所述九進制數字不存在于數據庫中。
一種分布式數據庫主鍵生成系統,包括:
接收模塊,用于接收主鍵生成請求;
生成模塊,用于根據所述主鍵生成請求生成唯一的主鍵;所述主鍵由種子部分及自增長部分組成。
進一步地,所述生成模塊還包括:
分隔符,用于將種子部分及自增長部分隔開。
進一步地,所述種子部分包括:
種子生成單元,用于生成九進制數字;
查詢單元,用于查詢所述九進制數字是否存在于數據庫中,若是,重新生成一個九進制數字,否則,分配所述九進制數字于所述主鍵的種子部分;
存儲單元,用于將所述九進制數字保存至數據庫。
進一步地,所述自增長部分包括:
起始值單元,用于將起始值為零的九進制數字存儲在所述種子部分對應的數據庫中;
增長單元,用于按照增加記錄的順序依次增加所述自增長部分的值。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海斐訊數據通信技術有限公司,未經上海斐訊數據通信技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710317420.6/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種視頻片段觀看熱度分析方法及系統
- 下一篇:文件傳輸方法及裝置





