NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1-6章 認識NoSQL - 增刪改查_第1頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1-6章 認識NoSQL - 增刪改查_第2頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1-6章 認識NoSQL - 增刪改查_第3頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1-6章 認識NoSQL - 增刪改查_第4頁
NoSQL數(shù)據(jù)庫應(yīng)用與實踐 課件 第1-6章 認識NoSQL - 增刪改查_第5頁
已閱讀5頁,還剩178頁未讀 繼續(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ù)成熟,可以使用外部的鏈接等復雜操作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ù)是一致的。當系統(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定理中犧牲強一致性后的一種實踐原則,用于指導設(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)中,當沒有新的更新操作時,系統(tǒng)能夠保證所有的數(shù)據(jù)副本最終會達到一致的狀態(tài)。這種一致性模型是相對于強一致性而言的,強一致性要求在任何時刻,系統(tǒng)的所有節(jié)點都保持數(shù)據(jù)的一致性。在最終一致性模型中,系統(tǒng)允許在數(shù)據(jù)更新后的一段時間內(nèi),不同的數(shù)據(jù)副本之間存在不一致的情況。這種不一致是暫時的,并且隨著時間的推移,系統(tǒng)會通過某種機制(如數(shù)據(jù)復制、沖突解決等)來確保所有副本最終都達到一致狀態(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)模式、易擴展性、復雜數(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ù)庫當中功能最豐富,最像關(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ù)、進行復雜查詢和數(shù)據(jù)分析的場景,如數(shù)據(jù)倉庫、商業(yè)智能、在線分析等。定義與特點:應(yīng)用場景:典型代表:Cassandra:一個開源的、分布式的、高可用的列式存儲數(shù)據(jù)庫系統(tǒng)。它支持跨多個數(shù)據(jù)中心的數(shù)據(jù)復制和容錯,適用于需要高可用性和可擴展性的應(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)。它支持復雜的查詢語言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ù)庫的特點。練習:謝謝!第二章

鍵值對存儲型數(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ù)類型豐富、持久化、原子性、復制和高可用性、客戶端語言支持2用途:3緩存、消息隊列、計數(shù)器、排行榜、會話管理、實時分析4Redis的特點和用途安裝Redis02Python與Redis客戶端安裝Redis客戶端命令:pipinstallredis代碼如下:importredis導入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方法可以獲取鍵的剩余過期時間(以秒為單位)。過期時間和持久化分布式鎖分布式鎖是一種用于在分布式系統(tǒng)中控制對共享資源的訪問的技術(shù)。在分布式系統(tǒng)中,多個進程(可能運行在不同的機器上)需要訪問共享資源,如數(shù)據(jù)庫、緩存等,這時就需要一種機制來確保在同一時間只有一個進程能夠訪問這些資源,以避免數(shù)據(jù)不一致或沖突。隨著Redis的發(fā)展,更推薦使用set方法的nx(NotExists,不存在則設(shè)置)、px(設(shè)置鍵的過期時間,單位為毫秒)選項來更簡潔地實現(xiàn)分布式鎖。線型上下導航版項目實踐:python使用Redis實現(xiàn)分布式鎖要求:編寫類DistributedLock用于初始化分布式鎖實例,其中acquire方法用于獲取鎖,release方法用于釋放鎖ADBCRedis的數(shù)據(jù)操作事務(wù)操作Python操作Redis安裝Redis小結(jié)要求:獨立安裝Redis服務(wù)及Redis在Python中的包,完成下面的操作。設(shè)置“愛好”相關(guān)鍵值對,數(shù)據(jù)如下:hobby1:reading

,hobby2:swimming,hobby3:running,hobby4:drawing,hobby5:writing,hobby6:singing,hobby7:dancing,hobby8:cooking,hooby9:playingVideoGames,hobby10:surfing發(fā)布消息”myHobby”,并訂閱查看內(nèi)容。練習:謝謝!第三章

