




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《NoSQL數據庫應用與實踐》第1章
認識NoSQL第2章
鍵值對存儲型數據庫Redis第3章
列式存儲型數據庫HBase第4章
圖形存儲數據庫Neo4j第5章
文檔存儲型數據庫MongoDB第6章
增刪改查第7章
索引第8章
排序和分頁第9章
權限機制第10章MapReduce和GridFS第11章
客戶端軟件第12章PythonToMongoDB第13章MongoDB與Django第14章MongoDB與python數據分析全套可編輯PPT課件
本課件是可編輯的正常PPT課件
第一章認識NoSQL單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件人工智能時代下的數據01不僅僅是SQL02NoSQL基礎理論04NoSQL數據庫分類05關系數據庫與非關系數據庫03目錄本課件是可編輯的正常PPT課件在人工智能時代,數據被視為新的“石油”,是推動AI技術發(fā)展的核心動力。數據的數量、種類、速度和質量都直接影響著AI模型的性能和準確性。大數據(BigData)指的是那些數據量巨大、類型多樣、生成速度快且具有高價值潛力的數據集合。大數據的四大特征——數據量(Volume)、數據速度(Velocity)、數據種類(Variety)和數據真實性(Veracity),使得傳統(tǒng)的數據處理方法難以應對,因此催生了大數據技術的誕生和發(fā)展。1大數據技術包括數據收集、存儲、處理和分析,旨在從大量的結構化和非結構化數據中提取有價值的信息和知識。這些技術不僅提升了數據處理的效率,還使得企業(yè)能夠更精準地理解市場和客戶需求,優(yōu)化決策過程,提高競爭力。2人工智能時代下的數據本課件是可編輯的正常PPT課件01不僅僅是SQL本課件是可編輯的正常PPT課件NoSQL,全稱“NotOnlySQL”,泛指非關系型的數據庫。種類繁多,包括鍵值存儲數據庫、列存儲數據庫、文檔存儲數據庫和圖形數據庫等壹貳什么是NoSQL本課件是可編輯的正常PPT課件0102NoSQL數據庫起源于20世紀90年代,隨著互聯網Web2.0網站的興起,傳統(tǒng)的關系數據庫在處理超大規(guī)模和高并發(fā)的網站時顯得有些費力。這些網站需要處理海量的用戶數據和高并發(fā)的訪問請求,而傳統(tǒng)的SQL數據庫在擴展性和性能上無法滿足這些需求。因此,非關系型數據庫逐漸得到了關注和發(fā)展。NoSQL數據庫的出現,為處理大規(guī)模、高并發(fā)、高可擴展性的數據提供了更好的解決方案。這些數據庫通過去除關系型數據庫的關系型特性,簡化了數據庫的結構,提高了數據處理的速度和效率。同時,NoSQL數據庫還具備高可用性和易于擴展的特點,能夠確保數據庫在故障時仍然能夠提供服務,并且在數據量增長時仍然能夠高效地處理請求。NoSQL起源本課件是可編輯的正常PPT課件關系型數據庫采用關系模型來組織數據結構的數據庫(二維表)Oracle(甲骨文)、DB2(IDM)、SQLServer(微軟)、MySQL、Sqlite(小型數據庫,唯一一個python不需要安裝第三方包就可以就進行操作的數據庫,多用于嵌入式的一些開發(fā))優(yōu)點:?容易理解,邏輯類似常見的表格?使用方便,都使用sql語句進行操作,sql語句是非常成熟的?一致性高,冗余低,完整度高?技術成熟,可以使用外部的鏈接等復雜操作本課件是可編輯的正常PPT課件02關系數據庫與非關系數據庫本課件是可編輯的正常PPT課件高安全性支持事務強大的查詢能力靈活的數據庫設計特點數據擴展性受限靈活性不足并發(fā)性能問題SQL語言限制成本較高缺點壹貳關系型數據庫本課件是可編輯的正常PPT課件1.NoSQL的優(yōu)點NoSQL數據庫的優(yōu)點主要體現在以下幾個方面:靈活性高擴展性高性能2.NoSQL的缺點數據一致性問題查詢能力限制缺乏標準化非關系型數據庫本課件是可編輯的正常PPT課件數據存儲方式不同擴展方式不同對事務性的支持不同關系數據庫與非關系數據庫的比較本課件是可編輯的正常PPT課件03NoSQL基礎理論本課件是可編輯的正常PPT課件01040203CAP定理是分布式計算中的一個重要理論,它指出一個分布式系統(tǒng)在設計時不能同時滿足以下三個特性:一致性(Consistency):在分布式系統(tǒng)中的所有節(jié)點,同一時刻的數據是一致的。當系統(tǒng)更新數據時,所有節(jié)點都能看到最新的數據值。可用性(Availability):每個請求都能得到非錯誤的響應(即,不存在超時或拒絕服務的情況),但不保證返回的是最新寫入的數據。分區(qū)容忍性(Partitiontolerance):在系統(tǒng)中任意信息的丟失或失敗發(fā)生時,系統(tǒng)仍能夠繼續(xù)運行并滿足一致性和可用性的要求。由于網絡分區(qū)是分布式系統(tǒng)無法避免的,因此分區(qū)容忍性通常被認為是分布式系統(tǒng)的基本要求。CAP定理本課件是可編輯的正常PPT課件BASE理論是對CAP定理中犧牲強一致性后的一種實踐原則,用于指導設計可擴展的分布式系統(tǒng)。BASE是以下三個術語的縮寫:基本可用(BasicallyAvailable):系統(tǒng)保證核心可用,但允許在部分情況下降低可用性。例如,在系統(tǒng)出現分區(qū)故障時,可能犧牲部分功能的可用性來確保系統(tǒng)的整體運行。軟狀態(tài)(Softstate):允許系統(tǒng)中的數據存在中間狀態(tài),即數據的變化不是即時的,系統(tǒng)可以有一段時間的異步處理過程。這與ACID中的原子性和持久性不同,后者要求數據狀態(tài)在任何時刻都是一致的。最終一致性(Eventuallyconsistent):系統(tǒng)能夠保證在沒有新的更新操作的情況下,最終所有的數據副本都將是一致的。這允許系統(tǒng)在一段時間內存在數據不一致的情況,但最終會達到一致狀態(tài)。BASE理論本課件是可編輯的正常PPT課件最終一致性是CAP定理和BASE理論中的一個核心概念,它指的是在分布式系統(tǒng)中,當沒有新的更新操作時,系統(tǒng)能夠保證所有的數據副本最終會達到一致的狀態(tài)。這種一致性模型是相對于強一致性而言的,強一致性要求在任何時刻,系統(tǒng)的所有節(jié)點都保持數據的一致性。在最終一致性模型中,系統(tǒng)允許在數據更新后的一段時間內,不同的數據副本之間存在不一致的情況。這種不一致是暫時的,并且隨著時間的推移,系統(tǒng)會通過某種機制(如數據復制、沖突解決等)來確保所有副本最終都達到一致狀態(tài)。最終一致性模型為分布式系統(tǒng)提供了更高的靈活性和可擴展性,特別是在處理大規(guī)模數據和高并發(fā)訪問時。然而,它也要求開發(fā)者在設計和實現系統(tǒng)時,需要仔細考慮數據一致性的需求和業(yè)務邏輯的要求,以確保系統(tǒng)能夠滿足用戶的需求。最終一致性本課件是可編輯的正常PPT課件04NoSQL數據庫分類本課件是可編輯的正常PPT課件鍵值對存儲數據庫定義與特點:鍵值對存儲數據庫是一種使用鍵值對(Key-ValuePair)來存儲數據的數據庫系統(tǒng)。在這種數據庫中,每個數據項都由一個唯一的鍵(Key)和一個對應的值(Value)組成。鍵值對數據庫通常具有高性能、高并發(fā)、簡單易用等特點,適用于需要快速讀寫和查詢的場景,如緩存、會話管理等。典型代表:Redis:一個開源的、內存中的數據結構存儲系統(tǒng),它可以用作數據庫、緩存和消息中間件。Redis支持多種類型的數據結構,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)等。Memcached:一個高性能的分布式內存對象緩存系統(tǒng),通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態(tài)Web應用的速度。應用場景:鍵值對數據庫適用于需要快速訪問和更新數據,且數據結構相對簡單的場景,如緩存、會話共享、排行榜等。本課件是可編輯的正常PPT課件文檔存儲數據庫定義與特點:文檔存儲數據庫是一種非關系型數據庫,它以文檔的形式存儲數據,每個文檔都是一個自包含的數據單元,可以包含多種類型的數據。文檔數據庫通常具有動態(tài)模式、易擴展性、復雜數據類型支持等特點,適用于存儲結構化或半結構化數據。典型代表:MongoDB:一個基于分布式文件存儲的數據庫,由C++語言編寫。它為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。它支持的數據結構非常松散,是類似json的bson格式。CouchDB:一個開源的、面向文檔的數據庫管理系統(tǒng),它使用JSON作為數據存儲格式,并提供了一個RESTfulHTTPAPI用于與數據庫進行交互。CouchDB支持多版本并發(fā)控制(MVCC),可以實現數據的版本控制和沖突解決。應用場景:文檔數據庫適用于需要處理大量結構化或半結構化數據的場景,如內容管理系統(tǒng)(CMS)、電子商務平臺、移動應用等。本課件是可編輯的正常PPT課件列式存儲數據庫是一種將數據按列進行組織和存儲的數據庫系統(tǒng)。與傳統(tǒng)的行式數據庫相比,列式數據庫在數據存儲和查詢效率方面具有顯著優(yōu)勢,特別適用于大量讀取、少量更新和查詢的場景。列式數據庫通常具有高效的數據壓縮、快速的讀取速度和良好的可擴展性等特點。列式數據庫適用于需要處理大量數據、進行復雜查詢和數據分析的場景,如數據倉庫、商業(yè)智能、在線分析等。定義與特點:應用場景:典型代表:Cassandra:一個開源的、分布式的、高可用的列式存儲數據庫系統(tǒng)。它支持跨多個數據中心的數據復制和容錯,適用于需要高可用性和可擴展性的應用場景。HBase:一個基于Google的BigTable模型的開源、非關系型、分布式數據庫。它是一個高可靠性、高性能、面向列的分布式存儲系統(tǒng),用于存儲結構化數據。列式存儲數據庫本課件是可編輯的正常PPT課件圖形存儲數據庫定義與特點:圖形存儲數據庫是一種以圖形形式存儲數據的數據庫系統(tǒng)。它以節(jié)點、邊和屬性的形式表示和存儲數據,其中節(jié)點表示實體,邊表示實體之間的關系,屬性則是節(jié)點和邊的詳細信息。圖形數據庫具有高度連接性、靈活性、高性能和直觀性等特點,適用于處理大量互相關聯的數據。典型代表:Neo4j:一個高性能的、基于Java的圖形數據庫系統(tǒng)。它支持復雜的查詢語言Cypher,并提供了豐富的圖形算法和工具集,用于處理圖形數據。JanusGraph:一個可擴展的圖形數據庫,支持分布式存儲和計算。它提供了豐富的數據模型和查詢語言,適用于處理大規(guī)模圖形數據。應用場景:圖形數據庫適用于需要處理大量關聯數據的場景,如社交網絡、網絡拓撲、推薦系統(tǒng)等。本課件是可編輯的正常PPT課件01數據模型02存儲結構03查詢性能04擴展性NoSQL數據庫之間的比較本課件是可編輯的正常PPT課件01什么是NoSQL02鍵值對存儲數據庫03文檔存儲數據庫04列式存儲數據庫05圖形存儲數據庫小結本課件是可編輯的正常PPT課件簡述關系型數據庫與非關系型數據庫的區(qū)別。簡述NoSQL數據庫的特點。練習:本課件是可編輯的正常PPT課件謝謝!本課件是可編輯的正常PPT課件第二章
鍵值對存儲型數據庫Redis單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件認識Redis01Python與Redis客戶端02高級功能04項目實踐:python使用Redis實現分布式鎖05數據操作03目錄本課件是可編輯的正常PPT課件01認識Redis本課件是可編輯的正常PPT課件什么是RedisRedis支持多種類型的數據結構,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)、位圖(bitmaps)、超日志(hyperloglogs)和地理空間(geospatial)索引半徑查詢等。Redis通過提供豐富的數據結構和操作接口,使得它不僅可以作為數據庫使用,還可以用作緩存、消息中間件等。本課件是可編輯的正常PPT課件特點:1高性能、數據類型豐富、持久化、原子性、復制和高可用性、客戶端語言支持2用途:3緩存、消息隊列、計數器、排行榜、會話管理、實時分析4Redis的特點和用途本課件是可編輯的正常PPT課件安裝Redis本課件是可編輯的正常PPT課件02Python與Redis客戶端本課件是可編輯的正常PPT課件安裝Redis客戶端命令:pipinstallredis本課件是可編輯的正常PPT課件代碼如下:importredis導入Redis模塊本課件是可編輯的正常PPT課件r=redis.Redis(host='localhost',port=6379,db=0)也可以指定密碼創(chuàng)建,具體要更具Redis實際情況,代碼如下。r=redis.Redis(host='localhost',port=6379,db=0,password='your_password')創(chuàng)建Redis客戶端實例本課件是可編輯的正常PPT課件03數據操作本課件是可編輯的正常PPT課件設置鍵值對-set方法刪除鍵、批量刪除鍵-delete方法檢查鍵是否存在-exists方法批量設置多個鍵值對-mset方法01030204鍵值對操作本課件是可編輯的正常PPT課件存儲哈希表-hset方法獲取哈表中指定字段的值-hget命令同時獲取多個哈希表字段的值-hmget方法批量刪除哈希表字段-hdel方法獲取哈希表的所有字段和值-hgetall方法刪除哈希表-delete方法010203040506哈希表操作本課件是可編輯的正常PPT課件01添加元素到列表-lpush方法02獲取列表元素-lrange方法03獲取列表的長度-llen方法列表操作本課件是可編輯的正常PPT課件添加元素到集合-sadd方法01獲取集合中所有元素-smembers方法02檢查元素是否存在于集合中-sismember方法03刪除集合元素-srem方法04集合操作本課件是可編輯的正常PPT課件01添加成員-zadd方法02獲取有序集合中的成員-zrange方法03獲取成員的排名-zrank方法04獲取有序集合的長度-zcard方法05刪除成員-zrem方法有序集合操作本課件是可編輯的正常PPT課件發(fā)布/訂閱是一種消息通信模式:這種模式允許發(fā)送者發(fā)布消息,而不直接發(fā)送給特定的接收者。發(fā)布的消息被發(fā)送到“頻道”(channel,頻道可以理解為消息的傳遞通道),任何訂閱了該頻道的客戶端都可以接收到這些消息。publish方法用來發(fā)布消息,該方法需要提供兩個參數:頻道名稱(channel)和要發(fā)布的消息(message)。01例:發(fā)布消息“Hello,Redis!”,并訂閱。02發(fā)布和訂閱操作本課件是可編輯的正常PPT課件04高級功能本課件是可編輯的正常PPT課件02例:一次性完成設置鍵值對的值和獲取鍵值對的值。01在Redis-py中,通常使用pipeline來模擬事務的行為,雖然Redis的pipeline并不完全等同于傳統(tǒng)數據庫中的事務,但在很多場景下,它可以作為事務的替代方案。事務操作本課件是可編輯的正常PPT課件01setex方法:在添加鍵值對的同時設置過期時間。02ttl方法可以獲取鍵的剩余過期時間(以秒為單位)。過期時間和持久化本課件是可編輯的正常PPT課件分布式鎖分布式鎖是一種用于在分布式系統(tǒng)中控制對共享資源的訪問的技術。在分布式系統(tǒng)中,多個進程(可能運行在不同的機器上)需要訪問共享資源,如數據庫、緩存等,這時就需要一種機制來確保在同一時間只有一個進程能夠訪問這些資源,以避免數據不一致或沖突。隨著Redis的發(fā)展,更推薦使用set方法的nx(NotExists,不存在則設置)、px(設置鍵的過期時間,單位為毫秒)選項來更簡潔地實現分布式鎖。本課件是可編輯的正常PPT課件線型上下導航版本課件是可編輯的正常PPT課件項目實踐:python使用Redis實現分布式鎖要求:編寫類DistributedLock用于初始化分布式鎖實例,其中acquire方法用于獲取鎖,release方法用于釋放鎖本課件是可編輯的正常PPT課件ADBCRedis的數據操作事務操作Python操作Redis安裝Redis小結本課件是可編輯的正常PPT課件要求:獨立安裝Redis服務及Redis在Python中的包,完成下面的操作。設置“愛好”相關鍵值對,數據如下:hobby1:reading
,hobby2:swimming,hobby3:running,hobby4:drawing,hobby5:writing,hobby6:singing,hobby7:dancing,hobby8:cooking,hooby9:playingVideoGames,hobby10:surfing發(fā)布消息”myHobby”,并訂閱查看內容。練習:本課件是可編輯的正常PPT課件謝謝!本課件是可編輯的正常PPT課件第三章
列式存儲型數據庫HBase單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件認識HBase01HBase的數據類型02HBase的Shell操作04Python與HBase05HBase安裝部署03項目實踐:設計水費繳費明細表06目錄本課件是可編輯的正常PPT課件01認識HBase本課件是可編輯的正常PPT課件HBase的設計哲學是“NoSQL”,?即不使用傳統(tǒng)的關系型數據庫模型,?而是采用更靈活的數據存儲和檢索方式,?特別適合大數據和數據分析場景。?它允許數據橫向擴展,?通過增加更多的節(jié)點來提高性能和存儲容量,?而不必進行復雜的數據庫重構或遷移。高吞吐量和低延遲:HBase支持高吞吐量的數據讀寫操作,采用基于內存的數據訪問方式,實現低延遲的數據讀寫。高可用性和容錯性:采用分布式架構,支持數據的冗余備份和負載均衡,確保數據的高可用性和容錯性。優(yōu)勢和特點包括:靈活的數據模型:HBase支持結構化和非結構化的數據存儲,能夠處理稀疏矩陣模型的數據。?良好的伸縮性:HBase支持水平擴展,可以輕松應對大規(guī)模數據的存儲和處理需求。123456HBase概述本課件是可編輯的正常PPT課件車聯網:HBase適用于存儲車聯網中的行駛軌跡、車輛狀況、精準定位等重要數據,提供低成本、彈性、靈活可靠的能力。應用場景包括:廣告營銷:HBase可以存儲廣告營銷中的畫像特征、用戶事件、點擊流等重要數據,提供高并發(fā)和低延遲的能力,幫助構建實時競價和廣告定位投放系統(tǒng)。?實時數據分析:HBase支持實時數據的寫入和查詢,通過與Hadoop的實時計算組件如Storm的結合,可以實現實時數據分析和處理。?用戶畫像:HBase可以構建精準的用戶畫像,適用于市場決策、推薦系統(tǒng)等。大規(guī)模數據存儲:HBase適用于存儲PB級別的海量數據,支持數據的水平擴展和無限擴展。?應用場景本課件是可編輯的正常PPT課件02HBase的數據模型本課件是可編輯的正常PPT課件HBase數據存儲結構HBase數據模型主要由RowKey、ColumnFamily、ColumnQualifier和Timestamp四部分組成。本課件是可編輯的正常PPT課件HBase數據存儲概念本課件是可編輯的正常PPT課件HBase基本架構本課件是可編輯的正常PPT課件03HBase安裝部署本課件是可編輯的正常PPT課件01安裝java環(huán)境02安裝Hadoop03啟動Hadoop環(huán)境準備本課件是可編輯的正常PPT課件解壓、配置環(huán)境變量02配置相關XML文件03下載安裝文件01HBase安裝本課件是可編輯的正常PPT課件1啟動Hadoop2啟動HBase3訪問頁面4進入HBase啟動HBase本課件是可編輯的正常PPT課件04HBase的Shell操作本課件是可編輯的正常PPT課件查看數據庫版本:version查看數據庫中所有的表:list查看數據庫集群狀態(tài):status基本操作本課件是可編輯的正常PPT課件表的相關操作創(chuàng)建表語法:create'表名','列蔟名'...插入數據語法:put'表名','ROWKEY','列蔟名:列名','值'查看數據語法:get'表名','rowkey'更新數據語法:put更新數據(數據存在屬于更新操作,數據不存在屬于數據插入操作)刪除數據語法:delete'表名','rowkey','列蔟:列'刪除整行數據語法:deleteall'表名','rowkey'刪除表:要刪除某個表,必須要先使用disable關鍵字禁用表,然后使用drop刪除表。本課件是可編輯的正常PPT課件05Python與HBase本課件是可編輯的正常PPT課件01配置hbase-site.xml文件安裝happybase命令:pipinstallhappybase0203環(huán)境準備本課件是可編輯的正常PPT課件操作HBase啟動數據庫:先啟動Hadoop,再啟動HBase,最后啟動啟動thrift使用jps命令驗證已經啟動的服務python操作數據庫:鏈接HBase--Connection方法增加數據--put方法查指定行--row方法查看所有數據--scan方法刪除數據--delete方法關閉鏈接--close方法本課件是可編輯的正常PPT課件06項目實踐:設計水費繳費明細表本課件是可編輯的正常PPT課件要求:自來水公司,需要存儲大量的繳費明細數據。以下是繳費明細示例數據:需要將類似數據存入數據庫HBase中。數據中在下一次收繳水費時可以更新繳費時間、表示數、用量、合計金額、查表日期、最遲繳費日期,而用戶的基本信息不變。用戶ID3919700姓名茹喜蘭地址江西省新余市分宜縣鈐山鎮(zhèn)6單元251室性別男繳費時間2024/6/24表示數(本次)62.5表示數(上次)40.5用量(立方)22合計金額132查表日期2024/6/9最遲繳費日期2024/7/24本課件是可編輯的正常PPT課件安裝HBase數據模型Python操作HBase小結本課件是可編輯的正常PPT課件練習:要求:項目實踐中只添加了一位用戶的數據,請將以下數據存入water_rate表。用戶ID50370583018827209277471523563141181姓名荊秀榮無玉梅毋文芬己愛梅駱秀珍地址上海市上海市閘北區(qū)共和新路街道7單元192室陜西省咸陽市武功縣小村鎮(zhèn)2單元168室遼寧省本溪市南芬區(qū)南芬街道18單元97室甘肅省武威市民勤縣東壩鎮(zhèn)15單元69室河南省周口市太康縣馬頭鎮(zhèn)12單元280室性別女男男女女繳費時間2024/8/112024/4/302024/2/22024/1/272024/5/19表示數(本次)255.8406.2274.864.2477.7表示數(上次)237.8379.2252.846.2457.7用量(立方)1827221820合計金額108162132108120查表日期2024/7/272024/4/152024/1/182024/1/122024/5/4最遲繳費日期2024/9/102024/5/302024/3/42024/2/262024/6/18本課件是可編輯的正常PPT課件謝謝!本課件是可編輯的正常PPT課件第四章
圖形存儲數據庫Neo4j單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件認識Neo4j01Neo4j安裝部署02Python鏈接Neo4j04項目實踐:使用Python創(chuàng)建課程知識圖05Cypher操作03目錄本課件是可編輯的正常PPT課件01認識Neo4j本課件是可編輯的正常PPT課件設計理念:Neo4j的設計初衷是為了更好地同時也更高效地描述實體之間的關系。在現實生活中,每一個實體都與周圍的其他實體有著千絲萬縷的關系,這些關系里面所存儲的信息甚至要大于實體本身的屬性。01相關特性:基于圖的存儲模型、高性能的查詢語言、事務支持、可擴展性、實時性、靈活性、集成與兼容性、可視化與監(jiān)控02Neo4j簡介本課件是可編輯的正常PPT課件Neo4j簡介優(yōu)點:數據的插入、查詢操作很直觀,不用再考慮各個表之間的關系。提供的圖搜索和圖遍歷方法很方便,速度也是比較快的。更快的數據庫操作。當然,有一個前提條件,那就是數據量較大,在MySql中存儲的話需要許多表,并且表之間聯系較多(即有不少的操作需要join表)。缺點:當數據過大時插入速度可能會越來越慢。超大節(jié)點。當有一個節(jié)點的邊非常多時(常見于大V),有關這個節(jié)點的操作的速度將大大下降。提高數據庫速度的常用方法就是多分配內存,無法直接設置數據庫內存占用量,而是需要計算后為其”預留“內存本課件是可編輯的正常PPT課件Neo4j簡介應用場景適用于圖形一類數據。這是Neo4j與其他NoSQL數據庫的最顯著區(qū)別。例如:社會關系,公共交通網絡,地圖及網絡拓譜。Neo4j不適用場景:不適用記錄大量基于事件的數據(例如日志條目或傳感器數據);不適用對大規(guī)模分布式數據進行處理,類似于Hadoop;不適用二進制數據存儲;不適用適合于保存在關系型數據庫中的結構化數據。本課件是可編輯的正常PPT課件Neo4j簡介Neo4j與傳統(tǒng)數據庫的區(qū)別Ne04jRDBMS允許對數據的簡單且多樣的管理高度結構化的數據數據添加和定義靈活,不受數據類型和數量的限制,無需提前定義表格Schema需預定義,修改和添加數據結構和類型復雜,對數據有嚴格的限制常數時間的關系查詢操作關系查詢操作耗時提出全新的查詢語言cypher,查詢語句更加簡單查詢語句更為復雜,尤其涉及到join或union操作時本課件是可編輯的正常PPT課件數據結構Neo4j的數據模型包含Nodes、Labels、Relationship、Properties和Schema本課件是可編輯的正常PPT課件02Neo4j安裝部署本課件是可編輯的正常PPT課件環(huán)境準備下載安裝包/download-center/#community本課件是可編輯的正常PPT課件Neo4j安裝安裝步驟非常簡單,需要注意的是,在安裝過程中需要復制激活碼,粘貼到工具的“Softwarekey”本課件是可編輯的正常PPT課件Neo4j安裝安裝結束后,需要修改密碼,然后到瀏覽器中登錄即可。本課件是可編輯的正常PPT課件03Cypher操作本課件是可編輯的正常PPT課件創(chuàng)建數據CREATE命令用于創(chuàng)建節(jié)點,語法如下:#創(chuàng)建帶有標簽的節(jié)點CREATE(<node-name>:<label-name>)#創(chuàng)建帶有標簽、屬性的節(jié)點CREATE(<node-name>:<label-name>{<property-name>:<property-value>})return<node-name>#使用set創(chuàng)建CREATE(<node-name>:<label-name>)set<property-name>:<property-value>,<property-name>:<property-value>return<node-name>本課件是可編輯的正常PPT課件match命令功能:查詢已有數據,語法如下:match(<node-name>:<label-name>)return<node-name>.<property-name>merge命令功能:若節(jié)點存在,則等效于match命令;若節(jié)點不存在,則等效于create命令,語法如下:match(<node-name>:<label-name>)return<node-name>.<property-name>查詢數據本課件是可編輯的正常PPT課件12merge(節(jié)點變量1:標簽)-[關系變量:關系]-(節(jié)點變量2:標簽)merge創(chuàng)建關系create(節(jié)點變量1:標簽)-[關系變量:關系]->(節(jié)點變量2:標簽)Create創(chuàng)建關系創(chuàng)建關系本課件是可編輯的正常PPT課件where命令功能類似于SQL中的添加查詢條件,查詢到符合條件的數據后面還可以連接其他操作例如reture和delete,語法如下:match(節(jié)點變量1:標簽)-[關系變量:關系]-(節(jié)點變量2:標簽)where條件where命令本課件是可編輯的正常PPT課件010203040506刪除關系刪除需要使用delete關鍵字,同時需要配合查詢語句以及where條件,才能刪除符合條件的數據,語法如下:match(節(jié)點變量1:標簽)-[關系變量:關系]-(節(jié)點變量2:標簽)where條件delete關系變量刪除節(jié)點刪除節(jié)點與刪除關系類似,只是delete關鍵字后面加上節(jié)點變量名稱,語法如下:match(節(jié)點變量:標簽)where條件delete節(jié)點變量刪除關系和節(jié)點本課件是可編輯的正常PPT課件match(節(jié)點變量:標簽)where條件remove節(jié)點變量.屬性Remove關鍵字用于刪除屬性,同樣也需要配合查詢和where同時使用,語法如下:刪除屬性本課件是可編輯的正常PPT課件04Python鏈接Neo4j本課件是可編輯的正常PPT課件環(huán)境準備命令如下:pipinstallpy2neo本課件是可編輯的正常PPT課件準備好數據庫,下面打開python的編輯器,創(chuàng)建py文件。鏈接代碼如下:01frompy2neoimportGraph,Node,Relationship02#連接到Neo4j數據庫03db=Graph("bolt://localhost:7687",auth=("neo4j","123456ydc"),name="demo2")04鏈接Neo4j數據庫并簡單操作本課件是可編輯的正常PPT課件節(jié)點操作創(chuàng)建節(jié)點創(chuàng)建節(jié)點需要兩個步驟,先創(chuàng)建Node,然后執(zhí)行Create方法,語法如下:node_1=Node(*labels,**properties)db.create(node_1)創(chuàng)建關系創(chuàng)建關系需要使用Relationship方法,指定開始節(jié)點,關系,結束節(jié)點,基本語法如下:Relationship((start_node,type,end_node,**properties))本課件是可編輯的正常PPT課件節(jié)點操作刪除關系及節(jié)點帶關系的節(jié)點不能直接被刪除,但是可以直接刪除一個節(jié)點及與之相連的關系,需要run方法運行Neo4j指令代碼進行刪除。例:刪除HBase節(jié)點和關系。語句:db.run('match(n:Nosql{name:"HBase"})detachdeleten')查詢db的nodes屬性包含圖當中的所有節(jié)點信息,可以使用match方法來找到相應節(jié)點。語法如下:db.nodes.match(*labels,**properties)本課件是可編輯的正常PPT課件05項目實踐:使用Python創(chuàng)建課程知識圖本課件是可編輯的正常PPT課件需求:將本學期所學課程創(chuàng)建知識圖本課件是可編輯的正常PPT課件Neo4j安裝部署創(chuàng)建節(jié)點、關系where命令Python操作Neo4j數據庫01.02.03.04.小結本課件是可編輯的正常PPT課件練習創(chuàng)建物流信息圖本課件是可編輯的正常PPT課件謝謝!本課件是可編輯的正常PPT課件第五章
文檔存儲型數據庫MongoDB單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件在Linux系統(tǒng)下安裝、啟動06.在Windows環(huán)境下安裝、啟動05.MongoDB數據庫組織結構04.MongoDB應用03.MongoDB歷史02.MongoDB的簡介01.目錄CONTENTS07.基本命令本課件是可編輯的正常PPT課件01MongoDB的簡介本課件是可編輯的正常PPT課件MongoDB的簡介
MongoDB始于2007年,由DwightMerriman(梅里曼)、EliotHorowitz(霍洛維茨)和KevinRyan(凱文·瑞恩)——(DoubleClick雙擊的主理團隊)共同創(chuàng)立。
DoubleClick是一家互聯網廣告公司(現隸屬于Google),公司團隊開發(fā)并利用多種自定義數據存儲,來彌補現有數據庫的短板。雖然該企業(yè)每秒鐘服務400,000條廣告,但可擴展性和敏捷性仍時常制約著業(yè)務發(fā)展。團隊痛定思痛,潛心打造出一種數據庫,完美解決DoubleClick所面臨的問題。
MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。它支持的數據結構非常松散,是類似JSON的BSON(BinaryJSON)格式,因此可以存儲比較復雜的數據類型。MongoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。本課件是可編輯的正常PPT課件02MongoDB歷史本課件是可編輯的正常PPT課件MongoDB的歷史MongoDB的歷史可以追溯到2007年,最初MongoDB的前身是10gen公司,它起初是一個云計算平臺。然而,隨著時間的推移,10gen公司決定自己開發(fā)一個適合海量數據的數據庫。在2009年2月,MongoDB1.0正式發(fā)布,作為一個開源的數據庫項目,它提供了文檔模型、索引、復制等基本功能。此后,MongoDB不斷發(fā)展壯大,逐漸成為了流行的開源文檔式NoSQL數據庫。在隨后的幾年里,MongoDB陸續(xù)發(fā)布了多個版本,每個版本都帶來了新的特性和改進。例如,2010年發(fā)布的MongoDB2.0引入了自動分片的功能,實現了水平擴展和高可用性;2015年發(fā)布的MongoDB3.0則支持了WiredTiger存儲引擎和可插拔存儲引擎API等功能。進入2018年,MongoDB4.0發(fā)布,這個版本提供了針對副本集執(zhí)行多文檔事務的功能,進一步增強了其數據處理能力。到了2021年,MongoDB5.0發(fā)布,引入了時間序列集合,這可以有效地存儲一段時間內的測量序列。而在2022年,MongoDB6.0發(fā)布,支持對加密數據進行豐富的查詢,為數據安全提供了更強大的保障。隨著技術的不斷進步和應用場景的不斷擴展,MongoDB也在持續(xù)發(fā)展和完善,為開發(fā)者提供更加高效、可靠的數據存儲和查詢解決方案。本課件是可編輯的正常PPT課件03MongoDB應用本課件是可編輯的正常PPT課件應用場景和特點1.應用場景MongoDB的應用場景十分廣泛。它非常適合存儲和查詢大量非結構化數據,如日志、用戶行為數據等,以下是常見的應用場景:(1)社交場景(2)游戲場景(3)物流場景(4)物聯網場景(5)視頻直播2.共同特點在這些應用場景中,數據操作方面的共同特點是:(1)數據量非常大。(2)讀寫操作頻繁。(3)數據本身價值密度較低對事務性要求不高。(4)對事務性要求較低。本課件是可編輯的正常PPT課件01需要處理大量非結構化或半結構化數據02對實時性要求高03需要水平擴展04需要高可用性05開發(fā)者熟悉或偏好使用什么時候選擇MongoDB本課件是可編輯的正常PPT課件04MongoDB數據庫組織結構本課件是可編輯的正常PPT課件01030405022.數據結構數據結構是研究組成數據集合的中數據之間關系的學科。1.數據數據指能夠輸入到計算機中并被識別處理的信息的集合。4.數據管理系統(tǒng)數據管理系統(tǒng)是數據管理軟件,用于維護管理數據庫。5.數據庫系統(tǒng)數據庫系統(tǒng)由數據庫、數據庫管理系統(tǒng)、開發(fā)工具組成的工具集合。3.數據庫數據庫是按照數據結構,存儲管理數據的倉庫。是在數據管理系統(tǒng)軟件管理和控制下創(chuàng)建在一定介質上的數據集合。數據庫的基本概念本課件是可編輯的正常PPT課件022.集合(collection)集合是一組文檔的集合,類似于關系型數據庫中的表。MongoDB中的集合不需要在創(chuàng)建時預先定義結構,即集合是無模式的,可以容納不同類型和結構的文檔。033.數據庫(Database)MongoDB的實例可以包含多個獨立的數據庫,每個數據庫都有自己的集合和權限。數據庫存儲在一個文件系統(tǒng)中,不同的數據庫會放在不同的文件中。1.文檔(document)MongoDB中的數據存儲在文檔中,這些文檔是一組鍵值(key-value)對,類似于JSON對象。字段值可以包含其他文檔、數組以及文檔數組,這種結構使得MongoDB能夠非常靈活地表示各種復雜的數據類型。01MongoDB的三個概念本課件是可編輯的正常PPT課件組織結構本課件是可編輯的正常PPT課件數據類型Null
、Boolean、IntegerDouble、String、Object、Array、BinaryData、Date、ObjectID、RegularExpression、JavaScript、SymbolTimestamp、Min/MaxKeys本課件是可編輯的正常PPT課件05在Windows環(huán)境下安裝、啟動本課件是可編輯的正常PPT課件Windows版本:windows10專業(yè)版1下載地址:/try/download/community2下載本課件是可編輯的正常PPT課件安裝logo勾選復選框,同意許可協(xié)議本課件是可編輯的正常PPT課件安裝點擊Complete,可以修改data和log的目錄本課件是可編輯的正常PPT課件安裝勾選上Compass,把GUI軟件同時安裝本課件是可編輯的正常PPT課件安裝等待進度條走完,安裝完成本課件是可編輯的正常PPT課件打開數據庫compass鏈接數據庫本課件是可編輯的正常PPT課件打開服務本課件是可編輯的正常PPT課件06在Linux系統(tǒng)下安裝、啟動本課件是可編輯的正常PPT課件先查看一下當前Linux系統(tǒng),命令:lsb_release-dc根據當前的Codename來修改下方對應的命令,如果Codename是jammy,就修改為jammy,如果是focal就修改為focal。命令:echo"deb[arch=amd64,arm64]MongoDB官網網址/apt/ubuntujammy/mongodb-org/6.0multiverse"|sudotee/etc/apt/sources.list.d/mongodb-org-6.0.list創(chuàng)建列表文件本課件是可編輯的正常PPT課件從最新的軟件包列表中獲取最新的軟件包sudoapt-getupdate更新軟件包列表本課件是可編輯的正常PPT課件安裝MongoDB命令如下:sudoapt-getinstall-ymongodb-org本課件是可編輯的正常PPT課件啟動MongoDB213啟動MongoDB也需要使用命令如右。sudosystemctlstartmongod驗證啟動是否成功,命令如右。4sudosystemctlstatusmongod本課件是可編輯的正常PPT課件07基本命令本課件是可編輯的正常PPT課件查看數據庫showdbsshowdatabases系統(tǒng)自帶的數據庫:admin:存放用戶和權限local:存放本地化數據config:存儲分片信息本課件是可編輯的正常PPT課件選擇數據庫數據庫的命名規(guī)范:可以使用utf-8字符不能含有空格'.'、'/'、'\'、'\0'長度不能超過64字節(jié)4不能和系統(tǒng)自帶的數據庫重名習慣使用小寫字母,表達數據庫的含義,也就是說命名必須要有意義use數據庫名本課件是可編輯的正常PPT課件刪除數據庫準備工作usestudb.class.insert({'name':'Lily','age':17})db.dropDatabase()查看當前所處數據庫db本課件是可編輯的正常PPT課件集合的特點?集合是無模式的,也就是說一個集合里的文檔可以是各式各樣的,非常自由。集合是什么?集合就是一組文檔。同一個應用的數據我們建議存放在同一個數據庫中,但是一個應用可能有很多個對象。集合就類似關系型數據庫中的表.集合本課件是可編輯的正常PPT課件集合集合的命名規(guī)則:合法的utf-8字符串不能有'\0'不能以system.開頭。是系統(tǒng)保留前綴不能和關鍵字重復命名要有意義子集合子集合就是集合下的另外一個集合,可以讓我們更好的組織存放數據,慣例是使用‘.’字符分開命名來表示子集合。本課件是可編輯的正常PPT課件查看集合showcollectionsshowtables本課件是可編輯的正常PPT課件創(chuàng)建集合db.createCollection(‘集合名’)本課件是可編輯的正常PPT課件創(chuàng)建集合當向一個集合中插入數據的時候,如果這個集合不存在則自動創(chuàng)建db.collection.insert(...)```e.g.如果class不存在則創(chuàng)建這個集合并插入數據db.class.insert({"name":"Lucy","age":18})```本課件是可編輯的正常PPT課件刪除集合logodb.集合名.drop()e.g.刪除集合c1db.c1.drop()本課件是可編輯的正常PPT課件集合重命名db.c1.renameCollection("mycollection")db.collection.renameCollection("newname")e.g.將c1重新命名為mycollection本課件是可編輯的正常PPT課件固定集合MongoDB固定集合(CappedCollections)是性能出色且有著固定大小的集合,對于大小固定,我們可以想象他就像一個環(huán)形隊列,如果空間不足,最早的文檔就會被刪除,為新的文檔騰出空間。特點:?(1)對固定集合插入速度及快?(2)按照插入順序的查詢輸出速度及快?(3)能夠在插入最新數據時,淘汰最早的數據?(4)固定集合文檔按照插入順序存儲,默認情況下查詢全部就是插入順序返回的?(5)可以插入及更新,但是更新不能超過collection的大小,否則更新失敗?(6)不允許刪除,但是可以調用drop()刪除集合中的行?(7)在32位的機器上一個cappedcollection的最大值約為482.5MB,64位機器上只受系統(tǒng)文件大小限制本課件是可編輯的正常PPT課件固定集合使用:
日志處理?臨時緩存(QQ的發(fā)送離線文件)一般來說,固定集合適用于任何想要自動淘汰過期文檔的場景,沒有太多的操作限制。創(chuàng)建固定集合db.createCollection(collection,{capped:true,size:10000,max:1000})>capped:true創(chuàng)建固定集合>size:10000固定集合大小>max:1000最多多少條文檔e.g.創(chuàng)建一個固定集合 db.createCollection('logs',{capped:true,size:10000,max:3})本課件是可編輯的正常PPT課件固定集合向集合中插入三條數據: ```db.logs.insert({logconfig:001,date:Date()})db.logs.insert({logconfig:002,date:Date()})db.logs.insert({logconfig:003,date:Date()})```查看一下db.logs.find()再插入一條數據```db.logs.insert({logconfig:004,date:Date()})```第一條數據會被頂掉本課件是可編輯的正常PPT課件小結:數據庫(查看、創(chuàng)建、選擇、刪除)--查看:showdatabases--創(chuàng)建:有單獨的語法,但是忽略隱式創(chuàng)建--選擇:use數據庫名--刪除:1.通過use選中數據庫2.通過db.dropDatabase()刪除數據庫集合(查看、創(chuàng)建、刪除--查看:showcollections--創(chuàng)建:db.createColletion(‘集合名’)db.collection.insert(...)--刪除:db.集合名.drop()--重命名:db.collection.renameCollection("newname")本課件是可編輯的正常PPT課件練一練1.切換使用數據庫的關鍵字()A.createB.dropC.useD.update2.查看數據庫的關鍵是()A.showB.findC.IndexD.insert3.在集合中給集合重命名的關鍵字是()A.NameB.renameCollectionC.collectionNameD.dropCollection4.刪除數據庫,使用關鍵字()A.dropB.deleteC.removeD.dropDatabase5.查看數據庫showdatabases命令,還可以寫成()A.createB.dbsC.showdbsD.dropdbs本課件是可編輯的正常PPT課件謝謝!本課件是可編輯的正常PPT課件第六章增刪改查單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件文檔01增加數據02修改數據04刪除數據05查詢數據03NULL類型06目錄時間類型07項目實踐08本課件是可編輯的正常PPT課件01文檔本課件是可編輯的正常PPT課件文檔的鍵和值MongoDB中數據的組織形式===》文檔什么是文檔:?文檔是MongoDB中數據的基本單元。我們前面已經見過MongoDB數據存儲格式為BSON。鍵值對按照BSON格式結合起來存入MongoDB就是一個文檔,文檔是對數據的一種描述。鍵:即文檔的域命名規(guī)則:?1.utf-8格式字符串?2.不能有'\0'?3.一個文檔中的鍵是不能重復的*文檔中的鍵值對是有序的*MongoDB嚴格區(qū)分大小寫
值:即文檔存儲數據,也就是mongodb支持的數據類型bson===》json===》JavaScripy(主要是做前端的--jQuery、vue,慢慢滲透到后端--node.js)本課件是可編輯的正常PPT課件文檔的id5f59a44b2922bf2748ebe98c01234567891011時間戳機器PID計數器"_id":ObjectId("5f59a44b2922bf2748ebe98c")ObjectId1如果在插入文檔時沒有指定_id域,則系統(tǒng)會自動添加該域作為主鍵。?
值是一個ObjectId類型的數據?
24位16進制數===》保證所有的_id值的唯一性?8位文檔創(chuàng)建時間6位機器ID4位進程ID6位計數器_id:2本課件是可編輯的正常PPT課件集合中的文檔集合中的文檔集合中的文檔不一定域的個數相同集合中的文檔不一定有相同的域(關系型數據庫:表決定字段)(非關系型數據庫,文檔決定域)集合設計原則?1.集合中的文檔盡可能描述同一類內容,有更多相同的域?2.同一類數據信息,不要過多分散集合存放?3.集合中文檔的層次不要包含太多本課件是可編輯的正常PPT課件02增加數據本課件是可編輯的正常PPT課件1語法:db.集合名.insertOne()2注意:集合存在時直接增加數據,集合不存在時隱式創(chuàng)建增加一條數據本課件是可編輯的正常PPT課件除了系統(tǒng)自動生成的ObjectId,還可以根據業(yè)務需求自定義_id的生成方式。只需給插入的JSON數據增加_id鍵即可覆蓋(但是實際操作中不推薦),語法如下。db.c1.insertOne({_id:1,uname:"webopenfather",age:18})自定義_id值本課件是可編輯的正常PPT課件插入多條數據使用insertMany(),在()中傳遞數組,數組中寫一個JSON數據即可。語法:db.集合名.insertMany()0201插入多條記錄本課件是可編輯的正常PPT課件03查詢數據本課件是可編輯的正常PPT課件基礎語法:db.集合名.find(條件,[查詢的列])1條件的格式:2查詢所有數據用{}或者不寫。3查詢age=6的數據,可以寫成:{age:6}4既要age=6又要性別=男,可以寫成:{age:6,sex:”男”}5查詢的列(可選參數)的格式:6不寫參數表示查詢全部列(字段)7{age:1}表示只顯示age列(字段/域)8{age:0}表示除了age列其他字段都顯示9查詢本課件是可編輯的正常PPT課件查詢中的算數運算符運算符作用$gt大于$gte大于等于$lt小于$lte小于等于$ne不等于$inin$ninnotin本課件是可編輯的正常PPT課件查詢中的邏輯運算符$and、$or、$not、$nor。本課件是可編輯的正常PPT課件$size表示按照指定size的值進行查找。$all表示查找成績數組中同時包含多項數據的文檔。$slice表示取數組的部分進行顯示,在find中聲明。數組的下標操作,可以通過域名“.”下標的方式具體的操作數組的某一項。按數值查找-使用算數運算符中表示比較的運算符文檔中的數組本課件是可編輯的正常PPT課件$mod$exists$type其他query查詢本課件是可編輯的正常PPT課件010203distinct()pretty()count()常用函數本課件是可編輯的正常PPT課件04修改數據本課件是可編輯的正常PPT課件Adb.集合名.update(條件,新數據,[是否新增,是否修改多條])B是否新增:指條件匹配不到數據則插入(true是插入,false否不插入(默認))C是否修改多條:指將匹配成功的數據都修改(true是,false否(默認))基礎語法本課件是可編輯的正常PPT課件修改器修改器作用$inc遞增$rename重命名列$set修改列值$unset刪除列本課件是可編輯的正常PPT課件數組修改器$push功能:用于向數組末尾添加一個或多個元素。如果指定的key已經存在,則直接在數組末尾添加元素;如果不存在,則會創(chuàng)建一個新的數組。$pull功能:從數組中刪除所有匹配指定值的元素。$pullAll功能:從數組中刪除符合條件的多項。$each功能:對多個值進行逐一操作,通常與‘addToSet或$push`一起使用,用于向數組中添加多個元素。$position功能:指定插入位置,用于與“push”結合使用,以指定新元素在數組中的位置。本課件是可編輯的正常PPT課件05刪除數據本課件是可編輯的正常PPT課件語法:db.集合名.deleteOne(條件,[是否刪除一條])01注意:是否刪除一條true是,false否(默認)刪除多條需要使用deleteMany()02刪除數據本課件是可編輯的正常PPT課件06時間類型本課件是可編輯的正常PPT課件newDate()newDate():使用
newDate()
構造函數可以創(chuàng)建一個表示當前日期和時間的
Date
對象。本課件是可編輯的正常PPT課件0504020301生成當前時間如果不加參數則生成當前時間。指定時間ISODate()可生成指定日期的數據。指定時間格式參數如下:“2018-01-0112:12:12”、“2018010112:12:12”、“20180101”。ISODate()本課件是可編輯的正常PPT課件Date()Date():用于獲取計算機時間生成時間格式字符串。本課件是可編輯的正常PPT課件valueOf()valueOf()它返回該日期對象的時間戳,表示即該日期自1970年1月1日00:00:00UTC以來的毫秒數。這個時間戳是一個簡單的數值,不包含任何日期或時間的格式化信息,只是從特定起點到該日期對象所表示時間的毫秒數。本課件是可編輯的正常PPT課件07Null類型本課件是可編輯的正常PPT課件Null類型某個域存在卻沒有值可以設置為null,它是一個特殊的值,表示字段不存在值或者字段的值被顯式設置為null。這與字段不存在(即該字段在文檔中根本沒有被定義)是不同的。本課件是可編輯的正常PPT課件08項目實踐:增刪改查綜合練習本課件是可編輯的正常PPT課件要求創(chuàng)建數據庫test。創(chuàng)建名為"students"的集合。向集合中插入文檔。查詢集合中的文檔。更新集合中的文檔。刪除集合中的文檔本課件是可編輯的正常PPT課件小結增Createdb.集合名.insert(JSON數據)刪Deletedb.集合名.delete(條件,[是否刪除一條true是false否(默認)])改Updatedb.集合名.update(條件,新數據,[是否新增,是否修改多條])升級語法db.集合名.update(條件,{修改器:{鍵:值}})查Readdb.集合名.find(條件,[查詢的列])本課件是可編輯的正常PPT課件練習使用之前的grade數據庫1.將小紅年齡改為八歲,興趣愛好改為跳舞畫畫db.grade.update({name:'小紅'},{$set:{age:8,hobby:['dance','draw']}})2.追加小明興趣愛好,唱歌db.grade.update({name:'小明'}{$push:{hobby:'sing'}})3.追加小王興趣愛好吹牛、打籃球db.grade.update({name:'小王'},{$pushAll:{hobby:['吹牛','basketball']}})4.小李興趣多了跑步唱歌,但是要確保不和之前的重復db.grade.update({name:'小李'},{$addToSet:{hobby:{$each:['running','sing']}}})5.將該班所有學生的年齡加一db.grade.update({},{#inc:{age:1}},false,true)本課件是可編輯的正常PPT課件6.刪除小明的sex屬性db.grade.update({name:"小明"},{$unset:{sex:''}})7.刪除小李興趣中的第一項db.grade.update({name:"小李"},{$pop:{hobby:-1}})8.刪除小紅興趣中的畫畫和唱歌db.grade.update({name:"小紅"},{$pullAll:{hobby:['draw','sing']}})9.為小紅增加一個域,為score:{english:93,chinese:92,match:78}db.grade.update({name:"小紅"},{$set:{score:{english:93,chinese:92,match:78}}})10.給小紅花數學成績加5分db.grade.update({name:"小紅"},{$inc:{'score.math':5}})11.小明的第一愛好改為computerdb.grade.update({name:"小明"},{'hobby.0':'computer'})本課件是可編輯的正常PPT課件謝謝!本課件是可編輯的正常PPT課件第七章索引單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件數據庫中的索引01索引的優(yōu)缺點02其他索引04項目實踐05索引語法03目錄本課件是可編輯的正常PPT課件01數據庫中的索引本課件是可編輯的正常PPT課件數據庫中的索引索引是一種特殊的數據結構,它以易于遍歷的形式存儲了數據的部分內容(如一個特定的字段或一組字段值)。索引會按一定規(guī)則對存儲值進行排序,并且索引的存儲位置在內存中,因此從索引中檢索數據會非??臁H绻麤]有索引,MongoDB必須掃描集合中的每一個文檔,這種掃描的效率非常低,尤其是在數據量較大時。。本課件是可編輯的正常PPT課件02索引的優(yōu)缺點本課件是可編輯的正常PPT課件索引的優(yōu)點主要體現在以下方面:提高檢索速度優(yōu)化分組和排序使用優(yōu)化隱藏器然而,索引也存在一些缺點:創(chuàng)建和維護成本占用物理空間降低數據維護速度可能不適用所有情況索引的優(yōu)缺點本課件是可編輯的正常PPT課件03索引語法本課件是可編輯的正常PPT課件語法:db.集合名.createIndex(待創(chuàng)建索引的字段,[額外選項])參數:待創(chuàng)建索引的字段:{鍵:1,…,鍵:-1}。說明:1表示升序,-1表示降序例如{age:1}表示創(chuàng)建age索引并按照升序的方式存儲。額外選項:設置索引的名稱或者唯一索引等等。02030401創(chuàng)建索引本課件是可編輯的正常PPT課件213刪除全部索引:db.集合名.dropIndexes()刪除指定索引:db.集合名.dropIndex(索引名)查看索引語法:db.集合名.getIndexes()。刪除索引本課件是可編輯的正常PPT課件04其他索引本課件是可編輯的正常PPT課件復合索引是對多個字段進行索引的索引類型。它允許按照多個字段的順序進行排序和查詢,這對于那些經常需要同時根據多個字段進行查詢和排序的場景非常有用。創(chuàng)建復合索引時,需要指定一個包含多個字段的索引鍵,以及每個字段的排序方向(升序或降序)。語法如下:db.集合名.createIndex({鍵1:方式,鍵2:方式})12復合索引本課件是可編輯的正常PPT課件唯一索引用于確保索引字段的值是唯一的,即不存儲重復值。如果嘗試插入具有重復唯一索引字段值的文檔,MongoDB將返回一個錯誤。因此,在創(chuàng)建唯一索引之前,應確保數據集中不存在重復的值,或者準備好處理插入重復值時的錯誤。語法如下:db.集合名.createIndex(待添加索引的字段,{unique:true})唯一索引本課件是可編輯的正常PPT課件稀疏索引主要特點是只包含那些具有索引字段的文檔的條目,即使索引字段包含一個空值。簡單來說,稀疏索引會跳過那些索引鍵不存在的文檔,因此它并非包含所有的文檔,只針對有指定域的文檔創(chuàng)建索引表,如果某個文檔沒有該域,則不會插入到索引表中。語法如下:db.集合名.ensureIndex(待添加索引的字段,{sparse:true})12稀疏索引本課件是可編輯的正常PPT課件利用explain命令,可以很好地觀察系統(tǒng)如何使用索引來加快檢索,同時可以做針對性的性能優(yōu)化,語法如下:db.集合名.find().explain('executionStats')分析索引本課件是可編輯的正常PPT課件05項目實踐:使用bookshop數據練習索引操作本課件是可編輯的正常PPT課件查找具有給定書名的圖書的標題、出版商、出版年份和價格。查找具有給定作者姓名的書籍的標題、出版商、出版年份和價格。使用給定的關鍵字查找圖書的標題、出版商、出版年份和價格。查找給定年份的書籍的標題、出版商、出版年份和價格。03040201查詢要求:本課件是可編輯的正常PPT課件小結索引操作ensureIndex():創(chuàng)建索引dropIndex():刪除索引dropIndexes():刪除所有索引getIndexes():查看索引約束索引:索引為了快速查找,不是所有的情況都適合創(chuàng)建索引綜上:數據量比較大時更適合創(chuàng)建索引,數據量較小時沒有必要付出索引代價頻繁進行查找操作而不是更新刪除插入操作,此時更適合使用索引本課件是可編輯的正常PPT課件給數據中name添加索引命名為sx。02查看所有索引。03根據grade數據庫中class集合的數據,完成下面操作:01刪除sx索引。04練習本課件是可編輯的正常PPT課件謝謝!本課件是可編輯的正常PPT課件第八章排序與分頁單擊此處添加副標題演講者:本課件是可編輯的正常PPT課件排序01聚合查詢02分頁實踐03項目實踐04目錄本課件是可編輯的正常PPT課件01排序本課件是可編輯的正常PPT課件sort()方法:鍵表示要排序的域或字段;在對應的值中1為升序,-1為降序。復合排序:復合排序特別適用于需要同時考慮多個字段以決定文檔順序的場景。例如,想要首先根據一個字段升序排序,然后在該字段值相同的情況下根據另一個字段降序排序,或者當第一排序項相同的時候,按照第二排序項排序,以此類推。sort()排序本課件是可編輯的正常PPT課件limit(n)功能:顯示查找結果的前n條數據,limit方法用于限制查詢結果返回的記錄條數。它接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。skip(n)功能:跳過前n條顯示后面的內容。skip方法則用于跳過指定數量的數據記錄。同樣,它也接受一個數字參數,表示跳過的記錄數。參數值為0,表示不跳過任何文檔。綜合使用:語法:db.集合名.find().sort().skip(數字).limit(數字)Limit與Skip方法本課件是可編輯的正常PPT課件02分頁實踐本課件是可編輯的正常PPT課件分頁的計算頁數起始終止跳過數第1頁120第2頁342第3頁564第4頁786第5頁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026屆福建省福州市第十一中學化學高二第一學期期末學業(yè)質量監(jiān)測試題含答案
- 2026屆江蘇省南京十三中、中華中學高三化學第一學期期中監(jiān)測試題含解析
- 心肺復蘇治療技術
- 消化內科常用藥品及注意事項
- 心內科一科一品護理服務匯報
- 藥品采購年度工作總結匯報
- 小學語文問句講解
- 湘雅重癥醫(yī)學科進修匯報
- 胎盤部位滋養(yǎng)細胞腫瘤診療要點
- 壓瘡護理新技術
- 腫瘤惡液質營養(yǎng)治療指南
- 美術實訓室功能設計方案
- 護理優(yōu)勢專科匯報
- 放射科新技術介紹
- 銀行職工反詐工作總結
- 設備安裝管理培訓課件
- 老年人轉運照護-輪椅運轉
- 國家電網公司供電企業(yè)勞動定員標準
- 7-聊城東制梁場80t龍門吊安拆安全專項方案-八局一-新建鄭州至濟南鐵路(山東段)工程ZJTLSG-2標段
- 中興 ZXNOE 9700 系統(tǒng)介紹
- GB/T 21475-2008造船指示燈顏色
評論
0/150
提交評論