1. 程式人生 > 其它 >Apache Ignite——新一代資料庫快取系統

Apache Ignite——新一代資料庫快取系統

【編者按】飛速增長的資料需要大量儲存,對這些資料的管理也不是一件容易的事。但相比於儲存和管理,如何處理資料才是開發人員真正的挑戰。對於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(責編/仲浩)