自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Apache Ignite 內(nèi)存速度級的分布式數(shù)據(jù)庫

開源
Apache Ignite 是一個專注于分布式內(nèi)存計算的開源項目。Ignite 將數(shù)據(jù)存儲在內(nèi)存中,分布在提供快速數(shù)據(jù)訪問的多個節(jié)點上。將數(shù)據(jù)異步傳播到持久層的選項是一個額外的優(yōu)勢。

介紹

企業(yè)正在以巨大的速度積累數(shù)據(jù),需要大量的存儲空間。由于要存儲和處理數(shù) TB 的數(shù)據(jù),開發(fā)人員常常會陷入困境。 Apache Ignite 以內(nèi)存為中心的分布式數(shù)據(jù)庫、緩存和處理平臺,用于事務(wù)性、分析性和流式工作負(fù)載,可以在PB級數(shù)據(jù)上享有內(nèi)存級的性能。Ignite 為應(yīng)用和不同的數(shù)據(jù)源之間提供一個高性能、分布式內(nèi)存中數(shù)據(jù)組織管理的框架。

Ignite的一個突出特性是完全支持分布式的SQL關(guān)聯(lián),Ignite支持并置和非并置的數(shù)據(jù)關(guān)聯(lián)。并置時,關(guān)聯(lián)是在每個節(jié)點的可用數(shù)據(jù)集上執(zhí)行的,而不需要在網(wǎng)絡(luò)中移動大量的數(shù)據(jù),這種方式在分布式數(shù)據(jù)庫中提供了最好的擴(kuò)展性和性能。Ignite和其他關(guān)系型數(shù)據(jù)庫具有相似的行為,但是在處理約束和索引方面略有不同。Ignite支持一級和二級索引,但是只有一級索引支持唯一性。在持久化方面,Ignite固化內(nèi)存在內(nèi)存和磁盤中都能良好的工作,但是持久化到磁盤是可以禁用的,一般將Ignite作為一個內(nèi)存數(shù)據(jù)庫來使用。

發(fā)展史

特性

  • 多層存儲:Apache Ignite 多層存儲實現(xiàn)了一種尖端的存儲架構(gòu),它將內(nèi)存的性能優(yōu)勢與基于磁盤的數(shù)據(jù)庫的可擴(kuò)展性和持久性優(yōu)勢相結(jié)合,存儲模式包括內(nèi)存模式、內(nèi)存+外部數(shù)據(jù)庫模式、多層數(shù)據(jù)庫模式
  • ACID兼容:存儲在Ignite中的數(shù)據(jù),在內(nèi)存和磁盤上是同時支持ACID的,使Ignite成為一個強(qiáng)一致的系統(tǒng),Ignite可以在整個網(wǎng)絡(luò)的多臺服務(wù)器上保持事務(wù)。
  • SQL支持:Ignite提供了完整的SQL、DDL和DML的支持,可以使用純SQL而不用寫代碼與Ignite進(jìn)行交互,這意味著只使用SQL就可以創(chuàng)建表和索引,以及插入、更新和查詢數(shù)據(jù)。有這個完整的SQL支持,Ignite就可以作為一種分布式SQL數(shù)據(jù)庫。
  • 鍵-值:Ignite的內(nèi)存數(shù)據(jù)網(wǎng)格組件是一個完整的事務(wù)型分布式鍵值存儲,它可以在有幾百臺服務(wù)器的集群上進(jìn)行水平擴(kuò)展。在打開持久化時,Ignite可以存儲比內(nèi)存容量更大的數(shù)據(jù),并且在整個集群重啟之后仍然可用。
  • 并置處理:大多數(shù)傳統(tǒng)數(shù)據(jù)庫是以客戶機(jī)-服務(wù)器的模式運(yùn)行的,這意味著數(shù)據(jù)必須發(fā)給客戶端進(jìn)行處理,這個方式需要在客戶端和服務(wù)端之間進(jìn)行大量的數(shù)據(jù)移動,通常來說不可擴(kuò)展。而Ignite使用了另外一種方式,可以將輕量級的計算發(fā)給數(shù)據(jù),即數(shù)據(jù)的并置計算,從結(jié)果上來說,Ignite擴(kuò)展性更好,并且使數(shù)據(jù)移動最小化。
  • 可擴(kuò)展性和持久性:Ignite是一個彈性的、可水平擴(kuò)展的分布式系統(tǒng),它支持按需地添加和刪除節(jié)點,Ignite還可以存儲數(shù)據(jù)的多個副本,這樣可以使集群從部分故障中恢復(fù)。如果打開了持久化,那么Ignite中存儲的數(shù)據(jù)可以在集群的完全故障中恢復(fù)。Ignite集群重啟會非常快,因為數(shù)據(jù)從磁盤上獲取,瞬間就具有了可操作性。從結(jié)果上來說,數(shù)據(jù)不需要在處理之前預(yù)加載到內(nèi)存中,而Ignite會緩慢地恢復(fù)內(nèi)存級的性能。
  • 機(jī)器學(xué)習(xí):Ignite的機(jī)器學(xué)習(xí)(ML)是一套簡單、可擴(kuò)展以及高效的工具,可以構(gòu)建可預(yù)測的機(jī)器學(xué)習(xí)模型,而不需要昂貴的數(shù)據(jù)傳輸。
  • 多語言支持:Ignite是以Java語言為主進(jìn)行開發(fā)的,因此可以在JVM支持的任何操作系統(tǒng)和架構(gòu)上部署和運(yùn)行

