新一代數據庫緩存系統:Apache Ignite
Apache Ignite是一個通用的數據庫緩存系統,它不僅支持所有的底層數據庫系統,比如RDBMS、NoSQ和HDFS,還支持Write-Through和Read-Through、Write-Behind Caching等可選功能。
【編者按】飛速增長的數據需要大量存儲,對這些數據的管理也不是一件容易的事。但相比于存儲和管理,如何處理數據才是開發人員真正的挑戰。 對于TB級別數據的存儲和處理通常會讓開發人員陷入速度、可擴展性和開銷的矛盾困境中。近日,Dmitriy Setrakyan在Dzone上撰文,為大家介紹了新一代數據庫緩存系統Apache Ignite,由OneAPM工程師編譯。
以下為譯文
將數據存儲在緩存中能夠顯著地提高應用的速度,因為緩存能夠降低數據在應用和數據庫中的傳輸頻率。Apache Ignite允許用戶將常用的熱數據儲存在內存中,它支持分片和復制兩種方式,讓開發者可以均勻地將數據分布式到整個集群的主機上。同時,Ignite還支撐任何底層存儲平臺,不管是RDBMS、NoSQL,又或是HDFS。
在集群配置好之后,數據集增加只需在Ignite集群中增加節點而不需要重啟整個集群。節點數目可以無限增加,所以Ignite的擴展性是無窮的。在Ignite的配置上有下面這幾個選項可供選擇:
Write-Through和 Read-Through
在Write-Through模式中,緩存中的數據更新會被同步更新到數據庫中。 Read-Through則是指請求的數據在緩存中不可用時,會自動從數據庫中拉取。
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 (責編/仲浩)
</div> 來自:http://www.csdn.net/article/2015-09-28/2825815