2013-10-22 64 views
0

我正在開發一個數據存儲應用程序。所有複製,路由和數據檢索類型的業務都在我的應用程序中處理。到目前爲止,數據存儲在內存中。現在,我想使用Cassandra存儲引擎將內存中的數據刷入硬盤。我不確定這是否是一個正確的方法。如何僅使用Cassandra節點上的存儲引擎?

我的問題: 我可以只使用Cassandra數據存儲引擎嗎?我不想使用Cassandra作爲一個整體系統(在這種情況下,我應該爲每個節點運行一個獨立的Cassandra,並且我的應用程序的行爲好像是Cassandra的client。這個想法會在節點上放置很多節點,因爲它會增加不必要的級別在我的應用程序和存儲引擎之間)。

我有我自己的複製,環和路由代碼。我只需要卡桑德拉的節點存儲設施。

+0

卡桑德拉是一個「存儲引擎」。你什麼意思?你的意思是你想要在「嵌入」模式下運行Cassandra,所以用戶不必啓動和控制Cassandra進程並編寫Cassandra配置文件? – Raedwald

+0

是的。我想在我的應用程序中嵌入cassandra。我有我自己的複製,環和路由機制。我希望cassandra只將數據存儲在每個節點的本地存儲中。這就是我想要的。我看着cassandra的源代碼,我找到一個名爲「db」的目錄你認爲它包含必要的類來存儲數據嗎? – celik

+0

我的意思是我想導入Cassandra作爲一個庫,並使用它的技能。在我的情況下,只有它的數據庫功能。 – celik

回答

1

Cassandra開發人員並沒有竭盡全力將Cassandra作爲嵌入式庫而不是獨立產品。與Apache Derby相比,它非常易於嵌入。但有可能這樣做;我這樣做了,這不是一項艱鉅的任務。

你將不得不研究源代碼來找到你需要的位。我不知道你感興趣的具體部分,但要找到它們,你將不得不瞭解使用這些位的代碼的某些部分,但這些部分對你沒有直接的興趣。

爲了提供一個方便的API並提供一個配置界面,您可能需要用修改後的版本替換一些Cassandra類。沒有良好的版本和版本控制系統,這是不切實際的。我使用Maven構建,發現它的Shade插件有助於創建一個包含大部分(但不是全部)Cassandra類的JAR,並有選擇地替換某些類。