2012-09-02 63 views
1

有誰知道是否有可用於基準測試的YCSB客戶端/驅動程序的實現?甚至是任何參考出版物/博客/文章/研究項目?YCSB for VoltDB

我們可以使用TPC工作負載進行VoltDB基準測試嗎?

非常感謝大家。

回答

3

VoltDB開發人員在這裏。

雖然有幾個用戶使用YCSB框架進行了基準測試,但沒有官方的YCSB驅動程序。 YCSB和VoltDB之間有一點阻抗不匹配。 YCSB旨在與範圍分區列存儲一起使用。 VoltDB是一個散列分片關係存儲器,對服務器端邏輯提供了豐富的支持。

這表現爲三個方面的問題。

首先是YCSB需要範圍掃描。如果您對密鑰分配有一定的瞭解,並且可以對密鑰進行規範化處理,以便有用地進行分組,則可以在散列分片存儲中執行高效的範圍掃描。下面是一個示例,說明如何在Cassandra中執行此操作。

這不是無法克服的,但它需要一些思考。

第二個問題是列存儲模型沒有很好地映射到關係數據模型。我可以通過將小地圖打包成一個blob單行並在添加/更新k/v對時將其重寫,從而獲得相當高的速度和內存效率。這就是Redis處理小地圖的方式。

對於具有多個/較大k/v對的較大密鑰,非規範化並允許數據庫管理內存是有意義的。通過一些工作,你可以創建一個存儲過程API來完成這個工作。

這不是無法克服的,但它也不是微不足道的。

第三個問題是YCSB是在所有邏輯都存在於客戶端並且服務器將不得不實現客戶端的所有數據的假設下編寫的。這意味着您針對VoltDB編寫的真實世界應用程序可能會快幾倍並且更節省空間。更快,因爲服務器端邏輯可以消除多次往返客戶端和更高的空間效率,因爲對事務的支持可以避免以日誌結構化方式編寫應用程序。

YCSB將爲您提供VoltDB如何執行和擴展的一般意義,但通過以適合關係數據模型的方式編寫您的應用程序並且Volt強調服務器端邏輯可以獲得非平凡的收益。

關於TPC-C。 VoltDB專爲TPC-C基準測試而設計。我說「like」是因爲它不是官方的,它在幾個方面與TPC-C不同。最重要的區別是,新訂單交易只使用一個倉庫(而不是所需的1-10個倉庫的一部分新訂單)。這非常重要,因爲它可以讓基準在沒有任何分佈式事務的情況下完美分解。

VoltDB TPC-C like基準測試不附帶發行版,但可在github上找到。

5

這裏的另一位VoltDB開發人員剛剛完成了一個YCSB驅動程序的實現過程。該驅動程序的源代碼可在GitHub上找到,網址爲https://github.com/VoltDB/voltdb/tree/master/tests/test_apps/ycsb

一個關於我們的實現細節的位:

YCSB與廣泛列的格式,映射字符串鍵數字字符串二進制K/v現場映射。創建一個能靈活處理這個問題的驅動程序,即可以處理任意YCSB配置的驅動程序,不允許直接使用固定的關係模式。爲了解決這個問題,我們採用了「小映射」類型的方法,也就是說,對於每個鍵,我們將所有字段壓縮到一個單一的塊中,這樣整個YCSB行就以k/v對處理。這確實暗示(軟)推定每行的字段數量相對較小(例如,< = 50),這對於現有的已發佈YCSB結果似乎是合理的。可以在存儲過程級別添加額外的邏輯來處理每行大量字段的情況,但考慮到基準的現有用法,這似乎是不必要的複雜性。

作爲進一步的說明,我們已經將「掃描」操作解釋爲「通過數據以某種確定性順序從該鍵開始的頁面」的含義。在現實世界中,數據意味着某種東西,並且可能(或者可能不)具有有意義的順序。在YCSB的世界裏,沒有什麼特別的理由可以選擇一種排序。因此,我們對VoltDB分區進行了人爲排序;結合由主鍵索引施加的分區內排序,這對數據集施加了總排序。對於有興趣的讀者,這個操作的客戶端實現使用了我們的一些例子中使用的「run everywhere」模式的一個有點新穎的變體。

我們測試的公佈結果可以在https://voltdb.com/blog/voltdb-in-memory-database-achieves-best-in-class-results-running-in-the-cloud-on-the-ycsb-benchmark-3/看到。正如我的同事所表明的那樣,雖然這個基準測試的結果非常強大,但它實際上低估了VoltDB的性能,因爲它沒有利用在存儲過程調用中將邏輯捆綁在一起可用的優化。