新聞中心
mongodb主要用來干嘛,什么時候用,存什么樣的數(shù)據(jù)?
不抄百度,純經(jīng)驗回答,mongo作為存儲json最方便的nosql數(shù)據(jù)庫。主要兩種情況下使用,1,小網(wǎng)站做著玩,對安全性要求并不高,也沒有事務性需求,2,超大型網(wǎng)站,用于存儲非事務性或非關鍵性數(shù)據(jù),用于分布式數(shù)據(jù)存取或有分庫需求

創(chuàng)新互聯(lián)建站主營徽縣網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App定制開發(fā),徽縣h5成都小程序開發(fā)搭建,徽縣網(wǎng)站營銷推廣歡迎徽縣等地區(qū)企業(yè)咨詢
這個主要看業(yè)務,大部分用于存儲一些日志,統(tǒng)計相關的數(shù)據(jù),如果不要求事物的話mongo是很好的選擇,天生具備分布式擴展,大數(shù)據(jù)量存儲。我們是用java操作,用的spring data mongodb,具體你可以百度猿天地,里面有視頻教程
是一種存儲json對象,并提供快速查詢,刪除和更新的新一代數(shù)據(jù)庫服務軟件??梢灶惐萴ysql或者sqlserver。但跟傳統(tǒng)數(shù)據(jù)庫不同,它不依賴schema(類似mysql的table定義)和關系約束。它可以存任何json對象,并提供多種方法進行查詢,聚合,映射。
由于原生json支持,特別適合作為node的數(shù)據(jù)庫。node中比較知名的mongoose,把mongodb進行了包裝,提供schema檢驗,關系查詢,等傳統(tǒng)sql的功能,通過promise提供并行批量數(shù)據(jù)庫操作,事務性也可以由第三方插件提供。再結(jié)合redis的內(nèi)存緩存服務,和kareem提供的hook功能。基本上可以優(yōu)雅的完成自動緩存查詢,自動緩存更新。因此,用node快速開發(fā)情況下會選擇mongodb。
高并發(fā)下如何生成唯一訂單號?
最簡單的辦法就是用用戶名?ip?時間生成訂單號,然后計算哈希值后做一定轉(zhuǎn)換就可以生成唯一訂單號。不過唯一的問題就是不太好查。畢竟這種訂單號沒有任何規(guī)律可言,后期查詢是個大麻煩。其實最建議的方式就是分渠道分地區(qū)建立訂單號。就和身份證號生成機制一樣,各個地區(qū)可以獨立生成身份證號,最后合在一起還沒有任何問題。
在高并發(fā)場景下,生成唯一訂單號可以采用以下幾種方式:
1. 使用數(shù)據(jù)庫自增ID:在數(shù)據(jù)庫中創(chuàng)建一個自增ID字段,每次插入數(shù)據(jù)時自動遞增生成新的ID。這種方式簡單易行,但需要保證數(shù)據(jù)庫的性能和穩(wěn)定性。
2. UUID:使用UUID(通用唯一識別碼)作為訂單號,可以確保唯一性。但是,UUID長度較長,存儲和索引效率較低。
3. Redis自增ID:使用Redis的INCR命令實現(xiàn)自增ID,可以避免數(shù)據(jù)庫的瓶頸和單點故障問題。
4. Snowflake算法生成ID:Snowflake算法可以生成唯一且有序的ID,適合高并發(fā)場景。它的原理是將一個64位的long型數(shù)字分成5個部分,分別表示時間戳、數(shù)據(jù)中心ID、機器ID、序列號等,保證了ID的唯一性和有序性。
還有一種方式是基于時間戳和序列號生成唯一訂單號,具體實現(xiàn)方式如下:
1. 獲取當前時間戳,精確到毫秒級別。
2. 將時間戳轉(zhuǎn)換成固定長度的字符串,比如10位或13位。
1、 使用數(shù)據(jù)庫自增Id
優(yōu)勢:編碼簡單,無需考慮記錄唯一標識的問題。
缺陷:
1) 在大表做水平分表時,就不能使用自增Id,因為Insert的記錄插入到哪個分表依分表規(guī)則判定決定,若是自增Id,各個分表中Id就會重復,在做查詢、刪除時就會有異常。
2) 在對表進行高并發(fā)單記錄插入時需要加入事物機制,否則會出現(xiàn)Id重復的問題。
3) 在業(yè)務上操作父、子表(即關聯(lián)表)插入時,需要在插入數(shù)據(jù)庫之前獲取max(id)用于標識父表和子表關系,若存在并發(fā)獲取max(id)的情況,max(id)會同時被別的線程獲取到。
4) 等等。
結(jié)論:適合小應用,無需分表,沒有高并發(fā)性能要求。
2、 單獨開一個數(shù)據(jù)庫,獲取全局唯一的自增序列號或各表的MaxId
1) 使用自增序列號表
到此,以上就是小編對于mongodb 自增id實現(xiàn)的問題就介紹到這了,希望這2點解答對大家有用。
網(wǎng)站題目:高并發(fā)下如何生成唯一訂單號?
網(wǎng)頁網(wǎng)址:http://fisionsoft.com.cn/article/coeceho.html


咨詢
建站咨詢
