NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1、2章 認識NoSQL;鍵值對存儲型數(shù)據(jù)庫Redis_第1頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1、2章 認識NoSQL;鍵值對存儲型數(shù)據(jù)庫Redis_第2頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1、2章 認識NoSQL;鍵值對存儲型數(shù)據(jù)庫Redis_第3頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1、2章 認識NoSQL;鍵值對存儲型數(shù)據(jù)庫Redis_第4頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1、2章 認識NoSQL;鍵值對存儲型數(shù)據(jù)庫Redis_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一章認識NoSQL單擊此處添加副標題演講者:人工智能時代下的數(shù)據(jù)01不僅僅是SQL02NoSQL基礎(chǔ)理論04NoSQL數(shù)據(jù)庫分類05關(guān)系數(shù)據(jù)庫與非關(guān)系數(shù)據(jù)庫03目錄在人工智能時代,數(shù)據(jù)被視為新的“石油”,是推動AI技術(shù)發(fā)展的核心動力。數(shù)據(jù)的數(shù)量、種類、速度和質(zhì)量都直接影響著AI模型的性能和準確性。大數(shù)據(jù)(BigData)指的是那些數(shù)據(jù)量巨大、類型多樣、生成速度快且具有高價值潛力的數(shù)據(jù)集合。大數(shù)據(jù)的四大特征——數(shù)據(jù)量(Volume)、數(shù)據(jù)速度(Velocity)、數(shù)據(jù)種類(Variety)和數(shù)據(jù)真實性(Veracity),使得傳統(tǒng)的數(shù)據(jù)處理方法難以應(yīng)對,因此催生了大數(shù)據(jù)技術(shù)的誕生和發(fā)展。1大數(shù)據(jù)技術(shù)包括數(shù)據(jù)收集、存儲、處理和分析,旨在從大量的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)中提取有價值的信息和知識。這些技術(shù)不僅提升了數(shù)據(jù)處理的效率,還使得企業(yè)能夠更精準地理解市場和客戶需求,優(yōu)化決策過程,提高競爭力。2人工智能時代下的數(shù)據(jù)01不僅僅是SQLNoSQL,全稱“NotOnlySQL”,泛指非關(guān)系型的數(shù)據(jù)庫。種類繁多,包括鍵值存儲數(shù)據(jù)庫、列存儲數(shù)據(jù)庫、文檔存儲數(shù)據(jù)庫和圖形數(shù)據(jù)庫等壹貳什么是NoSQL0102NoSQL數(shù)據(jù)庫起源于20世紀90年代,隨著互聯(lián)網(wǎng)Web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在處理超大規(guī)模和高并發(fā)的網(wǎng)站時顯得有些費力。這些網(wǎng)站需要處理海量的用戶數(shù)據(jù)和高并發(fā)的訪問請求,而傳統(tǒng)的SQL數(shù)據(jù)庫在擴展性和性能上無法滿足這些需求。因此,非關(guān)系型數(shù)據(jù)庫逐漸得到了關(guān)注和發(fā)展。NoSQL數(shù)據(jù)庫的出現(xiàn),為處理大規(guī)模、高并發(fā)、高可擴展性的數(shù)據(jù)提供了更好的解決方案。這些數(shù)據(jù)庫通過去除關(guān)系型數(shù)據(jù)庫的關(guān)系型特性,簡化了數(shù)據(jù)庫的結(jié)構(gòu),提高了數(shù)據(jù)處理的速度和效率。同時,NoSQL數(shù)據(jù)庫還具備高可用性和易于擴展的特點,能夠確保數(shù)據(jù)庫在故障時仍然能夠提供服務(wù),并且在數(shù)據(jù)量增長時仍然能夠高效地處理請求。NoSQL起源關(guān)系型數(shù)據(jù)庫采用關(guān)系模型來組織數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫(二維表)Oracle(甲骨文)、DB2(IDM)、SQLServer(微軟)、MySQL、Sqlite(小型數(shù)據(jù)庫,唯一一個python不需要安裝第三方包就可以就進行操作的數(shù)據(jù)庫,多用于嵌入式的一些開發(fā))優(yōu)點:?容易理解,邏輯類似常見的表格?使用方便,都使用sql語句進行操作,sql語句是非常成熟的?一致性高,冗余低,完整度高?技術(shù)成熟,可以使用外部的鏈接等復(fù)雜操作02關(guān)系數(shù)據(jù)庫與非關(guān)系數(shù)據(jù)庫高安全性支持事務(wù)強大的查詢能力靈活的數(shù)據(jù)庫設(shè)計特點數(shù)據(jù)擴展性受限靈活性不足并發(fā)性能問題SQL語言限制成本較高缺點壹貳關(guān)系型數(shù)據(jù)庫1.NoSQL的優(yōu)點NoSQL數(shù)據(jù)庫的優(yōu)點主要體現(xiàn)在以下幾個方面:靈活性高擴展性高性能2.NoSQL的缺點數(shù)據(jù)一致性問題查詢能力限制缺乏標準化非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)存儲方式不同擴展方式不同對事務(wù)性的支持不同關(guān)系數(shù)據(jù)庫與非關(guān)系數(shù)據(jù)庫的比較03NoSQL基礎(chǔ)理論01040203CAP定理是分布式計算中的一個重要理論,它指出一個分布式系統(tǒng)在設(shè)計時不能同時滿足以下三個特性:一致性(Consistency):在分布式系統(tǒng)中的所有節(jié)點,同一時刻的數(shù)據(jù)是一致的。當(dāng)系統(tǒng)更新數(shù)據(jù)時,所有節(jié)點都能看到最新的數(shù)據(jù)值。可用性(Availability):每個請求都能得到非錯誤的響應(yīng)(即,不存在超時或拒絕服務(wù)的情況),但不保證返回的是最新寫入的數(shù)據(jù)。分區(qū)容忍性(Partitiontolerance):在系統(tǒng)中任意信息的丟失或失敗發(fā)生時,系統(tǒng)仍能夠繼續(xù)運行并滿足一致性和可用性的要求。由于網(wǎng)絡(luò)分區(qū)是分布式系統(tǒng)無法避免的,因此分區(qū)容忍性通常被認為是分布式系統(tǒng)的基本要求。CAP定理BASE理論是對CAP定理中犧牲強一致性后的一種實踐原則,用于指導(dǎo)設(shè)計可擴展的分布式系統(tǒng)。BASE是以下三個術(shù)語的縮寫:基本可用(BasicallyAvailable):系統(tǒng)保證核心可用,但允許在部分情況下降低可用性。例如,在系統(tǒng)出現(xiàn)分區(qū)故障時,可能犧牲部分功能的可用性來確保系統(tǒng)的整體運行。軟狀態(tài)(Softstate):允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),即數(shù)據(jù)的變化不是即時的,系統(tǒng)可以有一段時間的異步處理過程。這與ACID中的原子性和持久性不同,后者要求數(shù)據(jù)狀態(tài)在任何時刻都是一致的。最終一致性(Eventuallyconsistent):系統(tǒng)能夠保證在沒有新的更新操作的情況下,最終所有的數(shù)據(jù)副本都將是一致的。這允許系統(tǒng)在一段時間內(nèi)存在數(shù)據(jù)不一致的情況,但最終會達到一致狀態(tài)。BASE理論最終一致性是CAP定理和BASE理論中的一個核心概念,它指的是在分布式系統(tǒng)中,當(dāng)沒有新的更新操作時,系統(tǒng)能夠保證所有的數(shù)據(jù)副本最終會達到一致的狀態(tài)。這種一致性模型是相對于強一致性而言的,強一致性要求在任何時刻,系統(tǒng)的所有節(jié)點都保持數(shù)據(jù)的一致性。在最終一致性模型中,系統(tǒng)允許在數(shù)據(jù)更新后的一段時間內(nèi),不同的數(shù)據(jù)副本之間存在不一致的情況。這種不一致是暫時的,并且隨著時間的推移,系統(tǒng)會通過某種機制(如數(shù)據(jù)復(fù)制、沖突解決等)來確保所有副本最終都達到一致狀態(tài)。最終一致性模型為分布式系統(tǒng)提供了更高的靈活性和可擴展性,特別是在處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問時。然而,它也要求開發(fā)者在設(shè)計和實現(xiàn)系統(tǒng)時,需要仔細考慮數(shù)據(jù)一致性的需求和業(yè)務(wù)邏輯的要求,以確保系統(tǒng)能夠滿足用戶的需求。最終一致性04NoSQL數(shù)據(jù)庫分類鍵值對存儲數(shù)據(jù)庫定義與特點:鍵值對存儲數(shù)據(jù)庫是一種使用鍵值對(Key-ValuePair)來存儲數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)。在這種數(shù)據(jù)庫中,每個數(shù)據(jù)項都由一個唯一的鍵(Key)和一個對應(yīng)的值(Value)組成。鍵值對數(shù)據(jù)庫通常具有高性能、高并發(fā)、簡單易用等特點,適用于需要快速讀寫和查詢的場景,如緩存、會話管理等。典型代表:Redis:一個開源的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間件。Redis支持多種類型的數(shù)據(jù)結(jié)構(gòu),如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)等。Memcached:一個高性能的分布式內(nèi)存對象緩存系統(tǒng),通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫的次數(shù),從而提高動態(tài)Web應(yīng)用的速度。應(yīng)用場景:鍵值對數(shù)據(jù)庫適用于需要快速訪問和更新數(shù)據(jù),且數(shù)據(jù)結(jié)構(gòu)相對簡單的場景,如緩存、會話共享、排行榜等。文檔存儲數(shù)據(jù)庫定義與特點:文檔存儲數(shù)據(jù)庫是一種非關(guān)系型數(shù)據(jù)庫,它以文檔的形式存儲數(shù)據(jù),每個文檔都是一個自包含的數(shù)據(jù)單元,可以包含多種類型的數(shù)據(jù)。文檔數(shù)據(jù)庫通常具有動態(tài)模式、易擴展性、復(fù)雜數(shù)據(jù)類型支持等特點,適用于存儲結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)。典型代表:MongoDB:一個基于分布式文件存儲的數(shù)據(jù)庫,由C++語言編寫。它為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式。CouchDB:一個開源的、面向文檔的數(shù)據(jù)庫管理系統(tǒng),它使用JSON作為數(shù)據(jù)存儲格式,并提供了一個RESTfulHTTPAPI用于與數(shù)據(jù)庫進行交互。CouchDB支持多版本并發(fā)控制(MVCC),可以實現(xiàn)數(shù)據(jù)的版本控制和沖突解決。應(yīng)用場景:文檔數(shù)據(jù)庫適用于需要處理大量結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)的場景,如內(nèi)容管理系統(tǒng)(CMS)、電子商務(wù)平臺、移動應(yīng)用等。列式存儲數(shù)據(jù)庫是一種將數(shù)據(jù)按列進行組織和存儲的數(shù)據(jù)庫系統(tǒng)。與傳統(tǒng)的行式數(shù)據(jù)庫相比,列式數(shù)據(jù)庫在數(shù)據(jù)存儲和查詢效率方面具有顯著優(yōu)勢,特別適用于大量讀取、少量更新和查詢的場景。列式數(shù)據(jù)庫通常具有高效的數(shù)據(jù)壓縮、快速的讀取速度和良好的可擴展性等特點。列式數(shù)據(jù)庫適用于需要處理大量數(shù)據(jù)、進行復(fù)雜查詢和數(shù)據(jù)分析的場景,如數(shù)據(jù)倉庫、商業(yè)智能、在線分析等。定義與特點:應(yīng)用場景:典型代表:Cassandra:一個開源的、分布式的、高可用的列式存儲數(shù)據(jù)庫系統(tǒng)。它支持跨多個數(shù)據(jù)中心的數(shù)據(jù)復(fù)制和容錯,適用于需要高可用性和可擴展性的應(yīng)用場景。HBase:一個基于Google的BigTable模型的開源、非關(guān)系型、分布式數(shù)據(jù)庫。它是一個高可靠性、高性能、面向列的分布式存儲系統(tǒng),用于存儲結(jié)構(gòu)化數(shù)據(jù)。列式存儲數(shù)據(jù)庫圖形存儲數(shù)據(jù)庫定義與特點:圖形存儲數(shù)據(jù)庫是一種以圖形形式存儲數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)。它以節(jié)點、邊和屬性的形式表示和存儲數(shù)據(jù),其中節(jié)點表示實體,邊表示實體之間的關(guān)系,屬性則是節(jié)點和邊的詳細信息。圖形數(shù)據(jù)庫具有高度連接性、靈活性、高性能和直觀性等特點,適用于處理大量互相關(guān)聯(lián)的數(shù)據(jù)。典型代表:Neo4j:一個高性能的、基于Java的圖形數(shù)據(jù)庫系統(tǒng)。它支持復(fù)雜的查詢語言Cypher,并提供了豐富的圖形算法和工具集,用于處理圖形數(shù)據(jù)。JanusGraph:一個可擴展的圖形數(shù)據(jù)庫,支持分布式存儲和計算。它提供了豐富的數(shù)據(jù)模型和查詢語言,適用于處理大規(guī)模圖形數(shù)據(jù)。應(yīng)用場景:圖形數(shù)據(jù)庫適用于需要處理大量關(guān)聯(lián)數(shù)據(jù)的場景,如社交網(wǎng)絡(luò)、網(wǎng)絡(luò)拓撲、推薦系統(tǒng)等。01數(shù)據(jù)模型02存儲結(jié)構(gòu)03查詢性能04擴展性NoSQL數(shù)據(jù)庫之間的比較01什么是NoSQL02鍵值對存儲數(shù)據(jù)庫03文檔存儲數(shù)據(jù)庫04列式存儲數(shù)據(jù)庫05圖形存儲數(shù)據(jù)庫小結(jié)簡述關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的區(qū)別。簡述NoSQL數(shù)據(jù)庫的特點。練習(xí):謝謝!第二章

