最近我問了很多Java開發(fā)人員關(guān)于最近12個月內(nèi)他們使用的是什么大數(shù)據(jù)工具。
這是一個系列,主題為:
語言 web框架 應(yīng)用服務(wù)器 SQL數(shù)據(jù)訪問工具 SQL數(shù)據(jù)庫 大數(shù)據(jù) 構(gòu)建工具 云提供商
今天我們就要說說大數(shù)據(jù)。根據(jù)維基百科,大數(shù)據(jù)是數(shù)據(jù)集的一個廣義的術(shù)語,并且該數(shù)據(jù)集是如此龐大和復(fù)雜,以致于傳統(tǒng)的數(shù)據(jù)處理應(yīng)用程序無法勝任。
在許多情況下,使用SQL數(shù)據(jù)庫用于存儲/檢索數(shù)據(jù)就足夠了。但在另一些情況下,要么SQL數(shù)據(jù)庫規(guī)模不夠,要么還有更好的工具。這一切都取決于使用情況。
現(xiàn)在讓我們來討論一下存儲/處理數(shù)據(jù)用的不同的非SQL工具——NoSQL數(shù)據(jù)庫,內(nèi)存緩存,全文搜索引擎,實時流,圖形數(shù)據(jù)庫,等等。
MongoDB—— 一種流行的,跨平臺的面向文檔的數(shù)據(jù)庫。
Elasticsearch——專為云而構(gòu)建的分布式REST風(fēng)格搜索引擎。
Cassandra——一個開源的分布式數(shù)據(jù)庫管理系統(tǒng),最初由Facebook開發(fā),被設(shè)計用來處理橫跨多個商用服務(wù)器的大量數(shù)據(jù),提供了無單點故障的高度可用性。
Redis—— 一個開源的(BSD許可),內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲,作為數(shù)據(jù)庫、緩存和消息代理使用。
Hazelcast——基于Java的開源內(nèi)存數(shù)據(jù)網(wǎng)格。
EHCache——一種被廣泛使用的開源Java分布式緩存,用于通用緩存、Java EE和輕量級容器。Ehcache相關(guān)介紹
Hadoop——用Java編寫的一個框架,用于分布式存儲和對在計算機集群上的超大型數(shù)據(jù)集的分布式處理。
Solr——一個開源的企業(yè)搜索平臺,用Java編寫的,來自于Apache Lucene項目。
Spark——Apache Software Foundation中最活躍的項目,一個開源的集群計算框架。
Memcached—— 一個通用的分布式內(nèi)存緩存系統(tǒng)。
Apache Hive——提供了Hadoop之上類似于SQL的層。
Apache Kafka—— 一個高通量、分布式的發(fā)布-訂閱式消息系統(tǒng),最初開發(fā)在LinkedIn上。
Akka—— 一個工具包和運行時,用于在JVM上構(gòu)建高度并行的、分布式的、有彈性的消息驅(qū)動的應(yīng)用程序。
HBase—— 一個開源的,非關(guān)系型的,分布式數(shù)據(jù)庫,在谷歌的BigTable后建模,用Java編寫,并運行在HDFS上。
Neo4j——用Java實現(xiàn)的開源圖形數(shù)據(jù)庫。
CouchBase——一個開源的、面向文檔的分布式NoSQL數(shù)據(jù)庫,特別為了交互式應(yīng)用而優(yōu)化。
Apache Storm——開源的分布式實時計算系統(tǒng)。
CouchDB——使用JSON來存儲數(shù)據(jù)的面向文檔的開源NoSQL數(shù)據(jù)庫。
Oracle Coherence—— 一個內(nèi)存的數(shù)據(jù)網(wǎng)格解決方案,通過提供快速訪問常用數(shù)據(jù)的渠道,使得企業(yè)可預(yù)測地擴展關(guān)鍵任務(wù)應(yīng)用程序。
Titan—— 一個可擴展的圖形數(shù)據(jù)庫,優(yōu)化的目的在于存儲和查詢包含數(shù)千億頂點和邊的圖形,分布在多機集群。
Amazon DynamoDB——一個快速、靈活、完全管理的NoSQL數(shù)據(jù)庫服務(wù),用于在任何規(guī)模需要一致的、個位數(shù)毫秒延遲的所有應(yīng)用程序。
Amazon Kinesis—— 用于在AWS上的流數(shù)據(jù)的實時平臺。
Datomic—— 一個用Clojure寫的完全事務(wù)式的,支持云的,分布式數(shù)據(jù)庫。