列式存儲型數(shù)據(jù)庫HBase單擊此處添加副標題演講者:認識HBase01HBase的數(shù)據(jù)類型02HBase的Shell操作04Python與HBase05HBase安裝部署03項目實踐:設(shè)計水費繳費明細表06目錄01認識HBaseHBase的設(shè)計哲學是“NoSQL”,?即不使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫模型,?而是采用更靈活的數(shù)據(jù)存儲和檢索方式,?特別適合大數(shù)據(jù)和數(shù)據(jù)分析場景。?它允許數(shù)據(jù)橫向擴展,?通過增加更多的節(jié)點來提高性能和存儲容量,?而不必進行復雜的數(shù)據(jù)庫重構(gòu)或遷移。高吞吐量和低延遲:HBase支持高吞吐量的數(shù)據(jù)讀寫操作,采用基于內(nèi)存的數(shù)據(jù)訪問方式,實現(xiàn)低延遲的數(shù)據(jù)讀寫。高可用性和容錯性:采用分布式架構(gòu),支持數(shù)據(jù)的冗余備份和負載均衡,確保數(shù)據(jù)的高可用性和容錯性。優(yōu)勢和特點包括:靈活的數(shù)據(jù)模型:HBase支持結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)存儲,能夠處理稀疏矩陣模型的數(shù)據(jù)。?良好的伸縮性:HBase支持水平擴展,可以輕松應(yīng)對大規(guī)模數(shù)據(jù)的存儲和處理需求。123456HBase概述車聯(lián)網(wǎng):HBase適用于存儲車聯(lián)網(wǎng)中的行駛軌跡、車輛狀況、精準定位等重要數(shù)據(jù),提供低成本、彈性、靈活可靠的能力。應(yīng)用場景包括:廣告營銷:HBase可以存儲廣告營銷中的畫像特征、用戶事件、點擊流等重要數(shù)據(jù),提供高并發(fā)和低延遲的能力,幫助構(gòu)建實時競價和廣告定位投放系統(tǒng)。?實時數(shù)據(jù)分析:HBase支持實時數(shù)據(jù)的寫入和查詢,通過與Hadoop的實時計算組件如Storm的結(jié)合,可以實現(xiàn)實時數(shù)據(jù)分析和處理。?用戶畫像:HBase可以構(gòu)建精準的用戶畫像,適用于市場決策、推薦系統(tǒng)等。大規(guī)模數(shù)據(jù)存儲:HBase適用于存儲PB級別的海量數(shù)據(jù),支持數(shù)據(jù)的水平擴展和無限擴展。?應(yīng)用場景02HBase的數(shù)據(jù)模型HBase數(shù)據(jù)存儲結(jié)構(gòu)HBase數(shù)據(jù)模型主要由RowKey、ColumnFamily、ColumnQualifier和Timestamp四部分組成。HBase數(shù)據(jù)存儲概念HBase基本架構(gòu)03HBase安裝部署01安裝java環(huán)境02安裝Hadoop03啟動Hadoop環(huán)境準備解壓、配置環(huán)境變量02配置相關(guān)XML文件03下載安裝文件01HBase安裝1啟動Hadoop2啟動HBase3訪問頁面4進入HBase啟動HBase04HBase的Shell操作查看數(shù)據(jù)庫版本:version查看數(shù)據(jù)庫中所有的表:list查看數(shù)據(jù)庫集群狀態(tài):status基本操作表的相關(guān)操作創(chuàng)建表語法:create'表名','列蔟名'...插入數(shù)據(jù)語法:put'表名','ROWKEY','列蔟名:列名','值'查看數(shù)據(jù)語法:get'表名','rowkey'更新數(shù)據(jù)語法:put更新數(shù)據(jù)(數(shù)據(jù)存在屬于更新操作,數(shù)據(jù)不存在屬于數(shù)據(jù)插入操作)刪除數(shù)據(jù)語法:delete'表名','rowkey','列蔟:列'刪除整行數(shù)據(jù)語法:deleteall'表名','rowkey'刪除表:要刪除某個表,必須要先使用disable關(guān)鍵字禁用表,然后使用drop刪除表。05Python與HBase01配置hbase-site.xml文件安裝happybase命令:pipinstallhappybase0203環(huán)境準備操作HBase啟動數(shù)據(jù)庫:先啟動Hadoop,再啟動HBase,最后啟動啟動thrift使用jps命令驗證已經(jīng)啟動的服務(wù)python操作數(shù)據(jù)庫:鏈接HBase--Connection方法增加數(shù)據(jù)--put方法查指定行--row方法查看所有數(shù)據(jù)--scan方法刪除數(shù)據(jù)--delete方法關(guān)閉鏈接--close方法06項目實踐:設(shè)計水費繳費明細表要求:自來水公司,需要存儲大量的繳費明細數(shù)據(jù)。以下是繳費明細示例數(shù)據(jù):需要將類似數(shù)據(jù)存入數(shù)據(jù)庫HBase中。數(shù)據(jù)中在下一次收繳水費時可以更新繳費時間、表示數(shù)、用量、合計金額、查表日期、最遲繳費日期,而用戶的基本信息不變。用戶ID3919700姓名茹喜蘭地址江西省新余市分宜縣鈐山鎮(zhèn)6單元251室性別男繳費時間2024/6/24表示數(shù)(本次)62.5表示數(shù)(上次)40.5用量(立方)22合計金額132查表日期2024/6/9最遲繳費日期2024/7/24安裝HBase數(shù)據(jù)模型Python操作HBase小結(jié)練習:要求:項目實踐中只添加了一位用戶的數(shù)據(jù),請將以下數(shù)據(jù)存入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表示數(shù)(本次)255.8406.2274.864.2477.7表示數(shù)(上次)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謝謝!第四章