場景

三種主要使用場景

  • 應(yīng)用程序加速和橫向擴(kuò)展:使用 Ignite 作為內(nèi)存緩存或部署在一個或多個外部數(shù)據(jù)庫上的內(nèi)存數(shù)據(jù)網(wǎng)格,將現(xiàn)有應(yīng)用程序加速 100 倍。
  • 用于HTAP 工作負(fù)載的分布式數(shù)據(jù)庫:通過將 Ignite 用作可擴(kuò)展超出可用內(nèi)存容量的數(shù)據(jù)庫,構(gòu)建支持事務(wù)和分析工作負(fù)載的應(yīng)用程序。
  • 數(shù)字集成中心:創(chuàng)建一個高級平臺架構(gòu),將多個后端系統(tǒng)和數(shù)據(jù)庫聚合到一個低延遲和共享的數(shù)據(jù)存儲中。

存儲模式

Apache Ignite 多層存儲實現(xiàn)了一種尖端的存儲架構(gòu),它將內(nèi)存的性能優(yōu)勢與基于磁盤的數(shù)據(jù)庫的可擴(kuò)展性和持久性優(yōu)勢相結(jié)合,存儲模式包括內(nèi)存模式、內(nèi)存+外部數(shù)據(jù)庫模式、多層數(shù)據(jù)庫模式

內(nèi)存模式

基于內(nèi)存計算解決方案的所有優(yōu)勢。以最低延遲和最高吞吐量存儲和處理數(shù)據(jù),整個數(shù)據(jù)集僅在內(nèi)存層中可用,為了避免節(jié)點故障,建議在集群中至少保留一份數(shù)據(jù)的備份副本,適用于數(shù)據(jù)緩存、高性能計算、Web 會話緩存、實時處理連續(xù)數(shù)據(jù)流

內(nèi)存+外部數(shù)據(jù)庫模式

通過將 Ignite 部署為現(xiàn)有基于磁盤的數(shù)據(jù)庫和后端系統(tǒng)之上的緩存層來加速和卸載現(xiàn)有數(shù)據(jù)庫。以將 Ignite 用作現(xiàn)有數(shù)據(jù)庫(例如 RDBMS 或 NoSQL 數(shù)據(jù)庫,例如 Apache Cassandra 或 MongoDB)之上的緩存層,Ignite 提供與 Apache Cassandra 的開箱即用集成。對于其他沒有現(xiàn)成集成的 NoSQL 數(shù)據(jù)庫,您可以提供自己的CacheStore接口實現(xiàn)。

多層數(shù)據(jù)庫模式

通常,內(nèi)存緩存和數(shù)據(jù)庫提供有限的持久性能力。Ignite持久性沒有任何限制,超出可用內(nèi)存容量并在重啟時跳過內(nèi)存預(yù)熱,100% 的數(shù)據(jù)被持久化到 Ignite 原生持久化,相同數(shù)量或更少的數(shù)據(jù)緩存在內(nèi)存中。緩存的數(shù)據(jù)越多,性能越快。應(yīng)用程序可以查詢內(nèi)存中和僅磁盤的記錄,透明地擴(kuò)展到可用內(nèi)存容量之外。由于 Ignite 可以從磁盤提供數(shù)據(jù),因此無需在重新啟動時進(jìn)行內(nèi)存預(yù)熱。

分布式 SQL

