了解最新公司動(dòng)態(tài)及行業(yè)資訊
本文創(chuàng)建數(shù)據(jù)庫需要注意什么?
根據(jù)你的實(shí)際應(yīng)用說幾點(diǎn):
自動(dòng)功能:自動(dòng)拆分?jǐn)?shù)據(jù)和平衡數(shù)據(jù)分配。這個(gè)非常重要。選擇合理的分片是否可以讓數(shù)據(jù)存儲(chǔ)更均衡。
數(shù)據(jù)庫多集群的配置可以根據(jù)自己的業(yè)務(wù)場景進(jìn)行。
是數(shù)據(jù)庫建模的問題服務(wù)器運(yùn)維,從根本上理解和mysql的區(qū)別。關(guān)系數(shù)據(jù)庫和文檔數(shù)據(jù)庫。
文檔數(shù)據(jù)庫里有很多東西。例如,如果表中的存儲(chǔ)層次太深,查找或查找時(shí)結(jié)構(gòu)可能會(huì)非常復(fù)雜。
使用數(shù)據(jù)庫索引,高效的查詢比什么都重要。
如何連接到數(shù)據(jù)庫
是10gen團(tuán)隊(duì)開發(fā)的基于分布式存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng),用C++編寫。作為文檔數(shù)據(jù)庫,數(shù)據(jù)以鍵值對的形式存儲(chǔ)。
下面我們來看一下基本用法。
1.連接數(shù)據(jù)庫
使用以下命令連接數(shù)據(jù)庫
蒙戈
連接到數(shù)據(jù)庫
2.查看當(dāng)前使用的數(shù)據(jù)庫。
在 中,如果要查看使用的是哪個(gè)數(shù)據(jù)庫,可以使用如下命令查看。
D b
檢查使用的數(shù)據(jù)庫
3. 檢查哪些數(shù)據(jù)庫可用。
里面有很多數(shù)據(jù)庫,對于哪些數(shù)據(jù)庫,可以使用如下命令查看。
顯示數(shù)據(jù)庫
查看所有數(shù)據(jù)庫
4. 創(chuàng)建數(shù)據(jù)庫。
如果現(xiàn)階段已有的數(shù)據(jù)庫不能滿足要求,可以使用如下命令創(chuàng)建新的數(shù)據(jù)庫。
利用
其中,它表示要?jiǎng)?chuàng)建的數(shù)據(jù)庫的名稱。下面將演示創(chuàng)建名為offcn 的數(shù)據(jù)庫。
使用 offcn
創(chuàng)建offcn數(shù)據(jù)庫
5.刪除數(shù)據(jù)庫
當(dāng)數(shù)據(jù)庫沒有作用時(shí),可以刪除數(shù)據(jù)庫以釋放占用的空間資源。使用以下命令刪除數(shù)據(jù)庫,刪除前需要選擇要?jiǎng)h除的數(shù)據(jù)庫。
使用 offcn
D b。()
刪除數(shù)據(jù)庫
使用數(shù)據(jù)庫有什么好處
以下是唐錦總結(jié)的優(yōu)缺點(diǎn)列表。希望對打算使用的同學(xué)有所幫助:
優(yōu)勢:
快速地?。ó?dāng)然這和具體的應(yīng)用方式有關(guān),一般來說比一般的關(guān)系型數(shù)據(jù)庫快5位數(shù)左右。)
高擴(kuò)展性——可以輕松實(shí)現(xiàn) PB 級存儲(chǔ)(但也許我們不需要 PB 級存儲(chǔ),10TB 可能就足夠了)
他有一個(gè)漂亮的圖案(套)
擁有非常完備的Java API
他的存儲(chǔ)格式是Json,對于Java來說非常好辦,反之亦然。
運(yùn)維非常方便,不需要專門安排管理員。
它有一個(gè)非?;钴S的社區(qū)(我提出的錯(cuò)誤在 20 分鐘內(nèi)得到修復(fù)。謝謝)
他的版本控制非常清晰。
它背后的公司 (10gen) 準(zhǔn)備明天花錢買它。
壞處
缺乏應(yīng)用經(jīng)驗(yàn),我們都沒有相關(guān)NoSQL產(chǎn)品的使用經(jīng)驗(yàn)。
該項(xiàng)目相對較新。
與以前的存儲(chǔ)相比,數(shù)據(jù)的關(guān)聯(lián)操作不復(fù)存在。
什么數(shù)據(jù)庫適合
不支持事務(wù)是眾所周知的,所以需要強(qiáng)事務(wù)的業(yè)務(wù)根本不能考慮。
優(yōu)點(diǎn)是文檔存儲(chǔ):
1、業(yè)務(wù)變化頻繁,需要時(shí)不時(shí)增加字段,比較適合。關(guān)系型數(shù)據(jù)庫加字段的復(fù)雜度也不錯(cuò)
2.嵌套文檔,業(yè)務(wù)數(shù)據(jù)比較復(fù)雜,適合嵌套文檔存儲(chǔ),所以很適合,這個(gè)關(guān)系型數(shù)據(jù)庫比較難搞,雖然mysql和pg也有文檔存儲(chǔ),但是mysql不成熟,畢竟pg現(xiàn)在生產(chǎn)中用到的還比較少,個(gè)人也不是很了解,這里就不多說了。但這并不是唯一的優(yōu)勢,下面將詳細(xì)介紹。
3.支持,查詢速度不慢
4.高可用副本集支持
5.查詢語法很豐富,嵌套文檔查詢功能很強(qiáng)大,非重度用戶可能看不懂
讓我們談?wù)勔粋€(gè)具體的用例:
項(xiàng)目中一條數(shù)據(jù)大概10kb。如果使用關(guān)系型數(shù)據(jù)庫,則需要將這條數(shù)據(jù)拆分成大概幾百條,建多張表。設(shè)計(jì)比較復(fù)雜。這種數(shù)據(jù)大約是一百萬條。想想看,拆分之后,十億多的數(shù)據(jù)量是多么可怕。平局后的數(shù)據(jù)在任何DB都可以拿下,但從百萬變到十億以上就更可怕了。
如果使用MySQL存儲(chǔ),每次查詢需要使用外鍵查詢多張表,從這些表中拉取數(shù)據(jù)性能肯定會(huì)下降很多,不如只在一張表中查詢,只拉取少了兩個(gè)數(shù)量級的數(shù)據(jù)。查詢也還可以,業(yè)務(wù)允許把結(jié)果緩存起來放在redis中。
但重要的一點(diǎn)來了。需要增量更新一些數(shù)據(jù)。這時(shí)候需要更新多張表,根本無法實(shí)現(xiàn)原子性(注意事務(wù)不是原子操作)。當(dāng)然可以通過cas等技術(shù)進(jìn)行補(bǔ)償,達(dá)到最終一致性。但是只需要一條數(shù)據(jù)就可以使用存儲(chǔ),對應(yīng)嵌套文檔中的內(nèi)容更新可以是原子的,是不是很方便?
推薦學(xué)習(xí)《教程》
下面我詳細(xì)說一下這個(gè)項(xiàng)目的難點(diǎn)。你可能會(huì)奇怪查詢不能使用緩存,但是業(yè)務(wù)決策真的不行,增量更新量達(dá)到幾萬QPS。如果不能保證原子性,想想那有多可怕!
所以這里幫了大忙,關(guān)系型數(shù)據(jù)庫解決不了這個(gè)問題。
可能有人會(huì)問,沒有事務(wù),上游數(shù)據(jù)寫入會(huì)有問題嗎?你不可能把所有的數(shù)據(jù)都存到一張表里吧?
當(dāng)然不是,我們數(shù)據(jù)庫中的數(shù)據(jù)是從MySQL中清洗出來存儲(chǔ)到數(shù)據(jù)庫中的,只是為了單點(diǎn)業(yè)務(wù)需要,綜合數(shù)據(jù)還是在MySQL中。
我們在這個(gè)項(xiàng)目中使用了數(shù)百個(gè)副本集來保證系統(tǒng)的高可用。這些副本集的配置只需要一個(gè)shell。如果不知道如何配置MySQL的主從(我自己也不知道),估計(jì)DBA會(huì)忙不過來。而且這個(gè)項(xiàng)目根本不需要也不需要用到DBA。
說了這么多mongo的優(yōu)點(diǎn),也說說他的缺點(diǎn):
1.查詢優(yōu)化器是MySQL無法比擬的
2.不支持,只能冷啟動(dòng),初始化配置麻煩
3、沒有事務(wù)不敢存第一手資料,多用于備份資料
可以做很多事情,看你的想象,性能還不錯(cuò),存儲(chǔ)一些相對不重要的數(shù)據(jù),嵌套文檔功能強(qiáng)大。多看官方文檔,挖掘有用的信息,每次都能發(fā)現(xiàn)驚喜。
如何創(chuàng)建數(shù)據(jù)庫表
建表步驟,常用Mongo數(shù)據(jù)庫操作命令,查詢,增刪改查,性能監(jiān)控。
使用管理員(切換到創(chuàng)建用戶)
db.(創(chuàng)建數(shù)據(jù)庫)
db.("", "Pwd") 創(chuàng)建用戶
db.auth("", "Pwd") 設(shè)置用戶為允許連接的用戶
db.("") 創(chuàng)建表
檢查表是否創(chuàng)建成功
db..Save({age:1}) 添加數(shù)據(jù)
db..find() 查看添加數(shù)據(jù)是否成功(如果沒有找到結(jié)果,則表示添加失?。?/p>
建議學(xué)習(xí)《教程》。
什么類型的數(shù)據(jù)庫
它是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。用C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
它是介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)物。它是非關(guān)系數(shù)據(jù)庫中功能最強(qiáng)大的,最類似于關(guān)系數(shù)據(jù)庫。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于json的bson格式,因此可以存儲(chǔ)更復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)就是它支持的查詢語言非常強(qiáng)大。它的語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言。幾乎可以實(shí)現(xiàn)大部分類似關(guān)系型數(shù)據(jù)庫單表查詢的功能,還支持對數(shù)據(jù)建立索引。
使用數(shù)據(jù)庫有什么好處
以下是唐錦總結(jié)的優(yōu)缺點(diǎn)列表。希望對打算使用的同學(xué)有所幫助:
優(yōu)勢:
快速地!(當(dāng)然這和具體的應(yīng)用方式有關(guān),一般來說比一般的關(guān)系型數(shù)據(jù)庫快5位數(shù)左右。)
高擴(kuò)展性——可以輕松實(shí)現(xiàn) PB 級存儲(chǔ)(但也許我們不需要 PB 級存儲(chǔ),10TB 可能就足夠了)
他有一個(gè)漂亮的圖案(套)
擁有非常完備的Java API
他的存儲(chǔ)格式是Json,對于Java來說非常好辦,反之亦然。
運(yùn)維非常方便,不需要專門安排管理員。
它有一個(gè)非常活躍的社區(qū)(我提出的錯(cuò)誤在 20 分鐘內(nèi)得到修復(fù)。謝謝)
他的版本控制非常清晰。
它背后的公司 (10gen) 準(zhǔn)備明天花錢買它。
壞處
缺乏應(yīng)用經(jīng)驗(yàn),我們都沒有相關(guān)NoSQL產(chǎn)品的使用經(jīng)驗(yàn)。
該項(xiàng)目相對較新。
與以前的存儲(chǔ)相比,數(shù)據(jù)的關(guān)聯(lián)操作不復(fù)存在。
數(shù)據(jù)庫有什么優(yōu)勢
1.文件存儲(chǔ)
數(shù)據(jù)存儲(chǔ)為 BSON/JSON 文檔,這對于 Web 應(yīng)用程序具有重要意義。開發(fā)者API喜歡以JSON的形式傳輸,使得整個(gè)項(xiàng)目的數(shù)據(jù)表示采用統(tǒng)一的模型。所有這一切都無需任何前期架構(gòu)設(shè)計(jì)。
2.可擴(kuò)展性
在一些大型環(huán)境中使用,/正在使用它。通過分片數(shù)據(jù)進(jìn)行縮放處理,理論上可以獲得更高的吞吐量。
3.簡單復(fù)制
與分片一樣,范圍范圍的復(fù)制易于使用,并且在副本機(jī)器上有很多復(fù)制選項(xiàng)。靈活的特性可滿足用戶應(yīng)用的需求。
4.查詢方便
以文檔形式存儲(chǔ)數(shù)據(jù),不支持事務(wù)和表連接。因此查詢更容易編寫、理解和優(yōu)化。簡單查詢的設(shè)計(jì)思想不同于SQL模式。嵌入的文檔在特定的環(huán)境下可以更好的查詢服務(wù)器運(yùn)維,但是這個(gè)需要先加入到集合中。如果您需要對數(shù)據(jù)庫執(zhí)行多個(gè)請求,則需要將其加入客戶端。這時(shí)候,ODM工具(如)就會(huì)發(fā)揮自己的優(yōu)勢。
5. 安全
由于客戶端生成的查詢是一個(gè)BSON對象而不是一個(gè)可以解析的字符串,因此可以降低被SQL注入攻擊的風(fēng)險(xiǎn)。最常見的攻擊類型是針對 Web 應(yīng)用程序的攻擊,可以通過在 Web 上使用 ODM 查詢語言來緩解這種攻擊。
6.支持
用戶在選擇數(shù)據(jù)庫時(shí)總是喜歡積極和動(dòng)態(tài)的東西,這一點(diǎn)非常重要。在行業(yè)內(nèi)影響力很大,用戶也定期組織活動(dòng)。該標(biāo)簽在 . 您永遠(yuǎn)不會(huì)陷入困境,因?yàn)榭傆腥丝梢耘c之討論和解決問題。
七、價(jià)格
免費(fèi)!
當(dāng)然,優(yōu)點(diǎn)遠(yuǎn)不止這些,缺點(diǎn)也不少。
使用場景是什么
使用場景:
(1) 網(wǎng)站數(shù)據(jù):適用于實(shí)時(shí)插入、更新和查詢,具有網(wǎng)站實(shí)時(shí)數(shù)據(jù)存儲(chǔ)所需的可復(fù)制性和高擴(kuò)展性。
(2)緩存:由于其高性能,也適合作為信息基礎(chǔ)設(shè)施的緩存層。系統(tǒng)重啟后,系統(tǒng)構(gòu)建的持久化緩存層可以防止底層數(shù)據(jù)源過載。
(3) 大尺寸、低價(jià)值的數(shù)據(jù)。
(4) 高擴(kuò)展性場景:適用于由幾十臺(tái)或上百臺(tái)服務(wù)器組成的數(shù)據(jù)庫。
(5) 對象和JSON數(shù)據(jù)的存儲(chǔ):BSON數(shù)據(jù)格式適合以文檔化的格式存儲(chǔ)和查詢。
設(shè)計(jì)特點(diǎn):
(1) 面向集合存儲(chǔ),易于存儲(chǔ)對象類型的數(shù)據(jù)。數(shù)據(jù)分組存儲(chǔ)在集合中,類似于RDBMS中的表,集合中可以存儲(chǔ)無限數(shù)量的文檔。
(2) Mode free,采用無模式結(jié)構(gòu)存儲(chǔ)。集合中存儲(chǔ)的數(shù)據(jù)是無模式文檔,使用無模式存儲(chǔ)數(shù)據(jù)是RDBMS中集合區(qū)別于表的重要特征。
(3) 支持全索引,索引可以建立在任何屬性上,包括內(nèi)部對象。RDBMS的索引與RDBMS的索引基本相同??梢詫χ付ǖ膶傩院蛢?nèi)部對象創(chuàng)建索引,以提高查詢速度。除此之外,還提供了創(chuàng)建基于地理空間的索引的能力。
(4) 支持查詢。支持豐富的查詢操作,幾乎支持大部分SQL查詢。
(5) 強(qiáng)大的聚合工具。除了提供豐富的查詢功能外,還提供強(qiáng)大的聚合工具,如count、group等,支持復(fù)雜的聚合任務(wù)。
24小時(shí)免費(fèi)咨詢
請輸入您的聯(lián)系電話,座機(jī)請加區(qū)號(hào)