圖形存儲數(shù)據(jù)庫Neo4j單擊此處添加副標題演講者:認識Neo4j01Neo4j安裝部署02Python鏈接Neo4j04項目實踐:使用Python創(chuàng)建課程知識圖05Cypher操作03目錄01認識Neo4j設(shè)計理念:Neo4j的設(shè)計初衷是為了更好地同時也更高效地描述實體之間的關(guān)系。在現(xiàn)實生活中,每一個實體都與周圍的其他實體有著千絲萬縷的關(guān)系,這些關(guān)系里面所存儲的信息甚至要大于實體本身的屬性。01相關(guān)特性:基于圖的存儲模型、高性能的查詢語言、事務(wù)支持、可擴展性、實時性、靈活性、集成與兼容性、可視化與監(jiān)控02Neo4j簡介Neo4j簡介優(yōu)點:數(shù)據(jù)的插入、查詢操作很直觀,不用再考慮各個表之間的關(guān)系。提供的圖搜索和圖遍歷方法很方便,速度也是比較快的。更快的數(shù)據(jù)庫操作。當然,有一個前提條件,那就是數(shù)據(jù)量較大,在MySql中存儲的話需要許多表,并且表之間聯(lián)系較多(即有不少的操作需要join表)。缺點:當數(shù)據(jù)過大時插入速度可能會越來越慢。超大節(jié)點。當有一個節(jié)點的邊非常多時(常見于大V),有關(guān)這個節(jié)點的操作的速度將大大下降。提高數(shù)據(jù)庫速度的常用方法就是多分配內(nèi)存,無法直接設(shè)置數(shù)據(jù)庫內(nèi)存占用量,而是需要計算后為其”預留“內(nèi)存Neo4j簡介應(yīng)用場景適用于圖形一類數(shù)據(jù)。這是Neo4j與其他NoSQL數(shù)據(jù)庫的最顯著區(qū)別。例如:社會關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜。Neo4j不適用場景:不適用記錄大量基于事件的數(shù)據(jù)(例如日志條目或傳感器數(shù)據(jù));不適用對大規(guī)模分布式數(shù)據(jù)進行處理,類似于Hadoop;不適用二進制數(shù)據(jù)存儲;不適用適合于保存在關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)。Neo4j簡介Neo4j與傳統(tǒng)數(shù)據(jù)庫的區(qū)別Ne04jRDBMS允許對數(shù)據(jù)的簡單且多樣的管理高度結(jié)構(gòu)化的數(shù)據(jù)數(shù)據(jù)添加和定義靈活,不受數(shù)據(jù)類型和數(shù)量的限制,無需提前定義表格Schema需預定義,修改和添加數(shù)據(jù)結(jié)構(gòu)和類型復雜,對數(shù)據(jù)有嚴格的限制常數(shù)時間的關(guān)系查詢操作關(guān)系查詢操作耗時提出全新的查詢語言cypher,查詢語句更加簡單查詢語句更為復雜,尤其涉及到j(luò)oin或union操作時數(shù)據(jù)結(jié)構(gòu)Neo4j的數(shù)據(jù)模型包含Nodes、Labels、Relationship、Properties和Schema02Neo4j安裝部署環(huán)境準備下載安裝包/download-center/#communityNeo4j安裝安裝步驟非常簡單,需要注意的是,在安裝過程中需要復制激活碼,粘貼到工具的“Softwarekey”Neo4j安裝安裝結(jié)束后,需要修改密碼,然后到瀏覽器中登錄即可。03Cypher操作創(chuàng)建數(shù)據(jù)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>match命令功能:查詢已有數(shù)據(jù),語法如下: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>查詢數(shù)據(jù)12merge(節(jié)點變量1:標簽)-[關(guān)系變量:關(guān)系]-(節(jié)點變量2:標簽)merge創(chuàng)建關(guān)系create(節(jié)點變量1:標簽)-[關(guān)系變量:關(guān)系]->(節(jié)點變量2:標簽)Create創(chuàng)建關(guān)系創(chuàng)建關(guān)系where命令功能類似于SQL中的添加查詢條件,查詢到符合條件的數(shù)據(jù)后面還可以連接其他操作例如reture和delete,語法如下:match(節(jié)點變量1:標簽)-[關(guān)系變量:關(guān)系]-(節(jié)點變量2:標簽)where條件where命令010203040506刪除關(guān)系刪除需要使用delete關(guān)鍵字,同時需要配合查詢語句以及where條件,才能刪除符合條件的數(shù)據(jù),語法如下:match(節(jié)點變量1:標簽)-[關(guān)系變量:關(guān)系]-(節(jié)點變量2:標簽)where條件delete關(guān)系變量刪除節(jié)點刪除節(jié)點與刪除關(guān)系類似,只是delete關(guān)鍵字后面加上節(jié)點變量名稱,語法如下:match(節(jié)點變量:標簽)where條件delete節(jié)點變量刪除關(guān)系和節(jié)點match(節(jié)點變量:標簽)where條件remove節(jié)點變量.屬性Remove關(guān)鍵字用于刪除屬性,同樣也需要配合查詢和where同時使用,語法如下:刪除屬性04Python鏈接Neo4j環(huán)境準備命令如下:pipinstallpy2neo準備好數(shù)據(jù)庫,下面打開python的編輯器,創(chuàng)建py文件。鏈接代碼如下:01frompy2neoimportGraph,Node,Relationship02#連接到Neo4j數(shù)據(jù)庫03db=Graph("bolt://localhost:7687",auth=("neo4j","123456ydc"),name="demo2")04鏈接Neo4j數(shù)據(jù)庫并簡單操作節(jié)點操作創(chuàng)建節(jié)點創(chuàng)建節(jié)點需要兩個步驟,先創(chuàng)建Node,然后執(zhí)行Create方法,語法如下:node_1=Node(*labels,**properties)db.create(node_1)創(chuàng)建關(guān)系創(chuàng)建關(guān)系需要使用Relationship方法,指定開始節(jié)點,關(guān)系,結(jié)束節(jié)點,基本語法如下:Relationship((start_node,type,end_node,**properties))節(jié)點操作刪除關(guān)系及節(jié)點帶關(guān)系的節(jié)點不能直接被刪除,但是可以直接刪除一個節(jié)點及與之相連的關(guān)系,需要run方法運行Neo4j指令代碼進行刪除。例:刪除HBase節(jié)點和關(guān)系。語句:db.run('match(n:Nosql{name:"HBase"})detachdeleten')查詢db的nodes屬性包含圖當中的所有節(jié)點信息,可以使用match方法來找到相應(yīng)節(jié)點。語法如下:db.nodes.match(*labels,**properties)05項目實踐:使用Python創(chuàng)建課程知識圖需求:將本學期所學課程創(chuàng)建知識圖Neo4j安裝部署創(chuàng)建節(jié)點、關(guān)系where命令Python操作Neo4j數(shù)據(jù)庫01.02.03.04.小結(jié)練習創(chuàng)建物流信息圖謝謝!第五章