對 SQL 的原生支持讓可以像使用標(biāo)準(zhǔn) SQL 數(shù)據(jù)庫一樣使用 Ignite,Apache Ignite自帶JDBC 驅(qū)動程序、ODBC 驅(qū)動程序以及支持Java、C#、C++、Python 和其他編程語言的sql API,Ignite支持所有的DML指令,包括SELECT、UPDATE、INSERT和DELETE,它還實現(xiàn)了一個與分布式系統(tǒng)有關(guān)的DDL指令的子集。Ignite的一個突出特性是完全支持分布式的SQL關(guān)聯(lián),Ignite支持并置和非并置的數(shù)據(jù)關(guān)聯(lián)。并置時,關(guān)聯(lián)是在每個節(jié)點的可用數(shù)據(jù)集上執(zhí)行的,而不需要在網(wǎng)絡(luò)上移動大量的數(shù)據(jù),這種方式在分布式數(shù)據(jù)庫中提供了最好的擴(kuò)展性和性能

分布式 ACID

Ignite是一個強(qiáng)一致的平臺,完全支持分布式ACID事務(wù),內(nèi)存和磁盤層,都提供一樣的一致性保證。Ignite的事務(wù),可以跨越多個節(jié)點,多個緩存(或者說表)以及多個分區(qū)。對于應(yīng)用來說,樂觀鎖和悲觀鎖都是可用的,樂觀模式還支持無死鎖事務(wù),可以在業(yè)務(wù)代碼層面避免分布式死鎖。

Ignite采用二階段提交協(xié)議,在分布式系統(tǒng)中,事務(wù)可能跨越多個節(jié)點,顯然,要保證所有參與節(jié)點的數(shù)據(jù)一致性是一個很大的挑戰(zhàn)。比如,如果一個節(jié)點故障,故障節(jié)點的事務(wù)就不能完整提交,在這類場景中,要保證數(shù)據(jù)一致性,一個廣泛使用的方法是二階段提交協(xié)議(2PC)。Ignite帶來了二階段提交協(xié)議的最快實現(xiàn),另外,如果事務(wù)只涉及一個分區(qū)或者一個節(jié)點,Ignite會使用一個更快的一階段提交協(xié)議。在一個事務(wù)中,如果數(shù)據(jù)發(fā)生了變化,那么在變化提交之前,Ignite會在本地事務(wù)映射中保存一個事務(wù)的狀態(tài),提交時,數(shù)據(jù)會被發(fā)送到相關(guān)的遠(yuǎn)程節(jié)點,其中只有持有相關(guān)數(shù)據(jù)主副本的節(jié)點,才會參與事務(wù)。

一致性和Ignite持久化

如果使用了Ignite的原生持久化,那么所有的更新都會寫入預(yù)寫日志(WAL)文件中來保證一致性,即使事務(wù)執(zhí)行期間集群或者某個節(jié)點故障,也沒有問題。WAL的目的是,以附加模式將更新傳播到磁盤,這是將數(shù)據(jù)持久化到磁盤的最快方式,如果集群或者某個節(jié)點故障,WAL提供了一個故障場景的恢復(fù)機(jī)制,集群總是可以恢復(fù)到最近成功提交的事務(wù)狀態(tài)。

一致性和第三方持久化

如果Ignite作為緩存層運(yùn)行于第三方數(shù)據(jù)庫之上,比如RDBMS,Ignite仍然會保證緩存數(shù)據(jù)和外部數(shù)據(jù)的事務(wù)一致性。比如,如果RDBMS作為持久化層,Ignite會在將提交消息發(fā)給相關(guān)的集群節(jié)點之前,將事務(wù)寫入數(shù)據(jù)庫,這樣的話,如果在數(shù)據(jù)庫層發(fā)生事務(wù)故障,Ignite仍然會將回滾消息發(fā)給所有的相關(guān)節(jié)點,從而保持兩者之間的數(shù)據(jù)一致性

