ELK 設置定時清理腳本清理索引
905
2025-03-31
一、NoSQL概述
1.NoSQL簡介
NoSQL是一個概念,泛指非關系型的數據庫。有時稱為"Not only SQL"不僅僅是SQL,包括但不限于鍵值存儲數據庫、文檔型數據庫、搜索引擎數據庫、列存儲數據庫、圖形數據庫。
2.為什么用NoSQL
傳統的關系型數據庫如MySQL、SQL Server、Oracle等都是將復雜的數據結構歸結為簡單的二元關系(即二維表形式),能夠使用SQL語句進行復雜的查詢并且支持事務。但是隨著互聯網web2.0網站的興起,傳統的關系數據庫在處理web2.0網站,特別是超大規模和高并發的社交網絡類型的web2.0純動態網站,面臨著很多諸如在巨大數據量下查詢緩慢,單一的關系型數據模型難以應對數據種類復雜等情況。這時就需要用到NoSQL數據庫了。
NoSQL 對 SQL 做出了很好的補充。在實際開發中,有很多業務需求,并不需要完整的關系型數據庫功能,非關系型數據庫的功能就足夠使用了。這種情況下,使用性能更高、成本更低的非關系型數據庫當然是更明智的選擇。比如:日志收集、排行榜、定時器等。
3.NoSQL的優勢及特點
易擴展
NoSQL數據庫種類繁多,但是一個共同的特點都是去掉關系數據庫的關系型特性。數據之間無關系,這樣就非常容易擴展。
大數據量,高性能
NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益于它的無關系性,數據庫的結構簡單。
靈活的數據模型
NoSQL無須事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。而在關系數據庫里,增刪字段是一件非常麻煩的事情。如果是非常大數據量的表,增加字段將會非常復雜且消耗時間,這點在大數據量的Web 2.0時代尤其明顯。
高可用
NoSQL在不太影響性能的情況,就可以方便地實現高可用的架構。比如Cassandra、HBase模型,通過復制模型也能實現高可用。
NoSQL在不同時期的詮釋
1970:NoSQL = We have no SQL
1980:NoSQL = Know SQL
2000:NoSQL = No SQL!
2005:NoSQL = Not only SQL
2013:NoSQL = No, SQL!
這說明了,NoSQL是對SQL的補充,不管如何補充也都離不開SQL。
二、NoSQL的分類
鍵值存儲數據庫
鍵值型數據庫通過 Key-Value 鍵值的方式來存儲數據,Key 作為唯一的標識符,優點是查找速度快,在這方面明顯優于關系型數據庫,缺點是無法像關系型數據庫一樣使用條件過濾(比如 WHERE),如果你不知道去哪里找數據,就要遍歷所有的鍵,這就會消耗大量的計算。
鍵值型數據庫典型的使用場景是作為內存緩存。
Redis
redis是內存高速緩存數據庫,基于高級的key——value存儲系統,其中value支持五種數據類型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)
Redis還支持事務和數據的持久化,能夠快速的增刪。應用場景有排行榜、秒殺、抽獎。
文檔型數據庫
文檔型數據庫可存放并獲取文檔,可以是XML、JSON等格式。在數據庫中文檔作為處理信息的基本單位,一個文檔就相當于一條記錄。文檔數據庫所存放的文檔,就相當于鍵值數據庫所存放的“值”。
MongoDB
MongoDB是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。Mongo最大的特點是它支持的查詢語言非常強大,在海量數據中查詢速度非常快,支持分布式文件系統。
搜索引擎數據庫
關系型數據庫采用了索引提升檢索效率,但是針對全文索引效率卻較低。搜索引擎數據庫是應用在搜索引擎領域的數據存儲形式,由于搜索引擎會爬取大量的數據,并以特定的格式進行存儲,這樣在檢索的時候才能保證性能最優。核心原理是“倒排索引”。
elasticsearch是一個高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數據。
分布式實時文件存儲,并將每一個字段都編入索引,使其可以被搜索。
實時分析的分布式搜索引擎。
可以擴展到上百臺服務器,處理PB級別的結構化或非結構化數據。
列存儲數據庫
列式數據庫是相對于行式存儲的數據庫,Oracle、MySQL、SQL Server 等數據庫都是采用的行式存儲,而列式數據庫是將數據按照列存儲到數據庫中,這樣做的好處是可以大量降低系統的 I/O,適合于分布式文件系統,不足在于功能相對有限。
HBase
HBASE是一個高可靠性、高性能、面向列、可伸縮的非關系型數據庫,利用 Hadoop 分布式文件系統(Hadoop Distributed File System,HDFS)提供分布式數據存儲,一個表可以有上十億行,上百萬列。在實時讀寫、隨機訪問超大規模數據集方面十分優秀,多用于數據分析、數據挖掘。
圖形數據庫
圖形數據庫,利用了圖這種數據結構存儲了實體(對象)之間的關系。圖形數據庫最典型的例子就是社交網絡中人與人的關系,數據模型主要是以節點和邊(關系)來實現,特點在于能高效地解決復雜的關系問題。如社交網絡中人物之間的關系,如果用關系型數據庫則非常復雜,用圖形數據庫將非常簡單。
Neo4J
Neo4j是一款強健的,可伸縮的基于Java語言編寫的高性能圖數據庫。能夠高效的解決復雜的數據關系。比如好友推薦、商品推薦等就是使用了基于Neo4j的智能推薦引擎。
NoSQL 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。