文檔存儲型數(shù)據(jù)庫MongoDB單擊此處添加副標題演講者:在Linux系統(tǒng)下安裝、啟動06.在Windows環(huán)境下安裝、啟動05.MongoDB數(shù)據(jù)庫組織結(jié)構(gòu)04.MongoDB應(yīng)用03.MongoDB歷史02.MongoDB的簡介01.目錄CONTENTS07.基本命令01MongoDB的簡介MongoDB的簡介

MongoDB始于2007年,由DwightMerriman(梅里曼)、EliotHorowitz(霍洛維茨)和KevinRyan(凱文·瑞恩)——(DoubleClick雙擊的主理團隊)共同創(chuàng)立。

DoubleClick是一家互聯(lián)網(wǎng)廣告公司(現(xiàn)隸屬于Google),公司團隊開發(fā)并利用多種自定義數(shù)據(jù)存儲,來彌補現(xiàn)有數(shù)據(jù)庫的短板。雖然該企業(yè)每秒鐘服務(wù)400,000條廣告,但可擴展性和敏捷性仍時常制約著業(yè)務(wù)發(fā)展。團隊痛定思痛,潛心打造出一種數(shù)據(jù)庫,完美解決DoubleClick所面臨的問題。

MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似JSON的BSON(BinaryJSON)格式,因此可以存儲比較復雜的數(shù)據(jù)類型。MongoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。02MongoDB歷史MongoDB的歷史MongoDB的歷史可以追溯到2007年,最初MongoDB的前身是10gen公司,它起初是一個云計算平臺。然而,隨著時間的推移,10gen公司決定自己開發(fā)一個適合海量數(shù)據(jù)的數(shù)據(jù)庫。在2009年2月,MongoDB1.0正式發(fā)布,作為一個開源的數(shù)據(jù)庫項目,它提供了文檔模型、索引、復制等基本功能。此后,MongoDB不斷發(fā)展壯大,逐漸成為了流行的開源文檔式NoSQL數(shù)據(jù)庫。在隨后的幾年里,MongoDB陸續(xù)發(fā)布了多個版本,每個版本都帶來了新的特性和改進。例如,2010年發(fā)布的MongoDB2.0引入了自動分片的功能,實現(xiàn)了水平擴展和高可用性;2015年發(fā)布的MongoDB3.0則支持了WiredTiger存儲引擎和可插拔存儲引擎API等功能。進入2018年,MongoDB4.0發(fā)布,這個版本提供了針對副本集執(zhí)行多文檔事務(wù)的功能,進一步增強了其數(shù)據(jù)處理能力。到了2021年,MongoDB5.0發(fā)布,引入了時間序列集合,這可以有效地存儲一段時間內(nèi)的測量序列。而在2022年,MongoDB6.0發(fā)布,支持對加密數(shù)據(jù)進行豐富的查詢,為數(shù)據(jù)安全提供了更強大的保障。隨著技術(shù)的不斷進步和應(yīng)用場景的不斷擴展,MongoDB也在持續(xù)發(fā)展和完善,為開發(fā)者提供更加高效、可靠的數(shù)據(jù)存儲和查詢解決方案。03MongoDB應(yīng)用應(yīng)用場景和特點1.應(yīng)用場景MongoDB的應(yīng)用場景十分廣泛。它非常適合存儲和查詢大量非結(jié)構(gòu)化數(shù)據(jù),如日志、用戶行為數(shù)據(jù)等,以下是常見的應(yīng)用場景:(1)社交場景(2)游戲場景(3)物流場景(4)物聯(lián)網(wǎng)場景(5)視頻直播2.共同特點在這些應(yīng)用場景中,數(shù)據(jù)操作方面的共同特點是:(1)數(shù)據(jù)量非常大。(2)讀寫操作頻繁。(3)數(shù)據(jù)本身價值密度較低對事務(wù)性要求不高。(4)對事務(wù)性要求較低。01需要處理大量非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)02對實時性要求高03需要水平擴展04需要高可用性05開發(fā)者熟悉或偏好使用什么時候選擇MongoDB04MongoDB數(shù)據(jù)庫組織結(jié)構(gòu)01030405022.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是研究組成數(shù)據(jù)集合的中數(shù)據(jù)之間關(guān)系的學科。1.數(shù)據(jù)數(shù)據(jù)指能夠輸入到計算機中并被識別處理的信息的集合。4.數(shù)據(jù)管理系統(tǒng)數(shù)據(jù)管理系統(tǒng)是數(shù)據(jù)管理軟件,用于維護管理數(shù)據(jù)庫。5.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、開發(fā)工具組成的工具集合。3.數(shù)據(jù)庫數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu),存儲管理數(shù)據(jù)的倉庫。是在數(shù)據(jù)管理系統(tǒng)軟件管理和控制下創(chuàng)建在一定介質(zhì)上的數(shù)據(jù)集合。數(shù)據(jù)庫的基本概念022.集合(collection)集合是一組文檔的集合,類似于關(guān)系型數(shù)據(jù)庫中的表。MongoDB中的集合不需要在創(chuàng)建時預先定義結(jié)構(gòu),即集合是無模式的,可以容納不同類型和結(jié)構(gòu)的文檔。033.數(shù)據(jù)庫(Database)MongoDB的實例可以包含多個獨立的數(shù)據(jù)庫,每個數(shù)據(jù)庫都有自己的集合和權(quán)限。數(shù)據(jù)庫存儲在一個文件系統(tǒng)中,不同的數(shù)據(jù)庫會放在不同的文件中。1.文檔(document)MongoDB中的數(shù)據(jù)存儲在文檔中,這些文檔是一組鍵值(key-value)對,類似于JSON對象。字段值可以包含其他文檔、數(shù)組以及文檔數(shù)組,這種結(jié)構(gòu)使得MongoDB能夠非常靈活地表示各種復雜的數(shù)據(jù)類型。01MongoDB的三個概念組織結(jié)構(gòu)數(shù)據(jù)類型Null

