共計 3278 個字符,預(yù)計需要花費 9 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“開源數(shù)據(jù)庫有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
數(shù)據(jù)庫從字面上的理解就是數(shù)據(jù)的倉庫,其實我們平時說的數(shù)據(jù)庫是指數(shù)據(jù)庫管理系統(tǒng)(Database Management System),它是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護數(shù)據(jù)庫,簡稱 DBMS。嚴格來說數(shù)據(jù)庫是數(shù)據(jù)庫管理系統(tǒng)的實例,一個數(shù)據(jù)庫管理系統(tǒng)可以有多個數(shù)據(jù)庫實例。
數(shù)據(jù)庫種類很多,我們平時接觸最多的恐怕就是 Oracle 數(shù)據(jù)庫,或者 MySQL 數(shù)據(jù)。兩者是應(yīng)用最廣泛的關(guān)系型數(shù)據(jù)。如圖 1 是 2018 年 12 月份使用情況排名,從排名也可以看出上述兩個數(shù)據(jù)庫分別排 *** 名和第二名。
圖 1 數(shù)據(jù)庫排名
數(shù)據(jù)庫的分類
如果仔細看圖 1 的排名就可以看到,數(shù)據(jù)庫不僅僅有我們平時學到的關(guān)系型數(shù)據(jù)庫,還有鍵值 (Key-Value) 數(shù)據(jù)庫、列存儲數(shù)據(jù)庫、文檔數(shù)據(jù)庫和搜索引擎等類型。下面本文將簡單介紹一下各種類型的數(shù)據(jù)。
關(guān)系型數(shù)據(jù)庫:這種類型的數(shù)據(jù)庫是最古老的數(shù)據(jù)庫類型,關(guān)系型數(shù)據(jù)庫模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(即二維表格形式), 如圖 2 是一個二維表的實例。通常該表 *** 行為字段名稱,描述該字段的作用,下面是具體的數(shù)據(jù)。在定義該表時需要指定字段的名稱及類型。
圖 2 數(shù)據(jù)庫表實例
在關(guān)系型數(shù)據(jù)庫中,對數(shù)據(jù)的操作幾乎全部建立在一個或多個關(guān)系表格上。在大型系統(tǒng)中通常有多個表,且表之間有各種關(guān)系。實際使用就是通過對這些關(guān)聯(lián)的表格分類、合并、連接或選取等運算來實現(xiàn)數(shù)據(jù)庫的管理。
鍵值存儲數(shù)據(jù)庫:鍵值數(shù)據(jù)庫是一種非關(guān)系數(shù)據(jù)庫,它使用簡單的鍵值方法來存儲數(shù)據(jù)。鍵值數(shù)據(jù)庫將數(shù)據(jù)存儲為鍵值對集合,其中鍵作為唯一標識符。
圖 2 鍵值數(shù)據(jù)庫基本原理
如圖 2 是某公有云的鍵值存儲示意圖,其中鍵包含分區(qū)鍵和排序鍵,而值包含更多的實際信息。比如實際使用是可以以學號為鍵,姓名、性別、年齡和班級等信息為值進行存儲。實際存儲形式很靈活,是業(yè)務(wù)需求自行定義即可。
列存儲數(shù)據(jù)庫:列式存儲 (column-based) 是相對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的行式存儲 (Row-basedstorage) 來說的。簡單來說兩者的區(qū)別就是對表中數(shù)據(jù)的存儲形式的差異。
圖 3 列存儲數(shù)據(jù)
如圖 3 是傳統(tǒng)行數(shù)據(jù)庫和列數(shù)據(jù)庫表中數(shù)據(jù)在磁盤上的存儲形式的差異對比。對于行存儲數(shù)據(jù)庫,表中的數(shù)據(jù)是以行為單位逐行存儲在磁盤上的; 而對于列存儲數(shù)據(jù)庫,表中的數(shù)據(jù)則是以列為單位逐列存儲在磁盤中。
列存儲解決的主要問題是數(shù)據(jù)查詢問題。我們知道,平時的查詢大部分都是條件查詢,通常是返回某些字段 (列) 的數(shù)據(jù)。對于行存儲數(shù)據(jù),數(shù)據(jù)讀取時通常將一行數(shù)據(jù)完全讀出,如果只需要其中幾列數(shù)據(jù)的情況,就會存在冗余列,出于縮短處理時間的考量,消除冗余列的過程通常是在內(nèi)存中進行的。而列存儲,每次讀取的數(shù)據(jù)是集合的一段或者全部,不存在冗余性問題。這樣,通過這種存儲方式的調(diào)整,使得查詢性能得到極大的提升。
面向文檔數(shù)據(jù)庫:此類數(shù)據(jù)庫可存放并獲取文檔,可以是 XML、JSON、BSON 等格式,這些文檔具備可述性(self-describing),呈現(xiàn)分層的樹狀結(jié)構(gòu)(hierarchical tree data structure),可以包含映射表、集合和純量值。數(shù)據(jù)庫中的文檔彼此相似,但不必完全相同。文檔數(shù)據(jù)庫所存放的文檔,就相當于鍵值數(shù)據(jù)庫所存放的“值”。文檔數(shù)據(jù)庫可視為其值可查的鍵值數(shù)據(jù)庫。
圖形數(shù)據(jù)庫:圖形數(shù)據(jù)庫顧名思義,就是一種存儲圖形關(guān)系的數(shù)據(jù)庫。圖形數(shù)據(jù)庫是 NoSQL 數(shù)據(jù)庫的一種類型,它應(yīng)用圖形理論存儲實體之間的關(guān)系信息。關(guān)系型數(shù)據(jù)用于存儲明確關(guān)系的數(shù)據(jù),但對于復(fù)雜關(guān)系的數(shù)據(jù)存儲卻有些力不從心。如圖 4 這種人物之間的關(guān)系,如果用關(guān)系型數(shù)據(jù)庫則非常復(fù)雜,用圖形數(shù)據(jù)庫將非常簡單。
圖 4 圖形數(shù)據(jù)庫示例
搜索引擎存儲:搜索引擎數(shù)據(jù)庫是應(yīng)用在搜索引擎領(lǐng)域的數(shù)據(jù)存儲形式,由于搜索引擎會爬取大量的數(shù)據(jù),并以特定的格式進行存儲,這樣在檢索的時候才能保證性能 ***。
不同類型數(shù)據(jù)庫軟件
關(guān)系型數(shù)據(jù)庫:關(guān)系型數(shù)據(jù)庫最為經(jīng)典的開源軟件就是 MySQL,它 *** 的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應(yīng)用方面 MySQL 是 *** 的 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一。
SUN 被甲骨文收購后,MySQL 的原創(chuàng)人員有拉出另外一個分支,命名 MariaDB。該數(shù)據(jù)庫被維基百科,F(xiàn)acebook 甚至 Google 等技術(shù)巨頭使用。MariaDB 是一種可為 MySQL 提供插件替換功能的數(shù)據(jù)庫服務(wù)器。開發(fā)人員的首要關(guān)注點是安全性,在每個版本發(fā)布時,開發(fā)人員還會合并所有 MySQL 的安全修補程序,并在需要時對其進行增強。
除此之外,還有很多開源的關(guān)系型數(shù)據(jù)庫,比如經(jīng)典的文件數(shù)據(jù)庫 SQLite 和針對 Web 服務(wù)進行優(yōu)化的 CUBRID 等。
鍵值存儲數(shù)據(jù)庫:鍵值數(shù)據(jù)庫目前應(yīng)用最多的應(yīng)該是 Redis,Redis 是一個開源的使用 ANSI C 語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value 數(shù)據(jù)庫,并提供多種語言的 API。Redis 通常最為普通關(guān)系型數(shù)據(jù)庫的緩存層,用于降低數(shù)據(jù)庫的訪問壓力,提升系統(tǒng)性能。
列存儲數(shù)據(jù)庫:列存儲數(shù)據(jù)庫中最為出名的恐怕就是 HBase 了,HBase 是 BigTable 的開源 java 版本。是建立在 HDFS 之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫 NoSQL 的數(shù)據(jù)庫系統(tǒng)。
面向文檔數(shù)據(jù)庫:文檔數(shù)據(jù)庫種類繁多,包括 MongoDB、CouchDB、 Terrastore、RavenDB 和 OrientDB 等多大十幾個。其中 MongoDB 是目前最為流行的文檔數(shù)據(jù)庫,其介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。其 *** 的特點是分布式部署,可以隨著負載的增大動態(tài)擴容,從而滿足企業(yè)業(yè)務(wù)增長的需求。
圖形數(shù)據(jù)庫:圖形種類很多,比如 Neo4J、ArangoDB、OrientDB、FlockDB、GraphDB、InfiniteGraph、Titan 和 Cayley 等。其中 Neo4j 是目前 *** 的圖形數(shù)據(jù)庫,支持完整的事務(wù),在屬性圖中,圖是由頂點 (Vertex),邊(Edge) 和屬性 (Property) 組成的,頂點和邊都可以設(shè)置屬性,頂點也稱作節(jié)點,邊也稱作關(guān)系,每個節(jié)點和關(guān)系都可以由一個或多個屬性。Neo4j 創(chuàng)建的圖是用頂點和邊構(gòu)建一個有向圖,其查詢語言 cypher 已經(jīng)成為事實上的標準。
搜索引擎存儲:搜索引擎數(shù)據(jù)庫最近比較火的包括 Solr 和 Elasticsearch 等。Solr 是 Apache 的一個開源項目,基于業(yè)界大名鼎鼎的 java 開源搜索引擎 Lucene。在過去的十年里,solr 發(fā)展壯大,擁有廣泛的用戶群體。solr 提供分布式索引、分片、副本集、負載均衡和自動故障轉(zhuǎn)移和恢復(fù)功能。如果正確部署,良好管理,solr 就能夠成為一個高可靠、可擴展和高容錯的搜索引擎。
Elasticsearch 構(gòu)建在 Apache Lucene 庫之上,同是開源搜索引擎。Elasticsearch 在 Solr 推出幾年后才面世的,通過 REST 和 schema-free 的 JSON 文檔提供分布式、多租戶全文搜索引擎。并且官方提供 Java,Groovy,PHP,Ruby,Perl,Python,.NET 和 Javascript 客戶端。目前 Elasticsearch 與 Logstash 和 Kibana 配合,部署成日志采集和分析,簡稱 ELK,它們都是開源軟件。最近新增了一個 FileBeat,它是一個輕量級的日志收集處理工具(Agent),F(xiàn)ilebeat 占用資源少,適合于在各個服務(wù)器上搜集日志后傳輸給 Logstash。
“開源數(shù)據(jù)庫有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實用文章!