架構(gòu)

  • 持久化層:Ignite同時支持原生持久化和用第三方存儲做持久化,比如RMDBMS,HDFS等。雖然Ignite有以內(nèi)存為中心的存儲,但是畢竟內(nèi)存中數(shù)據(jù)在節(jié)點出現(xiàn)故障的時候都有丟失的可能性。 因此持久化層為Ignite提供了故障恢復(fù)的能力。另外有了持久化能力,可以讓冷熱數(shù)據(jù)更合理使用內(nèi)存。比如在內(nèi)存足夠情況下,數(shù)據(jù)可以全部加載到內(nèi)存中。 而當(dāng)內(nèi)存緊張時,可以只加載熱數(shù)據(jù)至內(nèi)存中,冷數(shù)據(jù)就留在硬盤上。
  • Ignite內(nèi)存存儲層:這一層可以算是Ignite的核心層了。數(shù)據(jù)可以通過不同分區(qū),復(fù)制模式分布在Ignite集群所有節(jié)點,部分節(jié)點或者本地節(jié)點。通過數(shù)據(jù)分區(qū)和復(fù)制,比如1主多備的方式,可以提高數(shù)據(jù)的可用性,即便主數(shù)據(jù)節(jié)點故障后,集群中的備數(shù)據(jù)節(jié)點可以切換為主節(jié)點繼續(xù)提供讀寫服務(wù)。 同時備節(jié)點也可以作為只讀節(jié)點使用,提高數(shù)據(jù)讀操作的吞吐量。Ignite還利用Java堆外內(nèi)存存儲數(shù)據(jù)和索引,減少了JVM的垃圾回收次數(shù)和時間,提供了更高效的操作。
  • API接口層: 豐富多樣的接口支撐Ignite向上提供了諸如分布式數(shù)據(jù)庫,數(shù)據(jù)網(wǎng)格和計算網(wǎng)格的能力。Key/Value+transaction,可以把Ignite當(dāng)做和Redis,Memcached一樣的緩存使用。 而對SQL ANSI-99的兼容,有可以把Ignite當(dāng)做一個分布式數(shù)據(jù)庫來用。 除了數(shù)據(jù)能力,Ignite還允許你通過Compute Grid的接口提交計算任務(wù),充分利用集群的計算資源。Ignite還支持把計算任務(wù)部署在和計算數(shù)據(jù)所在的相同節(jié)點上,減少網(wǎng)絡(luò)傳輸和數(shù)據(jù)的序列化開銷,提高計算效率。 流處理,機(jī)器學(xué)習(xí)網(wǎng)格,服務(wù)網(wǎng)格,消息隊列等,Ignite也同時提供支持。

結(jié)論

Apache Ignite 是一個專注于分布式內(nèi)存計算的開源項目。Ignite 將數(shù)據(jù)存儲在內(nèi)存中,分布在提供快速數(shù)據(jù)訪問的多個節(jié)點上。將數(shù)據(jù)異步傳播到持久層的選項是一個額外的優(yōu)勢。此外,與各種數(shù)據(jù)庫集成的能力也使 Ignite 成為開發(fā)人員使用它進(jìn)行數(shù)據(jù)庫緩存的簡單選擇?!pache Ignite整體來說,它基本把現(xiàn)在分布式的一些概念都集成了,包含分布式存儲、分布式計算、分布式服務(wù)、流式計算等等。而且,它對Java語言的支持,與JDK能夠很好的整合,能夠很友好的兼容JDK的現(xiàn)有API,當(dāng)你開啟一個線程池,你不需要關(guān)系是本地線程池還是分布式線程池,只管提交任務(wù)就行。Apache Ignite在與RDBMS、Hadoop、Spark、Kafka等傳統(tǒng)關(guān)系型數(shù)據(jù)庫和主流大數(shù)據(jù)套件的集成,提供了非常靈活好用的組件API。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2018-03-02 15:17:16

分布式數(shù)據(jù)庫MySQL

2012-09-20 09:58:11

分布式分布式數(shù)據(jù)庫數(shù)據(jù)庫

2021-12-20 15:44:28

ShardingSph分布式數(shù)據(jù)庫開源

2023-12-05 07:30:40

KlustronBa數(shù)據(jù)庫

2023-07-31 08:27:55

分布式數(shù)據(jù)庫架構(gòu)

2023-07-28 07:56:45

分布式數(shù)據(jù)庫SQL

2023-11-14 08:24:59

性能Scylla系統(tǒng)架構(gòu)

2022-03-10 06:36:59

分布式數(shù)據(jù)庫排序

2020-06-23 09:35:13

分布式數(shù)據(jù)庫網(wǎng)絡(luò)

2023-03-07 09:49:04

分布式數(shù)據(jù)庫

2024-09-09 09:19:57

2022-08-01 18:33:45

關(guān)系型數(shù)據(jù)庫大數(shù)據(jù)

2022-06-09 10:19:10

分布式數(shù)據(jù)庫

2011-05-19 09:18:48

分布式數(shù)據(jù)庫

2024-03-11 08:57:02

國產(chǎn)數(shù)據(jù)庫證券

2022-12-14 08:00:00

數(shù)據(jù)庫分布式數(shù)據(jù)庫隔離

2023-12-11 09:11:14

TDSQL技術(shù)架構(gòu)

2011-03-24 17:15:06

分布式數(shù)據(jù)庫系統(tǒng)

2024-07-25 07:55:37

2018-05-25 13:12:10

UCloud數(shù)據(jù)庫UDDB
點贊
收藏

51CTO技術(shù)棧公眾號