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