【編者按】飛速增加的數據須要大量存儲,對這些數據的管理也不是一件容易的事。但相比於存儲和管理,如何處理數據纔是開發人員真正的挑戰。對於TB級別數據的存儲和處理一般會讓開發人員陷入速度、可擴展性和開銷的矛盾困境中。近日,Dmitriy Setrakyan 在 Dzone 上撰文,爲你們介紹了新一代數據庫緩存系統 Apache Ignite,由 OneAPM 工程師編譯。html
如下爲譯文sql
將數據存儲在緩存中可以顯著地提升應用的速度,由於緩存可以下降數據在應用和數據庫中的傳輸頻率。Apache Ignite 容許用戶將經常使用的熱數據儲存在內存中,它支持分片和複製兩種方式,讓開發者能夠均勻地將數據分佈式到整個集羣的主機上。同時,Ignite 還支撐任何底層存儲平臺,無論是 RDBMS、NoSQL,又或是 HDFS。數據庫
在集羣配置好以後,數據集增長只需在 Ignite 集羣中增長節點而不須要重啓整個集羣。節點數目能夠無限增長,因此 Ignite 的擴展性是無窮的。在 Ignite 的配置上有下面這幾個選項可供選擇:apache
Write-Through 和 Read-Through緩存
在 Write-Through 模式中,緩存中的數據更新會被同步更新到數據庫中。 Read-Through 則是指請求的數據在緩存中不可用時,會自動從數據庫中拉取。app
Write-Behind Caching異步
Ignite 還提供了一種叫作 Write-Behind Caching 的數據庫異步更新模式。默認狀況下, Write-Through 中每一次更新都會對數據庫發起一次請求。若是使用 Write-Behind Caching 後寫,對緩存的更新會整合成批次而後再發送給數據庫。這對改刪頻繁的應用來講能夠達到至關的性能提高。分佈式
自動化持久數據函數
Ignite 提供了易用的 schema 映射工具,從而系統能夠自動地與數據庫整合。這一工具能夠自動地鏈接數據庫,並生成全部須要的 XML OR-mapping 配置以及 Java 域模型 POJOs。工具
SQL 查詢
查詢 Ignite 緩存很簡單,使用的就是標準的 SQL。Ignite 支持全部的 SQL 函數、聚合和 group 操做,甚至支持分佈式 SQL JOINs。下面 Ignite 中一個 SQL 查詢示例:
IgniteCache<Long, Person> cache = ignite.cache("mycache"); // ‘Select’ query to concatenate the first and last name of all persons. SqlFieldsQuery sql = new SqlFieldsQuery( "select concat(firstName, ' ', lastName) from Person"); // Execute the query on Ignite cache and print the result. try (QueryCursor<List<?>> cursor = cache.query(sql)) { for (List<?> row : cursor) System.out.println("Full name: " + row.get(0)); }
小結
Apache Ignite 是一個聚焦分佈式內存計算的開源項目,它在內存中儲存數據,並分佈在多個節點上以提供快速數據訪問。此外,可選地將數據同步到緩存層一樣是一大優點。最後,能夠支持任何底層數據庫存儲一樣讓 Ignite 成爲數據庫緩存的首先。
想要了解更多信息、文檔、示例,請移步 Apache Ignite 官網。
原文連接:Apache Ignite for Database Caching
OneAPM 是應用性能管理領域的新興領軍企業,能幫助企業用戶和開發者輕鬆實現:緩慢的程序代碼和 SQL 語句的實時抓取。想閱讀更多技術文章,請訪問 OneAPM 官方博客