新聞中心
隨著社交網(wǎng)絡(luò)的興起,點(diǎn)贊系統(tǒng)逐漸成為了一個(gè)網(wǎng)站或應(yīng)用程序中不可或缺的功能。點(diǎn)贊系統(tǒng)可以讓用戶更直觀地了解自己的帖子、評(píng)論、照片被多少人喜歡,從而增強(qiáng)用戶互動(dòng)體驗(yàn)。但是,在設(shè)計(jì)點(diǎn)贊系統(tǒng)時(shí),數(shù)據(jù)庫設(shè)計(jì)至關(guān)重要。本文將和實(shí)現(xiàn)。

創(chuàng)新互聯(lián)建站專注于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營(yíng)銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。
一、點(diǎn)贊系統(tǒng)的基本功能和需求
在進(jìn)行數(shù)據(jù)庫設(shè)計(jì)之前,我們需要細(xì)致地了解點(diǎn)贊系統(tǒng)的基本功能和需求。一個(gè)基本的點(diǎn)贊系統(tǒng)通常需要實(shí)現(xiàn)以下功能:
1. 用戶可以點(diǎn)贊一個(gè)帖子、評(píng)論、照片等內(nèi)容;
2. 用戶可以查看一個(gè)帖子、評(píng)論、照片等內(nèi)容的點(diǎn)贊數(shù);
3. 用戶可以取消對(duì)一個(gè)帖子、評(píng)論、照片等內(nèi)容的點(diǎn)贊。
除了以上三項(xiàng)基本功能外,點(diǎn)贊系統(tǒng)還可以擴(kuò)展實(shí)現(xiàn)以下功能:
1. 對(duì)于一個(gè)帖子、評(píng)論、照片等內(nèi)容,用戶只能進(jìn)行一次點(diǎn)贊;
2. 匿名用戶也可以進(jìn)行點(diǎn)贊;
3. 可以獲取點(diǎn)贊過自己帖子、評(píng)論、照片等內(nèi)容的用戶列表;
4. 可以獲取一個(gè)用戶點(diǎn)贊的帖子、評(píng)論、照片等內(nèi)容列表。
二、數(shù)據(jù)庫實(shí)現(xiàn)方案
接下來,我們將基于上述功能和需求,提出一個(gè)點(diǎn)贊系統(tǒng)的數(shù)據(jù)庫實(shí)現(xiàn)方案。在設(shè)計(jì)數(shù)據(jù)庫時(shí),我們需要考慮以下幾個(gè)因素:
1. 如何將用戶與點(diǎn)贊內(nèi)容聯(lián)系起來;
2. 如何存儲(chǔ)用戶的點(diǎn)贊數(shù)據(jù);
3. 如何進(jìn)行點(diǎn)贊數(shù)量的計(jì)算和統(tǒng)計(jì)。
因此,我們可以在數(shù)據(jù)庫中創(chuàng)建以下三個(gè)表格:
1. User表格:存儲(chǔ)用戶信息;
2. Content表格:存儲(chǔ)帖子、評(píng)論、照片等內(nèi)容的信息;
3. Like表格:存儲(chǔ)用戶點(diǎn)贊信息。
User表格包含以下字段:
| 字段名 | 類型 | 描述 |
| ——— | ——- | ——– |
| user_id | int | 用戶ID |
| user_name | varchar | 用戶名 |
Content表格包含以下字段:
| 字段名 | 類型 | 描述 |
| —————- | ——- | ——————– |
| content_id | int | 內(nèi)容ID |
| content_type | varchar | 內(nèi)容類型(帖子、評(píng)論等) |
Like表格包含以下字段:
| 字段名 | 類型 | 描述 |
| —————- | ——- | ————————- |
| user_id | int | 用戶ID |
| content_id | int | 內(nèi)容ID |
| content_type | varchar | 內(nèi)容類型(帖子、評(píng)論等) |
| like_time | datetime | 點(diǎn)贊時(shí)間 |
使用這些表格,我們可以輕松地實(shí)現(xiàn)點(diǎn)贊系統(tǒng)的基本功能。例如,要給內(nèi)容點(diǎn)贊,只需要向Like表格添加一行,包括用戶ID、內(nèi)容ID、內(nèi)容類型和點(diǎn)贊時(shí)間信息。要獲取內(nèi)容點(diǎn)贊數(shù)量,只需要從Like表格中查詢相應(yīng)類型的內(nèi)容ID的數(shù)量即可。而要取消點(diǎn)贊,則只需要?jiǎng)h除Like表格中相應(yīng)的一行記錄。
在考慮到進(jìn)一步擴(kuò)展需求時(shí),可以通過以下字段來擴(kuò)展Like表格。
| 字段名 | 類型 | 描述 |
| —————- | ——- | ——————————– |
| like_id | int | 點(diǎn)贊ID |
| is_active | tinyint | 是否有效(0表示無效,1表示有效) |
利用這些擴(kuò)張字段,我們可以更好地實(shí)現(xiàn)對(duì)于某條評(píng)論點(diǎn)贊僅能點(diǎn)一次的需求。我們可以通過is_active字段來代表點(diǎn)贊狀態(tài),數(shù)據(jù)表中每個(gè)用戶對(duì)應(yīng)某個(gè)內(nèi)容點(diǎn)贊記錄只有一個(gè)且僅有一次。如果用戶重復(fù)點(diǎn)贊,則更新is_active狀態(tài)為1,同時(shí)不增加Like總記錄數(shù),也可以方便地計(jì)算改內(nèi)容點(diǎn)贊數(shù)量_STAT—— LIKE(is_active=1)。
三、數(shù)據(jù)庫性能優(yōu)化
在實(shí)現(xiàn)點(diǎn)贊系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)之后,我們還可以進(jìn)行一些性能優(yōu)化操作,以提高數(shù)據(jù)庫的響應(yīng)速度和效率。其中,常用的優(yōu)化方法包括:
1. 索引優(yōu)化:添加索引可以加快數(shù)據(jù)庫查詢速度,提升系統(tǒng)性能;
2. 緩存優(yōu)化:緩存一些經(jīng)常需要查詢的數(shù)據(jù),可以減少數(shù)據(jù)庫查詢,加速系統(tǒng)響應(yīng)時(shí)間;
3. 分表分庫:當(dāng)數(shù)據(jù)量非常大時(shí),可以將數(shù)據(jù)分散到多個(gè)表或數(shù)據(jù)庫中,減小單個(gè)數(shù)據(jù)庫的壓力,提高系統(tǒng)的承載能力;
4. 數(shù)據(jù)備份與恢復(fù):定期備份數(shù)據(jù)庫數(shù)據(jù),以免數(shù)據(jù)丟失,同時(shí)可以快速恢復(fù)系統(tǒng)。
四、
本文中,我們探討了點(diǎn)贊系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì),并提出了一個(gè)基于User、Content和Like表格的數(shù)據(jù)庫實(shí)現(xiàn)方案。該方案可以輕松實(shí)現(xiàn)點(diǎn)贊系統(tǒng)的基本功能,并通過擴(kuò)展字段實(shí)現(xiàn)了對(duì)非重復(fù)點(diǎn)贊的支持。此外,我們還介紹了一些常用的數(shù)據(jù)庫性能優(yōu)化方法,以提高系統(tǒng)的響應(yīng)速度和效率。通過合理地設(shè)計(jì)和優(yōu)化數(shù)據(jù)庫,我們可以更好地實(shí)現(xiàn)點(diǎn)贊系統(tǒng)的功能,提升用戶體驗(yàn)和系統(tǒng)性能。
相關(guān)問題拓展閱讀:
- 數(shù)據(jù)庫架構(gòu)選型與落地,看這篇就夠了
- 點(diǎn)贊生成器昵稱
數(shù)據(jù)庫架構(gòu)選型與落地,看這篇就夠了
隨著時(shí)間和業(yè)務(wù)的發(fā)展,數(shù)據(jù)庫中的數(shù)據(jù)量增長(zhǎng)是不可控的,庫和表中的數(shù)據(jù)會(huì)越來越大,隨之帶來的是更高的
磁盤
、
IO
、
系統(tǒng)開銷
,甚至
性能
上的瓶頸,而單臺(tái)服務(wù)器的
資源終究是有限
的。
因此在面對(duì)業(yè)務(wù)擴(kuò)張過程中,應(yīng)用程序?qū)?shù)據(jù)庫系統(tǒng)的
健壯性
,
安全性
,
擴(kuò)展性
提出了更高的要求。
以下,我從數(shù)據(jù)庫架構(gòu)、選型與落地來讓大家入門。
數(shù)據(jù)庫會(huì)面臨什么樣的挑戰(zhàn)呢?
業(yè)務(wù)剛開始我們只用單機(jī)數(shù)據(jù)庫就夠了,但隨著業(yè)務(wù)增長(zhǎng),數(shù)據(jù)規(guī)模和用戶規(guī)模上升,這個(gè)時(shí)候數(shù)據(jù)庫會(huì)面臨IO瓶頸、存儲(chǔ)瓶頸、可用性、安全性問題。
為了解決上述的各種問題,數(shù)據(jù)庫衍生了出不同的架構(gòu)來解決不同的場(chǎng)景需求。
將數(shù)據(jù)庫的寫操作和讀操作分離,主庫接收寫請(qǐng)求,使用多個(gè)從庫副本負(fù)責(zé)讀請(qǐng)求,從庫和主庫同步更新數(shù)據(jù)保持?jǐn)?shù)據(jù)一致性,從庫可以水平擴(kuò)展,用于面對(duì)讀請(qǐng)求的增加。
這個(gè)模式也就是常說的讀寫分離,針對(duì)的是小規(guī)模數(shù)據(jù),而且存在大量讀操作的場(chǎng)景。
因?yàn)橹鲝牡臄?shù)據(jù)是相同的,一旦主庫宕機(jī)的時(shí)候,從庫可以
切換為主庫提供寫入
,所以這個(gè)架構(gòu)也可以提高數(shù)據(jù)庫系統(tǒng)的
安全性
和
可用性
;
優(yōu)點(diǎn):
缺點(diǎn):
在數(shù)據(jù)庫遇到
IO瓶頸
過程中,如果IO集中在某一塊的業(yè)務(wù)中,這個(gè)時(shí)候可以考慮的就是垂直分庫,將熱點(diǎn)業(yè)務(wù)拆分出去,避免由
熱點(diǎn)業(yè)務(wù)
的
密集IO請(qǐng)求
影響了其他正常業(yè)務(wù),所以垂直分庫也叫
業(yè)務(wù)分庫
。
優(yōu)點(diǎn):
缺點(diǎn):
在數(shù)據(jù)庫遇到存儲(chǔ)瓶頸的時(shí)候,由于數(shù)據(jù)量過大造成索引性能下降。
這個(gè)時(shí)候可以考慮將數(shù)據(jù)做水平拆分,針對(duì)數(shù)據(jù)量巨大的單張表,按照某種規(guī)則,切分到多張表里面去。
但是這些表還是在同一個(gè)庫中,所以庫級(jí)別的數(shù)據(jù)庫操作還是有IO瓶頸(單個(gè)服務(wù)器的IO有上限)。
所以水平分嘩槐尺表主要還是針對(duì)
數(shù)據(jù)量較大
,整體業(yè)務(wù)
請(qǐng)求量較低
的場(chǎng)景。
優(yōu)點(diǎn):
缺點(diǎn):
四、分庫分表
在數(shù)據(jù)庫遇到存儲(chǔ)瓶頸和IO瓶頸的時(shí)候,數(shù)據(jù)量過大造成索引性能下降,加上同一時(shí)間需要處理大規(guī)模的業(yè)務(wù)請(qǐng)求,這個(gè)時(shí)候單庫的IO上限會(huì)限制處理效率。
所以需要將單張表的數(shù)據(jù)切分到多個(gè)服務(wù)器上去,每個(gè)服務(wù)器具有相應(yīng)的庫與表,只是表中數(shù)據(jù)不同。
分庫分表能夠有效地緩解單機(jī)和單庫的
性能瓶頸和壓力
,突破IO、連接數(shù)、硬件資源等的瓶頸。
優(yōu)點(diǎn):
缺點(diǎn):
注:分庫還是分表核心關(guān)鍵是有沒有IO瓶頸
。
分片方式都有什么呢?
RANGE(范圍分片)
將業(yè)務(wù)表中的某個(gè)
關(guān)鍵字段排序
后,按照順序從0到10000一個(gè)表,10001到20230一個(gè)表。最常見的就是
按照時(shí)間切分
(月表、年表)。
比如將6個(gè)月前,甚至一年前的數(shù)據(jù)切出去放到另外的一張表,因?yàn)殡S著時(shí)間流明睜逝,這些表的數(shù)據(jù)被查詢的概率變小,銀行的交易記錄多數(shù)是采用這種方式。
優(yōu)點(diǎn):
缺點(diǎn):
HASH(哈希分片)
將訂單作為主表,然后將其相關(guān)的業(yè)務(wù)表作為附表,取用戶id然后
hash取模
,分配到不同的數(shù)據(jù)表或者數(shù)據(jù)庫上。
優(yōu)點(diǎn):
缺點(diǎn):
講到這里,我們已經(jīng)知道數(shù)據(jù)庫有哪些架構(gòu),解決的是哪些問題,因此,
我們?cè)谌粘TO(shè)計(jì)中需要根據(jù)數(shù)據(jù)的特點(diǎn),數(shù)據(jù)的傾向性,數(shù)據(jù)的安全性等來選擇不同的架構(gòu)
。
那么,我們應(yīng)該如何選擇數(shù)據(jù)庫架構(gòu)呢?
雖然把上面的架構(gòu)全部組合在一起可以形成一個(gè)強(qiáng)大的高可用,高負(fù)載的數(shù)據(jù)庫系統(tǒng),但是架構(gòu)選擇合適才是最重要的。
混合架構(gòu)雖然能夠解決所有的場(chǎng)景的問題,但是也會(huì)面臨更多的挑戰(zhàn),你以為的完美架構(gòu),背后其實(shí)有著更多的坑。
1、對(duì)事務(wù)支持
分庫分表后(無論是垂直還是水平拆分亂高),就成了分布式事務(wù)了,如果依賴數(shù)據(jù)庫本身的分布式事務(wù)管理功能去執(zhí)行事務(wù),將付出高昂的性能代價(jià)(XA事務(wù));如果由應(yīng)用程序去協(xié)助控制,形成程序邏輯上的事務(wù),又會(huì)造成編程方面的負(fù)擔(dān)(TCC、SAGA)。
2、多庫結(jié)果并
(group by,order by)
由于數(shù)據(jù)分布于不同的數(shù)據(jù)庫中,無法直接對(duì)其做分頁、分組、排序等操作,一般應(yīng)對(duì)這種多庫結(jié)果并的查詢業(yè)務(wù)都需要采用數(shù)據(jù)清洗、同步等其他手段處理(TIDB、KUDU等)。
3、數(shù)據(jù)延遲
主從架構(gòu)下的多副本機(jī)制和水平分庫后的聚合庫都會(huì)存在主數(shù)據(jù)和副本數(shù)據(jù)之間的延遲問題。
4、跨庫join
分庫分表后表之間的關(guān)聯(lián)操作將受到限制,我們無法join位于不同分庫的表(垂直),也無法join分表粒度不同的表(水平), 結(jié)果原本一次查詢就能夠完成的業(yè)務(wù),可能需要多次查詢才能完成。
5、分片擴(kuò)容
水平分片之后,一旦需要做擴(kuò)容時(shí)。需要將對(duì)應(yīng)的數(shù)據(jù)做一次遷移,成本代價(jià)都極高的。
6、ID生成
分庫分表后由于數(shù)據(jù)庫獨(dú)立,原有的基于數(shù)據(jù)庫自增ID將無法再使用,這個(gè)時(shí)候需要采用其他外部的ID生成方案。
一、應(yīng)用層依賴類(JDBC)
這類分庫分表中間件的特點(diǎn)就是和應(yīng)用強(qiáng)耦合,需要應(yīng)用顯示依賴相應(yīng)的jar包(以Java為例),比如知名的TDDL、當(dāng)當(dāng)開源的
sharding-jdbc
、蘑菇街的TSharding等。
此類中間件的基本思路就是重新實(shí)現(xiàn)JDBC的API,通過重新實(shí)現(xiàn)
DataSource
、
PrepareStatement
等操作數(shù)據(jù)庫的接口,讓應(yīng)用層在
基本
不改變業(yè)務(wù)代碼的情況下透明地實(shí)現(xiàn)分庫分表的能力。
中間件給上層應(yīng)用提供熟悉的JDBC API,內(nèi)部通過
sql解析
、
sql重寫
、
sql路由
等一系列的準(zhǔn)備工作獲取真正可執(zhí)行的sql,然后底層再按照傳統(tǒng)的方法(比如數(shù)據(jù)庫連接池)獲取物理連接來執(zhí)行sql,最后把數(shù)據(jù)
結(jié)果合并
處理成ResultSet返回給應(yīng)用層。
優(yōu)點(diǎn)
缺點(diǎn)
二、中間層代理類(Proxy)
這類分庫分表中間件的核心原理是在應(yīng)用和數(shù)據(jù)庫的連接之間搭起一個(gè)
代理層
,上層應(yīng)用以
標(biāo)準(zhǔn)的MySQL協(xié)議
來連接代理層,然后代理層負(fù)責(zé)
轉(zhuǎn)發(fā)請(qǐng)求
到底層的MySQL物理實(shí)例,這種方式對(duì)應(yīng)用只有一個(gè)要求,就是只要用MySQL協(xié)議來通信即可。
所以用MySQL Navicat這種純的客戶端都可以直接連接你的分布式數(shù)據(jù)庫,自然也天然
支持所有的編程語言
。
在技術(shù)實(shí)現(xiàn)上除了和應(yīng)用層依賴類中間件基本相似外,代理類的分庫分表產(chǎn)品必須實(shí)現(xiàn)標(biāo)準(zhǔn)的MySQL協(xié)議,某種意義上講數(shù)據(jù)庫代理層轉(zhuǎn)發(fā)的就是MySQL協(xié)議請(qǐng)求,就像Nginx轉(zhuǎn)發(fā)的是Http協(xié)議請(qǐng)求。
比較有代表性的產(chǎn)品有開創(chuàng)性質(zhì)的Amoeba、阿里開源的Cobar、社區(qū)發(fā)展比較好的
Mycat
(基于Cobar開發(fā))等。
優(yōu)點(diǎn)
缺點(diǎn)
JDBC方案
:無中心化架構(gòu),兼容市面上大多數(shù)關(guān)系型數(shù)據(jù)庫,適用于開發(fā)高性能的輕量級(jí) OLTP 應(yīng)用(面向前臺(tái))。
Proxy方案
:提供靜態(tài)入口以及異構(gòu)語言的支持,適用于 OLAP 應(yīng)用(面向后臺(tái))以及對(duì)分片數(shù)據(jù)庫進(jìn)行管理和運(yùn)維的場(chǎng)景。
混合方案
:在大型復(fù)雜系統(tǒng)中存在面向C端用戶的前臺(tái)應(yīng)用,也有面向企業(yè)分析的后臺(tái)應(yīng)用,這個(gè)時(shí)候就可以采用混合模式。
JDBC 采用無中心化架構(gòu),適用于 Java 開發(fā)的高性能的輕量級(jí) OLTP 應(yīng)用;Proxy 提供靜態(tài)入口以及異構(gòu)語言的支持,適用于 OLAP 應(yīng)用以及對(duì)分片數(shù)據(jù)庫進(jìn)行管理和運(yùn)維的場(chǎng)景。
ShardingSphere是一套開源的分布式數(shù)據(jù)庫中間件解決方案組成的生態(tài)圈,它由
Sharding-JDBC
、
Sharding-Proxy
和
Sharding-Sidecar
(計(jì)劃中)這3款相互獨(dú)立的產(chǎn)品組成,他們均提供標(biāo)準(zhǔn)化的數(shù)據(jù)分片、分布式事務(wù)和數(shù)據(jù)庫治理功能,可適用于如Java同構(gòu)、異構(gòu)語言、容器、云原生等各種多樣化的應(yīng)用場(chǎng)景。
ShardingSphere提供的核心功能:
Sharding-Proxy
定位為透明化的
數(shù)據(jù)庫代理端
,提供封裝了
數(shù)據(jù)庫二進(jìn)制協(xié)議的服務(wù)端版本
,用于完成對(duì)
異構(gòu)語言的支持
。
目前已提供MySQL版本,它可以使用
任何兼容MySQL協(xié)議的訪問客戶端
(如:MySQL Command Client, MySQL Workbench, Navicat等)操作數(shù)據(jù),對(duì)DBA更加友好。
向
應(yīng)用程序完全透明
,可直接當(dāng)做MySQL使用。
適用于任何兼容MySQL協(xié)議的客戶端。
Sharding-JDBC
定位為
輕量級(jí)Java框架
,在Java的JDBC層提供的額外服務(wù)。 它使用客戶端直連數(shù)據(jù)庫,以jar包形式提供服務(wù),無需額外部署和依賴,可理解為
增強(qiáng)版的JDBC驅(qū)動(dòng),完全兼容JDBC和各種ORM框架
。
以電商SaaS系統(tǒng)為例,前臺(tái)應(yīng)用采用Sharding-JDBC,根據(jù)業(yè)務(wù)場(chǎng)景的差異主要分為三種方案。
分庫(用戶)
問題解析:頭部企業(yè)日活高并發(fā)高,單獨(dú)分庫避免干擾其他企業(yè)用戶,用戶數(shù)據(jù)的增長(zhǎng)緩慢可以不分表。
拆分維度:企業(yè)ID分庫
拆分策略:頭部企業(yè)單獨(dú)庫、非頭部企業(yè)一個(gè)庫
分庫分表(訂單)
問題解析:訂單數(shù)據(jù)增長(zhǎng)速度較快,在分庫之余需要分表。
拆分維度:企業(yè)ID分庫、用戶ID分表
拆分策略:頭部企業(yè)單獨(dú)庫、非頭部企業(yè)一個(gè)庫,分庫之后用戶ID取模拆分表
單庫分表(附件)
問題解析:附件數(shù)據(jù)特點(diǎn)是并發(fā)量不大,只需要解決數(shù)據(jù)增長(zhǎng)問題,所以單庫IO足以支撐的情況下分表即可。
拆分維度:用戶ID分表
拆分策略:用戶ID取模分表
問題一:分布式事務(wù)
分布式事務(wù)過于復(fù)雜也是分布式系統(tǒng)最難處理的問題,由于篇幅有限,后續(xù)會(huì)開篇專講這一塊內(nèi)容。
問題二:分布式ID
問題三:跨片查詢
舉個(gè)例子,以用戶id分片之后,需要根據(jù)企業(yè)id查詢企業(yè)所有用戶信息。
sharding針對(duì)跨片查詢也是能夠支持的,本質(zhì)上sharding的跨片查詢是采用同時(shí)查詢多個(gè)分片的數(shù)據(jù),然后聚合結(jié)果返回,這個(gè)方式對(duì)資源耗費(fèi)比較大,特別是對(duì)數(shù)據(jù)庫連接資源的消耗。
假設(shè)分4個(gè)數(shù)據(jù)庫,8個(gè)表,則sharding會(huì)同時(shí)發(fā)出32個(gè)SQL去查詢。一下子消耗掉了32個(gè)連接;
特別是針對(duì)單庫分表的情況要注意,假設(shè)單庫分64個(gè)表,則要消耗64個(gè)連接。如果我們部署了2個(gè)節(jié)點(diǎn),這個(gè)時(shí)候兩個(gè)節(jié)點(diǎn)同時(shí)查詢的話,就會(huì)遇到數(shù)據(jù)庫連接數(shù)上限問題(mysql默認(rèn)100連接數(shù))
問題四:分片擴(kuò)容
隨著數(shù)據(jù)增長(zhǎng),每個(gè)片區(qū)的數(shù)據(jù)也會(huì)達(dá)到瓶頸,這個(gè)時(shí)候需要將原有的分片數(shù)量進(jìn)行增加。由于增加了片區(qū),原先的hash規(guī)則也跟著變化,造成了需要將舊數(shù)據(jù)做遷移。
假設(shè)原先1個(gè)億的數(shù)據(jù),hash分64個(gè)表,現(xiàn)在增長(zhǎng)到50億的數(shù)據(jù),需要擴(kuò)容到128個(gè)表,一旦擴(kuò)容就需要將這50億的數(shù)據(jù)做一次遷移,遷移成本是無法想象的。
問題五:一致性哈希
首先,求出每個(gè)
服務(wù)器的hash值
,將其配置到一個(gè)
0~2^n 的圓環(huán)上
(n通常取32)
其次,用同樣的方法求出待
存儲(chǔ)對(duì)象的主鍵 hash值
,也將其配置到這個(gè)圓環(huán)上。
然后,從數(shù)據(jù)映射到的位置開始順時(shí)針查找,將數(shù)據(jù)分布到找到的之一個(gè)服務(wù)器節(jié)點(diǎn)上。
一致性hash的優(yōu)點(diǎn)在于加入和刪除節(jié)點(diǎn)時(shí)只會(huì)影響到在哈希環(huán)中相鄰的節(jié)點(diǎn),而對(duì)其他節(jié)點(diǎn)沒有影響。
所以使用一致性哈希在集群擴(kuò)容過程中可以減少數(shù)據(jù)的遷移。
好了,這次分享到這里,我們?nèi)粘5膶?shí)踐可能只會(huì)用到其中一種方案,但它不是數(shù)據(jù)庫架構(gòu)的全貌,打開技術(shù)視野,才能更好地把存儲(chǔ)工具利用起來。
老規(guī)矩,一鍵三連,日入兩千,點(diǎn)贊在看,年薪百萬!
本文作者:Jensen
7年Java老兵,小米主題設(shè)計(jì)師,手機(jī)輸入法設(shè)計(jì)師,ProcessOn特邀講師。
曾涉獵航空、電信、IoT、垂直電商產(chǎn)品研發(fā),現(xiàn)就職于某知名電商企業(yè)。
技術(shù)公眾號(hào)
【架構(gòu)師修行錄】
號(hào)主,專注于分享日常架構(gòu)、技術(shù)、職場(chǎng)干貨,Java Goals:架構(gòu)師。
交個(gè)朋友,一起成長(zhǎng)!
點(diǎn)贊生成器昵稱
1、名字生成這種軟件無非就是已有數(shù)據(jù)庫的隨機(jī)抽取,或者文字的隨機(jī)組合組合起來你看起來順眼你變覺得好用,這概率問題而已。你不如百度搜姓名大全直接去找你想要的名字
2、深圳市朱迪科技有限公司運(yùn)營(yíng)“微信對(duì)話生成器”、“微商截圖神器”等9款手機(jī)App,用戶可以喚陵任意生成與微信界面完全相同的紅包型鏈緩、轉(zhuǎn)賬、對(duì)話、朋友資料等截圖,騰訊公司隨后以不正當(dāng)競(jìng)爭(zhēng)為由索賠卜模上千萬元經(jīng)濟(jì)損失。深圳市南山區(qū)不久前一審判處被告朱迪公司賠償騰訊公司75萬元。
名字昵稱生成器
1、搜索找到“高則特殊號(hào)生成器”,并點(diǎn)開。
2、要寫的內(nèi)容太多怎么辦?
3、設(shè)計(jì)了一個(gè)隨機(jī)抽簽工具,就像一樣,開始與停止,看系統(tǒng)為你選了什么午餐(or晚餐)。菜單欄目前兩類,一是通過內(nèi)置輸入提供的菜品作為系統(tǒng)數(shù)據(jù),二是根據(jù)“附近美食”作為數(shù)據(jù),目前這個(gè)功能還在測(cè)試中。
4、
5、忘鏡昵稱制作神器。
6、如之一條做不到,則爭(zhēng)取英文名與中文名局部發(fā)音一致,如:李連杰JetLi謝霆鋒TimXieJamesHou許環(huán)山SamXu朱曉琳LynnZhu王冬梅MayWang吳家珍JaneWu吳珊SandyWu關(guān)荷HelenGuan
7、之一步:選擇您想要的名稱類型
8、給伙伴或朋友起名(昵稱)
9、解決了這個(gè)問題,想必這一天里至少解決了50%會(huì)引發(fā)腦殼疼的事情。想當(dāng)初為了做出一個(gè)抉擇,什么猜拳、擲、抽簽各種都用上。而下面這個(gè)就非常實(shí)用了,尤其是對(duì)吃什么這件事有選擇困難癥的患者來說,就是必備工具。
10、“微博帳戶賺米常規(guī)2問題
11、②安卓用戶設(shè)置完,蘋果用戶看安卓好友的彩色昵稱字母的顯示效果如下:???字體。
12、位漂亮的花體字昵稱粘貼。
13、可以把平常朋友對(duì)自己的稱呼當(dāng)作網(wǎng)名,這樣跟大家打招呼時(shí),大家都能很快地認(rèn)出你,方便。
14、這是一個(gè)專門起英文名字的網(wǎng)站,你可以去看看,好多的都在里面,也有意思解釋/English/c/
15、巨蟹座男性最適合的英文名字:Kevin、Louis、John、George、Henry、Benjamin
16、對(duì)已生成的信息都是按個(gè)人喜好隨意填寫。昵稱內(nèi)容都是可以自定義的哦!如果戚租棚你覺得麻煩的話,可以點(diǎn)擊立即,你未填寫的部分都會(huì)隨機(jī)生成!
17、應(yīng)該可以用,你設(shè)置沒對(duì)吧(cnarmory空格服務(wù)器名空格角色名)比如(cnarmory布來克摩XXX)XXX為你角色名字,布XX是服務(wù)器
18、可以任意生成與“微信”應(yīng)用界面完全相同的紅包、轉(zhuǎn)賬、錢包、對(duì)話、朋友資料等截圖,被告還在其運(yùn)營(yíng)的“玩截圖”網(wǎng)站上提供具備相同功能的網(wǎng)頁版截圖工具,被告在經(jīng)營(yíng)上述截圖應(yīng)用和工具的同時(shí),向其用戶收取費(fèi)用。
19、希望您盡快在這里找到它己的賺米常規(guī)。
20、獨(dú)特嗎?還是「菜市場(chǎng)名」(在菜市場(chǎng)一喊,有十幾個(gè)人應(yīng)答)?–名字的特殊性
二、昵稱生成器型寬 網(wǎng)名
1、13WilliamKayla
2、詳細(xì)寓意:旱苗逢雨、枯木逢春。得挽回家運(yùn)的更大吉數(shù)。
3、詩曰:風(fēng)云蔽月未得安,雖有智慧做事難,孤獨(dú)多難無所至,內(nèi)外不和失妻兒。
4、林沫瑤榮耀重復(fù)名生成器。
5、當(dāng)你的粉絲很多的時(shí)候,你可以用簽名來呈現(xiàn)狀態(tài),比如說你可以在簽名上備注閉關(guān)寫課中、深圳學(xué)習(xí)中等等,這樣可以避免很多雜亂的問題。
6、
7、4JoshuaAshley
8、?????(冰藍(lán)茉莉花)
9、怎么制作空白符號(hào)網(wǎng)名?
10、輸入你心目中的兩個(gè)主角,生成器中就會(huì)編撰出一段故事,從此又一絡(luò)文學(xué)新寫手誕生了,而且是不知疲倦,可以日夜隨時(shí)在線幫你寫文,直到生成你滿意的為止。
11、射手座男性最適合的英文名字:Nick、Walt、John、Mark、Sam、Ds、Neil、Carl、Lewis、Billy
12、
13、自己的名字更好不隨意亂刻。
14、
15、輸入姓名微信昵稱可復(fù)制的漂亮特殊號(hào)網(wǎng)名。
16、除了母音,子音有時(shí)也會(huì)造成英文名字的困擾,原因和母音的困擾很像,也是聽起來比較不好聽。這種情況就是當(dāng)名字的之一個(gè)子音和姓氏的之一個(gè)子音相同時(shí),例如LindaLee,TammyTung就是一例。不過最近紅及一時(shí)LucyLiu的也有這個(gè)所謂的「困擾」,似乎也沒有什么大礙!所以大家參考參考就好了!除了以上的原則之外,還有短名配長(zhǎng)姓,長(zhǎng)名配短姓,流行名配特別姓,特別名配流行姓等等的相關(guān)原則,不過以上就不適用華文使用者啦!大家也不用太費(fèi)心了解。趕緊去為自己找個(gè)好名字吧
17、需要注意的是,以上的這種效果只能在安卓手機(jī)上顯示。在蘋果手機(jī)上是沒有彩色的,但是它是用線框形式顯示的,也是很炫酷的。趕快來試一下效果吧!
18、搜索找到“特殊符號(hào)生成制作器”,并點(diǎn)擊打開。
19、剛才小雨已經(jīng)說了,這種字條是用手機(jī)輸入法打不出來的。所以必須要用復(fù)制粘貼的方法來實(shí)現(xiàn)。復(fù)制上一步中收到的那些彩色字母,然后把它粘貼在任意的微信聊天窗。只留下其中需要的那個(gè)字母,然后刪除多余的字母。重復(fù)這個(gè)動(dòng)作,就可以按照自己的需求組合出一個(gè)彩色名稱了。就像是下圖中的這樣。如何設(shè)計(jì)微信昵稱和簽名,讓人過目不忘第三步:設(shè)置彩色微信名稱
20、問題改名又改姓一般來說,非英語的人到了美國,都可能改名,但沒有改姓的。這關(guān)系到家族榮譽(yù),將來還會(huì)關(guān)系到遺傳基因。因此,無論自己的姓多么難讀,都要堅(jiān)持。常見有人起英文名時(shí)連姓也改了,如司徒健KenStone,肖燕YanShaw。下列英文姓尚可接受,但也更好不用,如:Young楊,Lee李。
三、特殊網(wǎng)名生成器
1、尤其這種裝之物的東西更不要刻。
2、人,天生想要成為眾人視線的焦點(diǎn)。網(wǎng)名要取的容易記,含義動(dòng)人,用字不俗,才能算是好網(wǎng)名。男人一生最吉利的網(wǎng)名。
3、3MatthewSamantha
4、現(xiàn)在正在用,叫做金芝名字生成器,可以在線生成多種多樣的姓名,速度蠻快的,還能自動(dòng)排版。
5、玩機(jī)必備軟件,輕輕松松就可幫助你進(jìn)行重復(fù)名生成;
6、1)打開(朋友圈點(diǎn)贊生成器)然后輸入(微信用戶名),(選擇頭像)填寫(朋友圈內(nèi)容)選擇(發(fā)布日期),再選擇(集贊個(gè)數(shù))最后點(diǎn)擊(生成);
7、以上就是與微信特殊昵稱生成器相關(guān)內(nèi)容,是關(guān)于怎么設(shè)置微信特殊昵稱??的分享??赐晡⑿鸥呒?jí)昵稱生成器后,希望這對(duì)大家有所幫助!
8、把自己的姓名輸入進(jìn)去然后定制出來網(wǎng)名的是什么軟件
9、我們以B5的公式為例。其實(shí)這是一個(gè)用“&”連接的3段公式。
10、不用擔(dān)心重復(fù)的問題,所有的問題通通都搞定,利用特殊的方法讓名字可以覆蓋。
11、這個(gè)時(shí)候就需要和平精英重復(fù)名生成器了,一鍵就能修改,生成專屬的名稱;
12、將獲取到的昵稱彩色字母復(fù)制到對(duì)話框中,然后通過復(fù)制,粘貼,刪除等操作,調(diào)節(jié)出自己想要的字母并排列好順序。(注意:每個(gè)字母之間需要有一個(gè)空格,否則可能設(shè)置失敗)最火特殊號(hào)網(wǎng)名。
13、移動(dòng)互聯(lián)是一塊大蛋糕,人人都想要去分一口,但我們希望所有的者在分食蛋糕的同時(shí)要文明和自覺,不要搶占別人的部分,更不要往蛋糕吐口水,導(dǎo)致最終大家都吃不成。
14、起初以為這個(gè)工具的配置類似聊器人,點(diǎn)進(jìn)去發(fā)現(xiàn),并沒有其他功能,你點(diǎn)進(jìn)你家愛豆的頭像后,進(jìn)入一個(gè)模擬微博私信聊天的界面,多次嘗試后發(fā)現(xiàn)一些語料模板的組合使用的現(xiàn)象,而且相似度也比較高,如果后續(xù)這個(gè)系統(tǒng)功能做一些智能化的功能設(shè)計(jì)與實(shí)現(xiàn),想必會(huì)吸引更多的粉絲來滿足自己的幻想,現(xiàn)在的功能還是略顯“沙雕”了。
15、概述:(多難)風(fēng)云蔽日,辛苦重來,雖有智謀,萬事挫折。
16、如何設(shè)計(jì)微信昵稱和簽名,讓人過目不忘???字體。
17、網(wǎng)名是你自己形象綜合的,直接傳達(dá),自己不喜歡的網(wǎng)名,怎算得上是好網(wǎng)名呢?網(wǎng)名首先要為你塑造一個(gè)你想要的形象。
18、天秤座女性最適合的英文名字:Ross、Julie、Gloria、Carol
19、健康:屬波漾重疊,數(shù)奇怪變化的英雄運(yùn)格。有義氣俠情,然而變化常多,風(fēng)波不息此數(shù)中人,而奏大功者有之,力不足,隨波逐流者有之。又因?yàn)樗竦呐浜?,或陷放逆,。或者鑾褥生霜?;蛳ハ铝愣?。屬大都不得順境的?shù)運(yùn)。但不少怪杰烈士偉人則有出其格者。微信名女生簡(jiǎn)單氣質(zhì)。
20、以上就是與怎么輸入自己的姓名取網(wǎng)名?相關(guān)內(nèi)容,是關(guān)于怎么輸入自己的姓名取網(wǎng)名?的分享??赐贻斎胄彰W(wǎng)名后,希望這對(duì)大家有所幫助!
四、游戲昵稱生成器在線
1、隨著全球化進(jìn)程的深化,英文名對(duì)每個(gè)人,尤其是年輕人,變得越來越重要。但是,很多人并不知道如何起英文名,往往胡亂起,結(jié)果產(chǎn)生很多問題。
2、網(wǎng)名在線生成器:輸入姓氏,例如“聞人”,可以指定姓氏,如需要隨機(jī)姓氏,請(qǐng)留空姓氏??蛇x一個(gè)字或兩個(gè)字的名字,可選男名、女名、和填寫生成數(shù)量。不滿意可重復(fù)點(diǎn)擊生成。
3、你也可以根據(jù)喜好,在字母之間或者前后加上等其他組合英文單詞。
4、家庭:親情無義妻子無助,若子女溫順可得。
5、16DdVictoria
6、?????(好久不見)
7、流量估計(jì)為130萬/月PV:
8、這是由“普通人商學(xué)院”共享的“工具賺米“該系列的第3期,
9、能夠非常清晰的,把你的每個(gè)標(biāo)簽展示出來。
10、非常適合吃雞愛好者們,所有的系統(tǒng)使用都是免費(fèi)的哦。
11、打開微信,點(diǎn)擊下圖所示區(qū)域;適合長(zhǎng)期不換的網(wǎng)名。
12、所以表示引領(lǐng)時(shí)尚彰顯個(gè)性
13、這兩個(gè)工具分別通過引用和馬丁路德的作品,而且你不會(huì)白挨罵,工具會(huì)注明引用出處,告訴你被那部著作羞辱了,在線感受一下這波“高級(jí)”操作吧。
14、這一工具看似很智能,堪與GPT作比,但其實(shí)背后的邏輯與算法能力卻不在一個(gè)層面,仍舊不妨礙大家對(duì)這類工具的與嘗試。目前這個(gè)Github項(xiàng)目已經(jīng)9kStars,簡(jiǎn)直驚呆。
15、11DanielAlyssa
16、內(nèi)閣就是字面一點(diǎn)的意思說室內(nèi),然后聽語就是傾聽顧客的訴求,這也表明你尊重顧客的需求。
17、琉璃翠一鍵生成cp名。
18、17RyanBrianna
19、最后,由于RAND函數(shù)是易失性函數(shù)。我們每按一次F9鍵,名稱生成器就會(huì)自動(dòng)運(yùn)算并生成新的名字。我們可以調(diào)整數(shù)字“0.3”,以增加或減少2個(gè)字的名字。
20、現(xiàn)在,表情、字、特殊號(hào)已經(jīng)成為日常中使用率很高的一種表達(dá)形式,它在一定程度上增加了趣味性,但是也會(huì)產(chǎn)生溝通中的理解偏差,造成不便。
五、名字昵稱生成器在線制作
1、名字“劉風(fēng)華”取藝名可取“華華”藝名可以取名字之其用于當(dāng)藝名。
2、打開手機(jī)微信“發(fā)現(xiàn)”頁面,點(diǎn)擊打開“小程序”。
3、基業(yè):財(cái)星。天佑、暗祿、文昌、技藝、田宅。
4、微民們覺得效果如何,喜歡的話,下面我再提供二種不同風(fēng)格的字母。微信昵稱設(shè)計(jì)在線生成器:如何用自己的姓名制作微信昵稱圓形字母可復(fù)制的漂亮特殊號(hào)。
5、怎么制作小辮子符號(hào)網(wǎng)名?
6、名字“李秋水”取藝名可取“長(zhǎng)天”有詩詞,秋水共長(zhǎng)天一色。取其中之寓意。效果極好。免費(fèi)自動(dòng)取名100分。
7、空白昵稱生成器——九蛙工具箱開發(fā)制作,本工具可一鍵生成安卓和IOS微信空白代碼。
8、我們先打開需要使用身份驗(yàn)證器的應(yīng)用,比如我正在使用的某個(gè)應(yīng)用,點(diǎn)擊到它的安全設(shè)置頁面??梢钥吹接袀€(gè)兩步驗(yàn)證,我還沒有開啟。點(diǎn)擊啟用按鈕。
9、然后就會(huì)進(jìn)入到兩步驗(yàn)證的頁面,點(diǎn)擊到里面去,可以看到它提供了一串用于開啟兩步驗(yàn)證的數(shù)字和字母組合。把這串?dāng)?shù)字復(fù)制下來。
10、合形象要求大氣有涵養(yǎng)的網(wǎng)名。
11、概述:(厚重)厚德載物,安富尊榮,財(cái)官雙美,功成名就。
12、安裝完畢后,點(diǎn)擊打開按鈕,打開身份驗(yàn)證器。這個(gè)時(shí)候就會(huì)跳轉(zhuǎn)到桌面上安裝驗(yàn)證器的位置,點(diǎn)擊驗(yàn)證器的圖標(biāo)打開身份驗(yàn)證器。
13、
14、使用方法同上面之一種字母相同
15、微信名字設(shè)置步驟如下:
16、和平精英重復(fù)名生成器蘋果版是一款非常不錯(cuò)的生成名字類的軟件,所有的操作都是十分的簡(jiǎn)單輕松,任何的玩家都是可以去使用的,只需要幾個(gè)簡(jiǎn)潔的步驟就可以完成了,讓你擁有一個(gè)酷炫的名字,你可以選擇各種不同的類型,隨意的使用,也可以自動(dòng)的生成,滿足你的一一切需求,趕快來試一試吧,使用更加的方便哦。
17、以上就是與如何用自己的姓名制作微信昵稱相關(guān)內(nèi)容,是關(guān)于代玉婷定制qq網(wǎng)名在看看我的名字是多少分的分享??赐甓ㄖ凭W(wǎng)名輸入自己名字后,希望這對(duì)大家有所幫助!
18、以上就是與用自己名字設(shè)計(jì)網(wǎng)名在線測(cè)試名字叫:吳文輝相關(guān)內(nèi)容,是關(guān)于qq情侶網(wǎng)名在線制作的分享。看完網(wǎng)名設(shè)計(jì)在線生成后,希望這對(duì)大家有所幫助!
19、在框內(nèi)輸入需要設(shè)置的微信名字(不能是空白、不能包含微信不支持號(hào)表情等,否則將會(huì)無法修改),輸入成功之后點(diǎn)擊右上角完成即可。以前在網(wǎng)頁上有可以定制情侶網(wǎng)名的,我輸入我的名字和別人的后,現(xiàn)在在打上我的名字就會(huì)出現(xiàn)那個(gè)在那網(wǎng)頁上把那個(gè)人的名字刪除就可以用姓名編一個(gè)網(wǎng)名。定制網(wǎng)名輸入自己名字:定制網(wǎng)名輸自己名字的定制網(wǎng)名輸入自己名字:如何用自己的姓名制作微信昵稱姓名微信昵稱
20、參考資料來源:東方財(cái)富網(wǎng)-微信紅包生成器App遭騰訊巨額索賠有一個(gè)軟件可以p圖p成微信聊天界面叫什么急求!在安卓上,有一款名叫“對(duì)話,還能夠生成賬單、余額寶界面等等截圖,偽裝功能可謂是相當(dāng)全面。名字生成器軟件有哪些講一下哦常見的主流的是金芝名字生成軟件,金芝姓名,你可以一下,搜一個(gè)試試。之前用過功能很強(qiáng)大,可以生成多種多樣的名字還能自動(dòng)排版。
點(diǎn)贊生成器昵稱就是直接點(diǎn)贊哦,希望這個(gè)回答可以幫助到您!
點(diǎn)贊生成器的昵稱,昵稱和消息內(nèi)容圓侍如果不填會(huì)談搭隨機(jī)生成。如果你想自己設(shè)置內(nèi)容也是可以噠!網(wǎng)名也起橘侍吵一個(gè)好聽的,這樣順口一點(diǎn)兒。
關(guān)于點(diǎn)贊系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營(yíng)銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營(yíng)銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。
網(wǎng)站標(biāo)題:探討點(diǎn)贊系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì) (點(diǎn)贊系統(tǒng)數(shù)據(jù)庫設(shè)計(jì))
分享鏈接:http://www.fisionsoft.com.cn/article/cdhgshi.html


咨詢
建站咨詢