鍵值對存儲型數(shù)據(jù)庫Redis單擊此處添加副標題演講者:認識Redis01Python與Redis客戶端02高級功能04項目實踐:python使用Redis實現(xiàn)分布式鎖05數(shù)據(jù)操作03目錄01認識Redis什么是RedisRedis支持多種類型的數(shù)據(jù)結(jié)構(gòu),如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)、位圖(bitmaps)、超日志(hyperloglogs)和地理空間(geospatial)索引半徑查詢等。Redis通過提供豐富的數(shù)據(jù)結(jié)構(gòu)和操作接口,使得它不僅可以作為數(shù)據(jù)庫使用,還可以用作緩存、消息中間件等。特點:1高性能、數(shù)據(jù)類型豐富、持久化、原子性、復(fù)制和高可用性、客戶端語言支持2用途:3緩存、消息隊列、計數(shù)器、排行榜、會話管理、實時分析4Redis的特點和用途安裝Redis02Python與Redis客戶端安裝Redis客戶端命令:pipinstallredis代碼如下:importredis導(dǎo)入Redis模塊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客戶端實例03數(shù)據(jù)操作設(shè)置鍵值對-set方法刪除鍵、批量刪除鍵-delete方法檢查鍵是否存在-exists方法批量設(shè)置多個鍵值對-mset方法01030204鍵值對操作存儲哈希表-hset方法獲取哈表中指定字段的值-hget命令同時獲取多個哈希表字段的值-hmget方法批量刪除哈希表字段-hdel方法獲取哈希表的所有字段和值-hgetall方法刪除哈希表-delete方法010203040506哈希表操作01添加元素到列表-lpush方法02獲取列表元素-lrange方法03獲取列表的長度-llen方法列表操作添加元素到集合-sadd方法01獲取集合中所有元素-smembers方法02檢查元素是否存在于集合中-sismember方法03刪除集合元素-srem方法04集合操作01添加成員-zadd方法02獲取有序集合中的成員-zrange方法03獲取成員的排名-zrank方法04獲取有序集合的長度-zcard方法05刪除成員-zrem方法有序集合操作發(fā)布/訂閱是一種消息通信模式:這種模式允許發(fā)送者發(fā)布消息,而不直接發(fā)送給特定的接收者。發(fā)布的消息被發(fā)送到“頻道”(channel,頻道可以理解為消息的傳遞通道),任何訂閱了該頻道的客戶端都可以接收到這些消息。publish方法用來發(fā)布消息,該方法需要提供兩個參數(shù):頻道名稱(channel)和要發(fā)布的消息(message)。01例:發(fā)布消息“Hello,Redis!”,并訂閱。02發(fā)布和訂閱操作04高級功能02例:一次性完成設(shè)置鍵值對的值和獲取鍵值對的值。01在Redis-py中,通常使用pipeline來模擬事務(wù)的行為,雖然Redis的pipeline并不完全等同于傳統(tǒng)數(shù)據(jù)庫中的事務(wù),但在很多場景下,它可以作為事務(wù)的替代方案。事務(wù)操作01setex方法:在添加鍵值對的同時設(shè)置過期時間。02ttl方法可以獲取鍵的剩余過期時間(以秒為單位)。過期時間和持

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論