、Boolean、IntegerDouble、String、Object、Array、BinaryData、Date、ObjectID、RegularExpression、JavaScript、SymbolTimestamp、Min/MaxKeys05在Windows環(huán)境下安裝、啟動Windows版本:windows10專業(yè)版1下載地址:/try/download/community2下載安裝logo勾選復選框,同意許可協(xié)議安裝點擊Complete,可以修改data和log的目錄安裝勾選上Compass,把GUI軟件同時安裝安裝等待進度條走完,安裝完成打開數(shù)據(jù)庫compass鏈接數(shù)據(jù)庫打開服務(wù)06在Linux系統(tǒng)下安裝、啟動先查看一下當前Linux系統(tǒng),命令:lsb_release-dc根據(jù)當前的Codename來修改下方對應(yīng)的命令,如果Codename是jammy,就修改為jammy,如果是focal就修改為focal。命令:echo"deb[arch=amd64,arm64]MongoDB官網(wǎng)網(wǎng)址/apt/ubuntujammy/mongodb-org/6.0multiverse"|sudotee/etc/apt/sources.list.d/mongodb-org-6.0.list創(chuàng)建列表文件從最新的軟件包列表中獲取最新的軟件包sudoapt-getupdate更新軟件包列表安裝MongoDB命令如下:sudoapt-getinstall-ymongodb-org啟動MongoDB213啟動MongoDB也需要使用命令如右。sudosystemctlstartmongod驗證啟動是否成功,命令如右。4sudosystemctlstatusmongod07基本命令查看數(shù)據(jù)庫showdbsshowdatabases系統(tǒng)自帶的數(shù)據(jù)庫:admin:存放用戶和權(quán)限local:存放本地化數(shù)據(jù)config:存儲分片信息選擇數(shù)據(jù)庫數(shù)據(jù)庫的命名規(guī)范:可以使用utf-8字符不能含有空格'.'、'/'、'\'、'\0'長度不能超過64字節(jié)4不能和系統(tǒng)自帶的數(shù)據(jù)庫重名習慣使用小寫字母,表達數(shù)據(jù)庫的含義,也就是說命名必須要有意義use數(shù)據(jù)庫名刪除數(shù)據(jù)庫準備工作usestudb.class.insert({'name':'Lily','age':17})db.dropDatabase()查看當前所處數(shù)據(jù)庫db集合的特點?集合是無模式的,也就是說一個集合里的文檔可以是各式各樣的,非常自由。集合是什么?集合就是一組文檔。同一個應(yīng)用的數(shù)據(jù)我們建議存放在同一個數(shù)據(jù)庫中,但是一個應(yīng)用可能有很多個對象。集合就類似關(guān)系型數(shù)據(jù)庫中的表.集合集合集合的命名規(guī)則:合法的utf-8字符串不能有'\0'不能以system.開頭。是系統(tǒng)保留前綴不能和關(guān)鍵字重復命名要有意義子集合子集合就是集合下的另外一個集合,可以讓我們更好的組織存放數(shù)據(jù),慣例是使用‘.’字符分開命名來表示子集合。查看集合showcollectionsshowtables創(chuàng)建集合db.createCollection(‘集合名’)創(chuàng)建集合當向一個集合中插入數(shù)據(jù)的時候,如果這個集合不存在則自動創(chuàng)建db.collection.insert(...)```e.g.如果class不存在則創(chuàng)建這個集合并插入數(shù)據(jù)db.class.insert({"name":"Lucy","age":18})```刪除集合logodb.集合名.drop()e.g.刪除集合c1db.c1.drop()集合重命名db.c1.renameCollection("mycollection")db.collection.renameCollection("newname")e.g.將c1重新命名為mycollection固定集合MongoDB固定集合(CappedCollections)是性能出色且有著固定大小的集合,對于大小固定,我們可以想象他就像一個環(huán)形隊列,如果空間不足,最早的文檔就會被刪除,為新的文檔騰出空間。特點:?(1)對固定集合插入速度及快?(2)按照插入順序的查詢輸出速度及快?(3)能夠在插入最新數(shù)據(jù)時,淘汰最早的數(shù)據(jù)?(4)固定集合文檔按照插入順序存儲,默認情況下查詢?nèi)烤褪遣迦腠樞蚍祷氐?(5)可以插入及更新,但是更新不能超過collection的大小,否則更新失敗?(6)不允許刪除,但是可以調(diào)用drop()刪除集合中的行?(7)在32位的機器上一個cappedcollection的最大值約為482.5MB,64位機器上只受系統(tǒng)文件大小限制固定集合使用:

