mongodb完全替代mysql MySQL分庫(kù)分表之后,id主鍵如何處理?
MySQL分庫(kù)分表之后,id主鍵如何處理?我將從存在的問(wèn)題和如何做中回答這個(gè)問(wèn)題。。沒(méi)有辦法避免這個(gè)問(wèn)題,通常拆分SQL,使用多個(gè)查詢,然后使用結(jié)果分別檢查結(jié)果!我們可以使用TCC編程模型來(lái)確保兩個(gè)事
MySQL分庫(kù)分表之后,id主鍵如何處理?
我將從存在的問(wèn)題和如何做中回答這個(gè)問(wèn)題。。
沒(méi)有辦法避免這個(gè)問(wèn)題,通常拆分SQL,使用多個(gè)查詢,然后使用結(jié)果分別檢查結(jié)果
!我們可以使用TCC編程模型來(lái)確保兩個(gè)事務(wù)可以正確提交,但這種代碼入侵方式相對(duì)較重!您還可以使用基于消息的數(shù)據(jù)一致性保證
!1. 使用多線程分別查詢多個(gè)節(jié)點(diǎn),然后匯總
redis、memcache和mongodb各自的優(yōu)點(diǎn)是什么,怎么選擇呢?
Mongodb不應(yīng)與redis/Memcache相比,因?yàn)樗鼈兊膽?yīng)用場(chǎng)景完全不同。
Mongodb是介于內(nèi)存數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)之間的數(shù)據(jù)庫(kù)。它是一個(gè)高性能、無(wú)模式的文檔數(shù)據(jù)庫(kù)。
Mongodb數(shù)據(jù)存儲(chǔ)在磁盤上。只有在必要時(shí),才會(huì)通過(guò)MMAP映射到內(nèi)存,并在內(nèi)存中進(jìn)行修改。修改后,操作系統(tǒng)負(fù)責(zé)刷新磁盤。
優(yōu)點(diǎn):支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),能存儲(chǔ)海量數(shù)據(jù),能提供關(guān)系數(shù)據(jù)庫(kù)等強(qiáng)大的查詢功能。
Redis是一個(gè)開源的鍵值存儲(chǔ)系統(tǒng)。所有數(shù)據(jù)都存儲(chǔ)在內(nèi)存中。持久性處于RDB模式或AOF模式。只支持key、string、hash、list和set。優(yōu)點(diǎn):讀寫速度非常快。缺點(diǎn):受內(nèi)存限制,不能存儲(chǔ)太多的數(shù)據(jù),不能提供強(qiáng)大的查詢功能,只能使用單核。
Memcache是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)web應(yīng)用程序以減少數(shù)據(jù)庫(kù)負(fù)載。Memcache只支持簡(jiǎn)單的鍵值結(jié)構(gòu),但使用多核。
在爬蟲中,經(jīng)常使用redis mongodb的方式。Mongodb用來(lái)存儲(chǔ)被爬網(wǎng)的海量數(shù)據(jù),redis用來(lái)消除重復(fù)并保存被爬網(wǎng)的URL。