隨著互聯網的快速發展,網絡上的數據也在不斷增多,各類文章、圖片、視頻都充斥于各類網站和應用程序之中,用戶如果想要在這些海量的信息中尋找和獲取自身所喜愛的內容,就會需要使用搜索的功能。而面對這樣海量復雜的數據,傳統數據庫搜索無法實現快速的響應和模糊搜索,一般針對這種情況都會采用全文檢索技術,而Elasticsearch(以下簡寫為ES)和Solr就是目前最常用的全文檢索引擎。下面就由小編為您帶來常用數據庫有哪些的相關介紹。
2008 年美國 Sun 公司花費 10 億美元收購 MySQL,一年后 Oracle 公司又花費 60 億美元收購了 Sun 公司,從此 Sun 公司的服務器、操作系統、MySQL 等產品線全部歸屬 Oracle 公司。
拉力·艾立森奉行的經營哲學是“競爭不過它,我就買了它”。競爭不過,說明競爭對手的產品更具優勢,所以收購它,從而變成自己的優勢。幾十年來,Oracle 從一家小型數據庫公司變成今天覆蓋硬件、平臺軟件、數據庫、中間件、應用軟件各個層次產品線的 IT 巨無霸,靠的就是美國的良好環境和總裁奉行的收購策略。
MySQL 數據庫占據中小型數據庫應用市場的半壁江山,在這塊市場,Oracle 數據庫明顯占下風,巔峰時世界上超過 70% 的網站后臺都采用 MySQL 數據庫。但是自從被 Oracle 公司收購后,MySQL 發展明顯趨緩,是繼續開源還是閉源,Oracle 公司一直沒下定論。于是 MySQL 的原班人馬陸續離開 Oracle 公司,另立爐灶,推出了 MariaDB 開源數據庫。
MariaDB 繼承了 MySQL 小巧精悍、簡潔高效、穩定可靠的特征,并與 MySQL 保持兼容。時至今日,已有 Google、Facebook 等知名企業把應用從 MySQL 切換到了 MariaDB 上,各種 Linux 發行版的操作系統默認數據庫都開始采用 MariaDB;而 Apple 公司反應更快,當 Oracle 公司收購 Sun 公司時,就切換到了 PostgreSQL 數據庫。
截至 2014 年年末的數據庫綜合排名,MySQL 繼續位居第二名,但是其表現出來的頹勢較明顯,而 MariaDB 卻具備強勁的生命力。
整個安裝包大約 200MB,幾乎能在所有的操作系統上安裝和運行,與 Oracle 數據庫、SQL Server、DB2 等商業數據庫動輒好幾張光盤相比,算是短小精悍了。
另外,也可以從這個網站下載數據庫的源代碼。對于非數據庫型的 SaaS 云提供商來說,云端采用 MariaDB 是最好的選擇,而且可以輕松搭建數據庫集群。
PostgreSQL 能被蘋果公司大量使用并替換早期的 MySQL 數據庫,說明其一定有不俗的表現。在 2014 年年末的數據庫排行榜上,PostgreSQL 位居第四位,號稱世界上最先進的、最安全的開源數據庫,也是面向對象的關系數據庫。
華為內部局域網接入控制系統 SPES 也采用 PostgreSQL 數據庫,在 Linux 操作系統上運行,極少出問題。經過十多年的磨礪,如今 PostgreSQL 數據庫具備如下特點:
PostgreSQL 數據庫同時具備很多眾多令人振奮的優點,比如在線備份、數據域、表分區、表空間、嵌套事務、時刻點恢復、兩段式提交、多版本并發控制、子查詢等。
在 PostgreSQL 中,數據庫大小沒有限制,表大小上限為 32TB,一條記錄的大小上限為 1.6TB,字段大小上限是 1GB,一個表包含的記錄數沒有限制,一條記錄的字段數上限為 1600 個,一個表上創建的索引數目沒有限制。
另外,SQLite 是一個非常小型的 ACID 兼容的關系數據庫,適合嵌入式系統。
InfluxDB 是一個開源的時間序列數據庫,能應付極高的寫和查詢并發數,主要用于存儲大規模的時間戳數據(每條記錄自動附加時間戳),如 DevOps 監控數據、應用系統運行指標數據、物聯網感應器采集的數據及實時分析的結果數據等。InfluxDB 具備如下特征:
對于一個具體的時間序列應用來說,除存儲外,還需要集成數據采集、可視化和告警功能。為此,InfluxData 社區相應提供了 Telegraf(數據采集)、Chronograf(數據可視化)、Kapacitor(告警)三個開源項目,再加上 InfluxDB,能部署成一個完整的時間序列應用系統(簡稱為 TICK)。這四者的關系如圖 1 所示。
Redis 是遵循 BSD 開源協議的存儲系統,數據存儲在內存中,因此具備極高的性能,可用作數據庫、緩存和消息中間件。Redis 支持多種類型的數據結構,如字符串、哈希、列表、集合、帶范圍查詢的有序集合、位圖、hyperloglogs 和帶半徑查詢的地理空間索引。
Redis 內置了復制、腳本語言編程、最近最少使用(LRU)淘汰、事務以及不同級別的磁盤持久化等功能,通過 Redis Sentinel 和集群自動分區機制實現高可用性。
Redis 采用 C 語言編寫,能運行在 Windows、MacOS X、Linux、Solaris 等操作系統上,不過 Linux 是其最佳的運行平臺,無須第三方依賴,它提供了最廣泛的編程語言接口。
MongoDB 是排名第一的文檔數據庫,屬于 NoSQL 大類,誕生于 2009 年,正好是云計算興起的前夜。MongoDB 采用 C++ 語言開發,能運行在 Windows、MacOS X、Linux、Solaris 操作系統上,提供了絕大部分計算機語言的編程接口。保存在 MongoDB 中的一條記錄稱為一個文檔,類似 JSON 語法。
從上面的例子可以看出,一個文檔就是“鍵:值”對的集合。MongoDB 的主要優勢包括:高性能、富查詢語言(支持 CRUD、數據聚合、文本搜索和地理空間查詢)、高可靠性、自動伸縮架構、支持多存儲引擎。MongoDB 適合文檔存儲、檢索和加工的應用場合,如大數據分析。
常用數據庫
Neo4j 是一個用 Java 語言開發的圖數據庫,它將結構化數據存儲在由“點—邊”組成的網絡(數學術語叫“圖”)上而不是表中。與關系數據庫相比,圖數據庫擅長處理大量復雜、互連接、低結構化的數據。這些數據變化迅速,需要頻繁查詢,如果使用關系數據庫,那么這些查詢會導致大量的表連接,因此會產生性能上的問題。
Neo4j 重點解決了擁有大量連接的傳統關系數據庫在查詢時出現的性能衰退問題。Neo4j 還提供了非常快的圖算法、推薦系統和 OLAP 風格的分析,而這一切在目前的關系數據庫系統中都無法實現。Neo4j 提供了廣泛使用的 REST 接口,能夠方便地集成到基于 Java、PHP、.NET 和 JavaScript 的環境里。
創建了兩個節點:變量“e1”和“e2”,標簽“員工”,屬性“{……}”。
創建了一條邊,最終形成下圖,如圖 2 所示。
創建了一條邊,最終形成下圖,如圖 2 所示。
Elasticsearch 是一個高度可擴展的開源全文搜索和分析引擎,用于存儲、搜索和近乎實時地分析大規模數據。
Elasticsearch 常被人們用于構建具備復雜搜索功能的應用系統,比如維基百科和優步的搜索,再比如網店中搜索商品、商業智能、日志收集與分析、價格告警等。利用 Elasticsearch 實現的數據采集、存儲和可視化套件 ELK(Elasticsearch、Logstash、Kibana)在日志分析領域應用最為廣泛。
大概 20 年前,人們提出了后關系型數據庫的概念,目前已有不少產品,其中由 InterSystems 公司開發的 Caché 是后關系型數據庫中的領頭羊,它提供 3 種方式訪問數據:對象訪問、SQL 訪問、直接對多維數據數組訪問,而且 3 種訪問方式能夠并發訪問同一數據。多維數據結構和多種數據庫訪問方式構成了后關系型數據庫的基礎。
Caché 數據庫具備如下一些特點:
Caché 數據庫在同等條件下查詢相同數據,比 Oracle 等普通數據庫要快 7~20 倍。
存儲空間可能節省 2/3,而基于 Caché 的應用程序,比原來基于關系型數據庫的應用程序運行有可能快 20 倍。
Caché 數據庫支持標準 SQL 語句,因此不太熟悉 M 語言的用戶依然可以輕松對數據庫中的數據進行操作。
Caché 數據庫支持 ODBC 標準接口,因此在與其他系統進行數據交換時非常容易,同時 Caché 亦可以將數據輸出為文本文件格式,以供其他系統訪問調用。
Caché 數據庫能夠在真正意義上實現 3 層結構,實現真正的分布式服務,便于做橫向擴張。
Caché 數據庫是真正的對象型數據庫,開發時用戶可直接用數據庫定義自己想要的對象,然后再在其他開發工具中調用該對象的方法和屬性即可完成開發工作,非常方便。
Caché 數據庫提供自帶的 Web 開發工具,使用、維護非常方便,符合當今軟件業發展的趨勢。
Caché 數據庫的價格比 Oracle 數據庫要便宜很多。
Caché 數據庫在歐美的醫療系統使用最為普遍,被醫療界公認為首選的數據庫,國內中山大學第三附屬醫院、深圳南山醫院、北京安貞醫院等也采用 Caché 數據庫
Cassandra 是在 Google 的 Bigtable 基礎上發展起來的 NoSQL 數據庫,由臉譜于 2008 年用 Java 語言開發,目前被貢獻給 Apache 基金會。Cassandra 被稱為“列數據庫”,這里的“列”不是指關系數據庫中一個表中的列,而是由“鍵—值”對組成的列表(語法與 Python 語言中的列表相同),如:
Cassandra 中一行數據語法是“一行的鍵={列,列,…}”,一行可包含上百萬列,比如:
Cassandra 中的列族(ColumnFamily)格式是“列族名={若干行}”,一個列族可包含幾十億行,例如:
一個 Cassandra 運行實例管理很多鍵空間(Keyspace),Keyspace 相當于關系數據庫管理系統中的數據庫,一個鍵空間包含很多列族。鍵空間、列族、行、列的關系如圖 3 所示。
所以,Cassandra 中的尋址是一個四維或者五維哈希表:OpenStack 生態中的 HBase 也是列數據庫,目前排名第二。
對于如何選擇一門編程語言來學習,一般要根據你想開發什么類型的軟件決定,如果開發的是嵌入式軟件或者操作系統之類的,一般選擇C,如果做的是除了嵌入式和操作系統以外的一些比較基礎的軟件,例如數據庫,圖形,音頻視頻,游戲引擎一般用c++,一般的應用軟件比較常用的有JAVA,c#。以上就是小編為您帶來常用數據庫有哪些的相關介紹,希望對您有所幫助。
[免責聲明]
文章標題: 常用數據庫有哪些?
文章內容為網站編輯整理發布,僅供學習與參考,不代表本網站贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請及時溝通。發送郵件至36dianping@36kr.com,我們會在3個工作日內處理。