日志處理?臨時緩存(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})固定集合向集合中插入三條數(shù)據(jù): ```db.logs.insert({logconfig:001,date:Date()})db.logs.insert({logconfig:002,date:Date()})db.logs.insert({logconfig:003,date:Date()})```查看一下db.logs.find()再插入一條數(shù)據(jù)```db.logs.insert({logconfig:004,date:Date()})```第一條數(shù)據(jù)會被頂?shù)粜〗Y(jié):數(shù)據(jù)庫(查看、創(chuàng)建、選擇、刪除)--查看:showdatabases--創(chuàng)建:有單獨的語法,但是忽略隱式創(chuàng)建--選擇:use數(shù)據(jù)庫名--刪除:1.通過use選中數(shù)據(jù)庫2.通過db.dropDatabase()刪除數(shù)據(jù)庫集合(查看、創(chuàng)建、刪除--查看:showcollections--創(chuàng)建:db.createColletion(‘集合名’)db.collection.insert(...)--刪除:db.集合名.drop()--重命名:db.collection.renameCollection("newname")練一練1.切換使用數(shù)據(jù)庫的關(guān)鍵字()A.createB.dropC.useD.update2.查看數(shù)據(jù)庫的關(guān)鍵是()A.showB.findC.IndexD.insert3.在集合中給集合重命名的關(guān)鍵字是()A.NameB.renameCollectionC.collectionNameD.dropCollection4.刪除數(shù)據(jù)庫,使用關(guān)鍵字()A.dropB.deleteC.removeD.dropDatabase5.查看數(shù)據(jù)庫showdatabases命令,還可以寫成()A.createB.dbsC.showdbsD.dropdbs謝謝!第六章增刪改查單擊此處添加副標題演講者:文檔01增加數(shù)據(jù)02修改數(shù)據(jù)04刪除數(shù)據(jù)05查詢數(shù)據(jù)03NULL類型06目錄時間類型07項目實踐0801文檔文檔的鍵和值MongoDB中數(shù)據(jù)的組織形式===》文檔什么是文檔:?文檔是MongoDB中數(shù)據(jù)的基本單元。我們前面已經(jīng)見過MongoDB數(shù)據(jù)存儲格式為BSON。鍵值對按照BSON格式結(jié)合起來存入MongoDB就是一個文檔,文檔是對數(shù)據(jù)的一種描述。鍵:即文檔的域命名規(guī)則:?1.utf-8格式字符串?2.不能有'\0'?3.一個文檔中的鍵是不能重復的*文檔中的鍵值對是有序的*MongoDB嚴格區(qū)分大小寫

值:即文檔存儲數(shù)據(jù),也就是mongodb支持的數(shù)據(jù)類型bson===》json===》JavaScripy(主要是做前端的--jQuery、vue,慢慢滲透到后端--node.js)文檔的id5f59a44b2922bf2748ebe98c01234567891011時間戳機器PID計數(shù)器"_id":ObjectId("5f59a44b2922bf2748ebe98c")ObjectId1如果在插入文檔時沒有指定_id域,則系統(tǒng)會自動添加該域作為主鍵。?

值是一個ObjectId類型的數(shù)據(jù)?

24位16進制數(shù)===》保證所有的_id值的唯一性?8位文檔創(chuàng)建時間6位機器ID4位進程ID6位計數(shù)器_id:2集合中的文檔集合中的文檔集合中的文檔不一定域的個數(shù)相同集合中的文檔不一定有相同的域(關(guān)系型數(shù)據(jù)庫:表決定字段)(非關(guān)系型數(shù)據(jù)庫,文檔決定域)集合設(shè)計原則?1.集合中的文檔盡可能描述同一類內(nèi)容,有更多相同的域?2.同一類數(shù)據(jù)信息,不要過多分散集合存放?3.集合中文檔的層次不要包含太多02增加數(shù)據(jù)1語法:db.集合名.insertOne()2注意:集合存在時直接增加數(shù)據(jù),集合不存在時隱式創(chuàng)建增加一條數(shù)據(jù)除了系統(tǒng)自動生成的ObjectId,還可以根據(jù)業(yè)務(wù)需求自定義_id的生成方式。只需給插入的JSON數(shù)據(jù)增加_id鍵即可覆蓋(但是實際操作中不推薦),語法如下。db.c1.insertOne({_id:1,uname:"webopenfather",age:18})自定義_id值插入多條數(shù)據(jù)使用insertMany(),在()中傳遞數(shù)組,數(shù)組中寫一個JSON數(shù)據(jù)即可。語法:db.集合名.insertMany()0201插入多條記錄03查詢數(shù)據(jù)基礎(chǔ)語法:db.集合名.find(條件,[查詢的列])1條件的格式:2查詢所有數(shù)據(jù)用{}或者不寫。3查詢age=6的數(shù)據(jù),可以寫成:{age:6}4既要age=6又要性別=男,可以寫成:{age:6,sex:”男”}5查詢的列(可選參數(shù))的格式:6不寫參數(shù)表示查詢?nèi)苛校ㄗ侄危?{age:1}表示只顯示age列(字段/域)8{age:0}表示除了age列其他字段都顯示9查詢查詢中的算數(shù)運算符運算符作用$gt大于$gte大于等于$lt小于$lte小于等于$ne不等于$inin$ninnotin查詢中的邏輯運算符$and、$or、$not、$nor。$size表示按照指定size的值進行查找。$all表示查找成績數(shù)組中同時包含多項數(shù)據(jù)的文檔。$slice表示取數(shù)組的部分進行顯示,在find中聲明。數(shù)組的下標操作,可以通過域名“.”下標的方式具體的操作數(shù)組的某一項。按數(shù)值查找-使用算數(shù)運算符中表示比較的運算符文檔中的數(shù)組$mod$exists$type其他query查詢010203distinct()pretty()count()常用函數(shù)04修改數(shù)據(jù)Adb.集合名.update(條件,新數(shù)據(jù),[是否新增,是否修改多條])B是否新增:指條件匹

溫馨提示

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

評論

0/150

提交評論