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