柚子快報(bào)激活碼778899分享:NoSQL數(shù)據(jù)庫(kù)
柚子快報(bào)激活碼778899分享:NoSQL數(shù)據(jù)庫(kù)
文章目錄
NoSQL數(shù)據(jù)庫(kù)NoSQL 特點(diǎn)
大數(shù)據(jù)特征三種外部存儲(chǔ)形式(DAS、SAN、NAS)管理和查詢方式
關(guān)系型數(shù)據(jù)庫(kù)關(guān)系模型完整性約束ACID要求CAP原理和BASE原理
Hadoop架構(gòu)三個(gè)節(jié)點(diǎn)
HDFS 基本配置參數(shù)hbase數(shù)據(jù)模型拓?fù)浣Y(jié)構(gòu)META表 尋址數(shù)據(jù)讀寫(xiě)機(jī)制分區(qū)方式數(shù)據(jù)表基本設(shè)計(jì)原則(常見(jiàn)原則2個(gè))
Cassdndra三個(gè)特點(diǎn)Dynamo數(shù)據(jù)一致性原理矢量時(shí)鐘的設(shè)計(jì)目的閑話(Gossip)CQL的數(shù)據(jù)類型原生類型集合類型用戶自定義類型
mongoDB概述配置文件重要參數(shù)管道和聚合索引操作(索引類型)概述配置文件重要參數(shù)管道和聚合索引操作(索引類型)部署分片集
NoSQL數(shù)據(jù)庫(kù)
NoSQL 特點(diǎn)
NoSQL是指非關(guān)系型數(shù)據(jù)庫(kù),相對(duì)于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),它具有以下特點(diǎn):
非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ):NoSQL數(shù)據(jù)庫(kù)不需要預(yù)定義數(shù)據(jù)模型和表結(jié)構(gòu),可以存儲(chǔ)非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù),如JSON、XML、文本、圖像等。分布式數(shù)據(jù)存儲(chǔ):NoSQL數(shù)據(jù)庫(kù)采用分布式數(shù)據(jù)存儲(chǔ)架構(gòu),可以水平擴(kuò)展,支持大規(guī)模數(shù)據(jù)存儲(chǔ)和處理。高可用性和容錯(cuò)性:NoSQL數(shù)據(jù)庫(kù)具有高可用性和容錯(cuò)性,可以自動(dòng)復(fù)制數(shù)據(jù),保證數(shù)據(jù)的可靠性和可用性。高性能數(shù)據(jù)訪問(wèn):NoSQL數(shù)據(jù)庫(kù)通常使用基于鍵值或文檔的數(shù)據(jù)訪問(wèn)模型,能夠?qū)崿F(xiàn)高性能的數(shù)據(jù)讀取和寫(xiě)入。適合大數(shù)據(jù)和高并發(fā)場(chǎng)景:NoSQL數(shù)據(jù)庫(kù)適合處理海量數(shù)據(jù)和高并發(fā)場(chǎng)景,如社交媒體、物聯(lián)網(wǎng)、云計(jì)算等應(yīng)用場(chǎng)景。靈活性和擴(kuò)展性:NoSQL數(shù)據(jù)庫(kù)可以根據(jù)業(yè)務(wù)需求進(jìn)行定制和擴(kuò)展,可以通過(guò)添加新節(jié)點(diǎn)、增加存儲(chǔ)空間等方式來(lái)擴(kuò)展系統(tǒng)。
總的來(lái)說(shuō),NoSQL數(shù)據(jù)庫(kù)具有非常高的可擴(kuò)展性、可用性、靈活性和性能,適合處理大數(shù)據(jù)和高并發(fā)場(chǎng)景下的數(shù)據(jù)管理和分析需求。
大數(shù)據(jù)
大數(shù)據(jù)是指數(shù)據(jù)量非常龐大、復(fù)雜多變的數(shù)據(jù)集合,這些數(shù)據(jù)可以來(lái)自各種不同的來(lái)源,如社交媒體、傳感器、設(shè)備、傳統(tǒng)企業(yè)數(shù)據(jù)等。
特征
Volume(數(shù)據(jù)量大):大數(shù)據(jù)的主要特征是其數(shù)據(jù)量巨大,以至于傳統(tǒng)的數(shù)據(jù)處理工具無(wú)法處理它們。Velocity(數(shù)據(jù)處理速度快):大數(shù)據(jù)的產(chǎn)生速度非???,因此需要快速處理和分析數(shù)據(jù),以便及時(shí)做出決策。Variety(數(shù)據(jù)多樣性):大數(shù)據(jù)來(lái)源廣泛,包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),因此需要能夠處理和分析多種不同類型的數(shù)據(jù)。Veracity(數(shù)據(jù)準(zhǔn)確性):大數(shù)據(jù)往往包含大量的噪音和錯(cuò)誤,因此需要采取措施保證數(shù)據(jù)的準(zhǔn)確性。
三種外部存儲(chǔ)形式(DAS、SAN、NAS)
DAS、SAN、NAS都是存儲(chǔ)領(lǐng)域的術(shù)語(yǔ),它們分別表示:
DAS(Direct Attached Storage):直接連接式存儲(chǔ),是一種將存儲(chǔ)設(shè)備直接連接到服務(wù)器上的存儲(chǔ)架構(gòu)。DAS常見(jiàn)的形式是將硬盤(pán)或SSD通過(guò)SATA或SAS接口直接連接到服務(wù)器的內(nèi)部或外部。DAS的特點(diǎn)是延遲低、吞吐量大、成本低,但可擴(kuò)展性較差,不能滿足大規(guī)模數(shù)據(jù)的存儲(chǔ)和處理需求。SAN(Storage Area Network):存儲(chǔ)區(qū)域網(wǎng)絡(luò),是一種通過(guò)網(wǎng)絡(luò)連接存儲(chǔ)設(shè)備和服務(wù)器的存儲(chǔ)架構(gòu)。SAN通常采用光纖通道(Fiber Channel)或iSCSI等網(wǎng)絡(luò)技術(shù)連接服務(wù)器和存儲(chǔ)設(shè)備,具有高可靠性、高可擴(kuò)展性、高帶寬等特點(diǎn)。SAN適用于大規(guī)模數(shù)據(jù)中心和企業(yè)級(jí)應(yīng)用。NAS(Network Attached Storage):網(wǎng)絡(luò)附屬存儲(chǔ),是一種通過(guò)網(wǎng)絡(luò)連接存儲(chǔ)設(shè)備和服務(wù)器的存儲(chǔ)架構(gòu)。NAS通常采用以太網(wǎng)連接服務(wù)器和存儲(chǔ)設(shè)備,具有易于管理、易于擴(kuò)展等特點(diǎn),適用于小型和中型企業(yè)以及個(gè)人用戶。
總體而言,DAS適用于小規(guī)模數(shù)據(jù)存儲(chǔ)需求,SAN適用于大規(guī)模數(shù)據(jù)中心和企業(yè)級(jí)應(yīng)用,而NAS適用于小型和中型企業(yè)以及個(gè)人用戶的數(shù)據(jù)存儲(chǔ)需求。選擇適合自己需求的存儲(chǔ)架構(gòu)可以提高數(shù)據(jù)的處理效率和準(zhǔn)確性。
管理和查詢方式
大數(shù)據(jù)的列管理和原格式存儲(chǔ)通常采用的查詢方式有以下兩種:
掃描整個(gè)表格查詢:在這種方式下,數(shù)據(jù)分布在多個(gè)列中,需要查詢整個(gè)表格才能找到需要的數(shù)據(jù)。這種方式的查詢速度較慢,但對(duì)于需要查詢多個(gè)列的情況比較有效。這種方式的代表是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)查詢方式。列存儲(chǔ)查詢:在這種方式下,數(shù)據(jù)按列存儲(chǔ),每個(gè)列都有一個(gè)獨(dú)立的存儲(chǔ)文件,因此只需讀取需要的列即可找到需要的數(shù)據(jù)。這種方式的查詢速度較快,尤其適合需要查詢單獨(dú)列的情況。這種方式的代表包括Hadoop中的列式存儲(chǔ)、Apache Cassandra等。
總的來(lái)說(shuō),列存儲(chǔ)適合讀取較少的列,但對(duì)于讀取整個(gè)表格的情況可能不如行式存儲(chǔ)快速,需要權(quán)衡存儲(chǔ)成本、數(shù)據(jù)量以及查詢性能等因素來(lái)選擇合適的存儲(chǔ)方式和查詢方式。
關(guān)系型數(shù)據(jù)庫(kù)
關(guān)系模型
關(guān)系模型的特點(diǎn)包括:
表格化的數(shù)據(jù)結(jié)構(gòu):關(guān)系型數(shù)據(jù)庫(kù)采用表格化的數(shù)據(jù)結(jié)構(gòu),每個(gè)表格包含若干行數(shù)據(jù)和若干列屬性。關(guān)系的概念:關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)為若干個(gè)關(guān)系,每個(gè)關(guān)系由一張表格表示,通過(guò)主鍵和外鍵建立關(guān)系。SQL語(yǔ)言:關(guān)系型數(shù)據(jù)庫(kù)使用SQL語(yǔ)言進(jìn)行數(shù)據(jù)的操作和查詢。事務(wù)支持:關(guān)系型數(shù)據(jù)庫(kù)支持ACID事務(wù),保證數(shù)據(jù)的一致性、隔離性、持久性和原子性。
完整性約束
完整性約束是關(guān)系型數(shù)據(jù)庫(kù)中的一個(gè)重要特性,它用于保證數(shù)據(jù)的一致性和完整性,包括:
實(shí)體完整性:保證每個(gè)表格中的每一行數(shù)據(jù)都有一個(gè)唯一的主鍵值,以便能夠準(zhǔn)確地找到和修改每一行數(shù)據(jù)。參照完整性:保證外鍵引用的關(guān)系必須存在,以便能夠建立關(guān)系和維護(hù)數(shù)據(jù)的一致性。域完整性:保證數(shù)據(jù)在插入或更新時(shí)滿足指定的數(shù)據(jù)類型、長(zhǎng)度、格式、精度等規(guī)定,以便能夠準(zhǔn)確地存儲(chǔ)和查詢數(shù)據(jù)。
ACID要求
ACID是關(guān)系型數(shù)據(jù)庫(kù)的一個(gè)重要特性,表示原子性、一致性、隔離性和持久性。
原子性:事務(wù)操作是一個(gè)不可分割的整體,要么全部執(zhí)行成功,要么全部失敗,保證數(shù)據(jù)的完整性和一致性。一致性:事務(wù)執(zhí)行前后數(shù)據(jù)庫(kù)中的數(shù)據(jù)必須保持一致性,不會(huì)出現(xiàn)數(shù)據(jù)損壞或丟失。隔離性:并發(fā)的事務(wù)之間相互隔離,不會(huì)相互影響,保證數(shù)據(jù)的獨(dú)立性和安全性。持久性:事務(wù)執(zhí)行成功后,數(shù)據(jù)必須永久保存在數(shù)據(jù)庫(kù)中,即使發(fā)生系統(tǒng)故障也不會(huì)丟失。
CAP原理和BASE原理
CAP原理是指在分布式系統(tǒng)中,一致性(Consistency)、可用性(Availability)和分區(qū)容錯(cuò)性(Partition Tolerance)這三個(gè)特性無(wú)法同時(shí)滿足,必須舍棄其中一個(gè)或多個(gè)。具體來(lái)說(shuō):
一致性(Consistency):指在分布式系統(tǒng)中,數(shù)據(jù)在多個(gè)節(jié)點(diǎn)上的副本必須保持一致,即任何時(shí)刻任何節(jié)點(diǎn)讀取到的數(shù)據(jù)都是最新的數(shù)據(jù)??捎眯裕ˋvailability):指在分布式系統(tǒng)中,任何時(shí)刻都能夠讀寫(xiě)數(shù)據(jù),即系統(tǒng)具有高可用性。分區(qū)容錯(cuò)性(Partition Tolerance):指在分布式系統(tǒng)中,系統(tǒng)在遇到節(jié)點(diǎn)故障、網(wǎng)絡(luò)故障等情況時(shí)仍然能夠正常工作,即系統(tǒng)具有分區(qū)容錯(cuò)性。
在CAP原理中,由于分布式系統(tǒng)的不可避免的網(wǎng)絡(luò)分區(qū)問(wèn)題,必須選擇放棄一項(xiàng),以保證系統(tǒng)的正常運(yùn)行。在實(shí)際應(yīng)用中,根據(jù)不同的需求和場(chǎng)景,可以選擇不同的權(quán)衡策略。
而B(niǎo)ASE原則是對(duì)CAP原則的一種補(bǔ)充,它認(rèn)為在分布式系統(tǒng)中,不同的應(yīng)用場(chǎng)景對(duì)一致性的要求是不同的,因此不必追求強(qiáng)一致性,而應(yīng)該追求基本可用性(Basically Available)、軟狀態(tài)(Soft state)和最終一致性(Eventually Consistent):
基本可用性(Basically Available):指系統(tǒng)在出現(xiàn)故障或異常情況時(shí),仍能夠保證核心功能的正常使用。軟狀態(tài)(Soft state):指系統(tǒng)的狀態(tài)可以在不同的節(jié)點(diǎn)之間進(jìn)行傳輸和同步,因此系統(tǒng)的狀態(tài)不需要全局一致。最終一致性(Eventually Consistent):指系統(tǒng)在一定時(shí)間內(nèi)會(huì)達(dá)到一致?tīng)顟B(tài),即數(shù)據(jù)在多個(gè)節(jié)點(diǎn)之間會(huì)在一定時(shí)間內(nèi)保持一致。
BASE原則強(qiáng)調(diào)的是在分布式系統(tǒng)中,系統(tǒng)的可用性和性能至關(guān)重要,因此在數(shù)據(jù)的一致性和可用性之間需要進(jìn)行權(quán)衡。相比CAP原則追求強(qiáng)一致性,BASE原則追求最終一致性,更加符合實(shí)際需求。
Hadoop
架構(gòu)
Hadoop是一個(gè)由Apache開(kāi)發(fā)的分布式計(jì)算框架,其架構(gòu)包含以下幾個(gè)組件:
HDFS(Hadoop Distributed File System):Hadoop分布式文件系統(tǒng),用于存儲(chǔ)和管理大規(guī)模數(shù)據(jù)。HDFS將文件分割成多個(gè)塊并存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,實(shí)現(xiàn)數(shù)據(jù)的可靠存儲(chǔ)和高可用性。YARN(Yet Another Resource Negotiator):Hadoop資源管理器,用于分配和管理集群中的計(jì)算資源,包括內(nèi)存、CPU等。MapReduce:分布式計(jì)算框架,用于實(shí)現(xiàn)分布式計(jì)算任務(wù)。MapReduce將大規(guī)模數(shù)據(jù)分割成多個(gè)小數(shù)據(jù)塊,然后將這些小數(shù)據(jù)塊分配給不同的節(jié)點(diǎn)進(jìn)行處理,最后將結(jié)果合并。Hadoop Common:提供各個(gè)Hadoop組件所需的基礎(chǔ)庫(kù)和工具。
三個(gè)節(jié)點(diǎn)
在Hadoop分布式文件系統(tǒng)(HDFS)中,NN、DN和2NN的作用分別如下:
NameNode(NN):是HDFS的主服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的命名空間、文件的目錄樹(shù)和文件的訪問(wèn)權(quán)限等。同時(shí)也記錄著每個(gè)文件塊的副本位置信息,以及塊所屬的DataNode的信息等。當(dāng)客戶端請(qǐng)求讀取或?qū)懭胛募r(shí),它將與NameNode通信以獲取所需的信息,NameNode返回對(duì)應(yīng)的DataNode位置信息給客戶端。同時(shí),它也定期地向所有DataNode發(fā)送心跳信號(hào)以檢查數(shù)據(jù)塊的可靠性。DataNode(DN):是HDFS的工作節(jié)點(diǎn),存儲(chǔ)文件數(shù)據(jù)塊以及它們的副本,并向NameNode匯報(bào)這些信息。同時(shí),它也負(fù)責(zé)接收來(lái)自客戶端和其他DataNode的寫(xiě)入請(qǐng)求,以及向其他DataNode傳輸數(shù)據(jù)塊。DataNode定期向NameNode發(fā)送心跳信號(hào),告知自身的存儲(chǔ)容量和數(shù)據(jù)塊的狀態(tài)。Secondary NameNode(2NN):它的作用是幫助NN進(jìn)行checkpoint操作,即定期將NN的元數(shù)據(jù)信息寫(xiě)入磁盤(pán)并保存一份最新的文件系統(tǒng)狀態(tài),以避免NN的元數(shù)據(jù)信息過(guò)于龐大而導(dǎo)致的性能問(wèn)題。在Hadoop 2.x及以上版本中,2NN已經(jīng)不再承擔(dān)checkpoint操作,而是由NameNode自身執(zhí)行。
總之,NN、DN和2NN是Hadoop集群中非常重要的組件,它們共同協(xié)作,保證了HDFS的高可用性和可靠性。
HDFS 基本配置參數(shù)
在Hadoop集群中,HDFS的配置參數(shù)對(duì)于數(shù)據(jù)的性能和可靠性具有重要影響。以下是HDFS的幾個(gè)基本配置參數(shù):
dfs.replication:表示數(shù)據(jù)塊的副本數(shù)。默認(rèn)值為3,建議根據(jù)集群規(guī)模和數(shù)據(jù)的重要性進(jìn)行調(diào)整。增加副本數(shù)可以提高數(shù)據(jù)的可靠性,但會(huì)占用更多的存儲(chǔ)空間和網(wǎng)絡(luò)帶寬。dfs.blocksize:表示HDFS中數(shù)據(jù)塊的大小,默認(rèn)為128MB。可以根據(jù)文件大小、I/O并發(fā)性等因素進(jìn)行調(diào)整,一般建議為128MB~256MB。dfs.namenode.name.dir:表示NameNode的數(shù)據(jù)存儲(chǔ)目錄,默認(rèn)為${hadoop.tmp.dir}/dfs/name。建議將該目錄設(shè)置為多個(gè)磁盤(pán)或磁盤(pán)陣列,以提高可靠性和性能。dfs.datanode.data.dir:表示DataNode的數(shù)據(jù)存儲(chǔ)目錄,默認(rèn)為${hadoop.tmp.dir}/dfs/data。建議將該目錄設(shè)置為多個(gè)磁盤(pán)或磁盤(pán)陣列,以提高性能和可靠性。dfs.permissions.enabled:表示是否啟用HDFS的權(quán)限控制,默認(rèn)為true??梢愿鶕?jù)實(shí)際需求進(jìn)行調(diào)整。
這些配置參數(shù)可以通過(guò)修改Hadoop的配置文件(如hdfs-site.xml)來(lái)進(jìn)行修改。
hbase
數(shù)據(jù)模型
數(shù)據(jù)模型:HBase采用的是列族(Column Family)的數(shù)據(jù)模型,它類似于關(guān)系型數(shù)據(jù)庫(kù)的表格模型,但是一個(gè)列族可以包含多個(gè)列,每個(gè)列可以在不同的行中存儲(chǔ)不同的值。數(shù)據(jù)按照行鍵(Row Key)排序存儲(chǔ),每個(gè)行鍵可以對(duì)應(yīng)多個(gè)列族和列,但是只能有一個(gè)版本號(hào)。在HBase中,每個(gè)表格都由一個(gè)或多個(gè)列族組成,而每個(gè)列族可以包含任意數(shù)量的列,每個(gè)列可以存儲(chǔ)一個(gè)或多個(gè)值。HBase的數(shù)據(jù)模型是靈活的,支持動(dòng)態(tài)列族的創(chuàng)建和刪除,因此可以方便地存儲(chǔ)半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
拓?fù)浣Y(jié)構(gòu)
拓?fù)浣Y(jié)構(gòu):HBase采用的是Master-Slave結(jié)構(gòu),其中Master節(jié)點(diǎn)負(fù)責(zé)管理集群中的各個(gè)RegionServer,包括Region的劃分、負(fù)載均衡、故障轉(zhuǎn)移等工作。RegionServer是HBase中的工作節(jié)點(diǎn),負(fù)責(zé)存儲(chǔ)和管理一組Region,每個(gè)Region負(fù)責(zé)管理表格中的一部分?jǐn)?shù)據(jù)。一個(gè)RegionServer可以管理多個(gè)Region,而一個(gè)Region可以存儲(chǔ)多個(gè)行鍵的數(shù)據(jù)。HBase采用了ZooKeeper來(lái)維護(hù)集群的狀態(tài)信息和配置信息,包括Master的選舉、RegionServer的注冊(cè)、故障檢測(cè)等工作。
META表 尋址
META表尋址:在HBase中,META表存儲(chǔ)了所有表格的元數(shù)據(jù)信息,包括表格名稱、列族名稱、行鍵范圍等,通過(guò)META表可以快速定位到指定行鍵所在的RegionServer。當(dāng)客戶端需要查詢或?qū)懭胍粭l數(shù)據(jù)時(shí),它首先會(huì)向ZooKeeper請(qǐng)求獲取META表的位置,然后根據(jù)行鍵范圍查詢META表中對(duì)應(yīng)的RegionServer,最后通過(guò)RPC協(xié)議與RegionServer通信完成數(shù)據(jù)操作。
數(shù)據(jù)讀寫(xiě)機(jī)制
數(shù)據(jù)讀寫(xiě)機(jī)制:HBase采用了基于LSM樹(shù)(Log-Structured Merge Tree)的數(shù)據(jù)存儲(chǔ)和讀寫(xiě)機(jī)制,即將數(shù)據(jù)寫(xiě)入MemStore內(nèi)存緩存,當(dāng)緩存達(dá)到一定大小時(shí),將數(shù)據(jù)寫(xiě)入HDFS的HFile文件中,然后進(jìn)行數(shù)據(jù)合并和壓縮,生成新的HFile文件,并刪除舊的HFile文件,最終形成一個(gè)包含多個(gè)HFile文件的Store文件夾。當(dāng)需要查詢一條數(shù)據(jù)時(shí),先從MemStore中查找,如果找不到,則從HFile文件中查找,如果存在多個(gè)版本,則取最新的版本。
分區(qū)方式
分區(qū)方式:在HBase中,數(shù)據(jù)按照行鍵進(jìn)行范圍劃分,每個(gè)Region負(fù)責(zé)管理一個(gè)或多個(gè)連續(xù)的行鍵范圍,Region的大小可以通過(guò)表格的預(yù)分區(qū)數(shù)或自動(dòng)分區(qū)機(jī)制進(jìn)行控制。預(yù)分區(qū)數(shù)是指在創(chuàng)建表格時(shí)指定的Region數(shù),可以根據(jù)數(shù)據(jù)大小和查詢負(fù)載進(jìn)行調(diào)整。自動(dòng)分區(qū)機(jī)制是指在寫(xiě)入數(shù)據(jù)時(shí),如果一個(gè)Region的大小超過(guò)了指定閾值,就會(huì)自動(dòng)將其拆分為兩個(gè)Region,以保持Region的大小均衡和數(shù)據(jù)的負(fù)載均衡。
數(shù)據(jù)表基本設(shè)計(jì)原則(常見(jiàn)原則2個(gè))
行鍵設(shè)計(jì)原則:行鍵應(yīng)該盡量短小、有意義、易于分片和查詢,避免使用隨機(jī)數(shù)和復(fù)雜結(jié)構(gòu),如時(shí)間戳、哈希值等。列族設(shè)計(jì)原則:列族應(yīng)該按照業(yè)務(wù)和查詢需求進(jìn)行劃分和命名,避免列族數(shù)量過(guò)多或命名不規(guī)范的情況,同時(shí)可以根據(jù)需要進(jìn)行動(dòng)態(tài)創(chuàng)建和刪除。
Cassdndra
三個(gè)特點(diǎn)
基于列的存儲(chǔ)結(jié)構(gòu):Cassandra的數(shù)據(jù)模型采用了列式存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)按列族存儲(chǔ)在表中,列族可以動(dòng)態(tài)創(chuàng)建和刪除,并且支持列級(jí)別的索引和查詢。高可用和容錯(cuò)性:Cassandra采用了分布式的架構(gòu)和數(shù)據(jù)復(fù)制機(jī)制,數(shù)據(jù)被自動(dòng)復(fù)制到多個(gè)節(jié)點(diǎn)上,保證數(shù)據(jù)的高可用性和容錯(cuò)性。線性可擴(kuò)展性:Cassandra的節(jié)點(diǎn)可以隨時(shí)增加和刪除,支持線性的水平擴(kuò)展,以滿足不斷增長(zhǎng)的數(shù)據(jù)需求。
Dynamo數(shù)據(jù)一致性原理
Dynamo數(shù)據(jù)一致性原理:Cassandra的設(shè)計(jì)靈感來(lái)自Amazon的Dynamo系統(tǒng),它采用了Dynamo的數(shù)據(jù)一致性原理,即最終一致性。最終一致性是指在數(shù)據(jù)寫(xiě)入后,不保證立即在所有節(jié)點(diǎn)上同步,但最終所有節(jié)點(diǎn)的數(shù)據(jù)會(huì)達(dá)到一致?tīng)顟B(tài)。Cassandra通過(guò)復(fù)制機(jī)制和數(shù)據(jù)版本控制來(lái)實(shí)現(xiàn)最終一致性。
矢量時(shí)鐘的設(shè)計(jì)目的
矢量時(shí)鐘的設(shè)計(jì)目的:矢量時(shí)鐘(Vector Clock)是Cassandra用來(lái)維護(hù)數(shù)據(jù)版本的機(jī)制,它是一個(gè)由節(jié)點(diǎn)ID和時(shí)間戳組成的向量,每次數(shù)據(jù)更新時(shí)都會(huì)增加對(duì)應(yīng)節(jié)點(diǎn)的時(shí)間戳,用于判斷不同節(jié)點(diǎn)的數(shù)據(jù)版本是否一致。矢量時(shí)鐘的設(shè)計(jì)目的是解決分布式系統(tǒng)中的數(shù)據(jù)一致性問(wèn)題,因?yàn)樵诜植际较到y(tǒng)中,不同節(jié)點(diǎn)的時(shí)間戳可能不一致,所以不能單純依靠時(shí)間戳來(lái)判斷數(shù)據(jù)版本。
閑話(Gossip)
閑話(Gossip):Cassandra使用Gossip協(xié)議來(lái)實(shí)現(xiàn)節(jié)點(diǎn)間的信息交換和狀態(tài)同步。Gossip協(xié)議是一種去中心化、基于事件驅(qū)動(dòng)的協(xié)議,節(jié)點(diǎn)之間定期向周圍節(jié)點(diǎn)發(fā)送消息,用于廣播自身狀態(tài)和接收其他節(jié)點(diǎn)的狀態(tài),通過(guò)交換狀態(tài)信息來(lái)實(shí)現(xiàn)節(jié)點(diǎn)狀態(tài)的同步。Cassandra使用Gossip協(xié)議來(lái)實(shí)現(xiàn)節(jié)點(diǎn)的發(fā)現(xiàn)、拓?fù)浣Y(jié)構(gòu)的維護(hù)和數(shù)據(jù)復(fù)制機(jī)制的實(shí)現(xiàn)。
CQL的數(shù)據(jù)類型
原生類型
ASCII:一個(gè)ASCII字符組成的字符串。Bigint:64位有符號(hào)整數(shù)。Blob:二進(jìn)制數(shù)據(jù),最大長(zhǎng)度為2GB。Boolean:布爾類型,true或false。Counter:計(jì)數(shù)器類型,支持自增和自減操作。Date:日期類型,支持日期相關(guān)的操作。Decimal:高精度的十進(jìn)制類型。Double:雙精度浮點(diǎn)類型。Float:?jiǎn)尉雀↑c(diǎn)類型。Int:32位有符號(hào)整數(shù)。Text:一個(gè)UTF-8字符組成的字符串。Time:時(shí)間類型,支持時(shí)間相關(guān)的操作。Timestamp:時(shí)間戳類型,表示從1970年1月1日至今的毫秒數(shù)。UUID:通用唯一標(biāo)識(shí)符類型。Varchar:一個(gè)可變長(zhǎng)度的字符串類型。Varint:任意大小的整數(shù)類型。
集合類型
List:有序列表,可以包含任何數(shù)據(jù)類型。Set:無(wú)序集合,可以包含任何數(shù)據(jù)類型。Map:鍵值對(duì),可以包含任何數(shù)據(jù)類型。
用戶自定義類型
可以定義自己的數(shù)據(jù)類型,并將其作為表的一部分使用。自定義類型可以包含原生類型、集合類型和其他自定義類型。
mongoDB
概述
MongoDB以BSON(二進(jìn)制JSON)格式存儲(chǔ)數(shù)據(jù),具有高性能、易擴(kuò)展、高可用性等特點(diǎn)。它支持動(dòng)態(tài)查詢、索引、負(fù)載均衡、分片和事務(wù)等功能。
配置文件重要參數(shù)
MongoDB的配置文件中包含了一些重要的參數(shù),如:
bindIp:MongoDB綁定的IP地址。port:MongoDB的端口號(hào)。dbpath:MongoDB存儲(chǔ)數(shù)據(jù)的路徑。logpath:MongoDB日志文件的路徑。replSetName:MongoDB副本集的名稱。shardName:MongoDB分片集的名稱。maxConns:MongoDB最大連接數(shù)。
管道和聚合
MongoDB的管道(pipeline)是一種數(shù)據(jù)聚合方法,它通過(guò)一系列的操作將多個(gè)文檔組合成一個(gè)結(jié)果集。管道操作可以用于聚合數(shù)據(jù)、篩選數(shù)據(jù)、排序數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)等多種場(chǎng)景。
MongoDB提供了豐富的管道操作符,如
m
a
t
c
h
、
match、
match、group、
s
o
r
t
、
sort、
sort、project、
l
i
m
i
t
、
limit、
limit、skip等,它們可以用于構(gòu)建復(fù)雜的聚合操作。
索引操作(索引類型)
MongoDB是一個(gè)基于文檔的分布式數(shù)據(jù)庫(kù)管理系統(tǒng),以下是其相關(guān)內(nèi)容:
概述
MongoDB以BSON(二進(jìn)制JSON)格式存儲(chǔ)數(shù)據(jù),具有高性能、易擴(kuò)展、高可用性等特點(diǎn)。它支持動(dòng)態(tài)查詢、索引、負(fù)載均衡、分片和事務(wù)等功能。
配置文件重要參數(shù)
MongoDB的配置文件中包含了一些重要的參數(shù),如:
bindIp:MongoDB綁定的IP地址。port:MongoDB的端口號(hào)。dbpath:MongoDB存儲(chǔ)數(shù)據(jù)的路徑。logpath:MongoDB日志文件的路徑。replSetName:MongoDB副本集的名稱。shardName:MongoDB分片集的名稱。maxConns:MongoDB最大連接數(shù)。
管道和聚合
MongoDB的管道(pipeline)是一種數(shù)據(jù)聚合方法,它通過(guò)一系列的操作將多個(gè)文檔組合成一個(gè)結(jié)果集。管道操作可以用于聚合數(shù)據(jù)、篩選數(shù)據(jù)、排序數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)等多種場(chǎng)景。
MongoDB提供了豐富的管道操作符,如
m
a
t
c
h
、
match、
match、group、
s
o
r
t
、
sort、
sort、project、
l
i
m
i
t
、
limit、
limit、skip等,它們可以用于構(gòu)建復(fù)雜的聚合操作。
索引操作(索引類型)
MongoDB支持多種類型的索引,包括:
單字段索引:對(duì)單個(gè)字段進(jìn)行索引。復(fù)合索引:對(duì)多個(gè)字段進(jìn)行聯(lián)合索引。文本索引:對(duì)文本進(jìn)行全文索引。地理位置索引:對(duì)地理位置信息進(jìn)行索引。散列索引:對(duì)數(shù)據(jù)進(jìn)行散列,并對(duì)散列結(jié)果進(jìn)行索引。
MongoDB的索引操作可以使用createIndex、ensureIndex、dropIndex等命令進(jìn)行管理。
部署分片集
MongoDB支持分片(sharding)技術(shù),可以將數(shù)據(jù)劃分為多個(gè)分片(shard)存儲(chǔ)在不同的服務(wù)器上。要部署MongoDB分片集,需要進(jìn)行以下步驟:
部署config服務(wù)器:config服務(wù)器用于存儲(chǔ)集群的配置信息。部署mongos路由:mongos路由用于將請(qǐng)求路由到正確的分片上。部署多個(gè)shard服務(wù)器:每個(gè)shard服務(wù)器存儲(chǔ)部分?jǐn)?shù)據(jù)。
在分片集群中,可以使用sh.shardCollection命令將數(shù)據(jù)分片存儲(chǔ),也可以使用mongos提供的自動(dòng)分片功能。
柚子快報(bào)激活碼778899分享:NoSQL數(shù)據(jù)庫(kù)
推薦閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。