2012-02-20 72 views
0

我打算開發一個服務器應用程序來支持和處理hign卷數據遷移。如何使用java管理文件系統上的索引

想象一下,這是一個基於隊列的平臺,其中客戶端程序(從內容管理系統提取元數據的源代理程序)將向服務器發送數據包(大小約爲1KB),服務器將這些數據包存儲在其指定的文件系統。

服務器將根據來自數據包的一些頭信息對數據包進行分類,並且應該能夠在使用某些頭信息查詢時檢索並返回合適的數據包。

我們可以用標準的DBMS執行此,如果元數據被正確定義,但我的情況下,數據包報頭信息,將在改變了一段時間,我不想經常重新設計我的數據庫。

我在這裏看到的挑戰是有效地將數據包文件存儲在文件系統中(這樣它就不會影響文件服務器的性能),並且還維護一個索引信息,用於在請求時定位適當的數據包。

我正在考慮使用任何非DBMS開源框架(基於Java - NoSQL的?),可滿足上述目的。根據源存儲庫的容量,數據包的數量可以從幾千到幾百萬不等。

欣賞您的輸入。

+0

的數據量不應該是一個問題的情況下,但你找什麼類型的索引呢?通過數字標識或文本標籤簡單查找,或者什麼? – DNA 2012-02-20 23:06:00

+0

是的,簡單地查看每個數據包的一些標籤具有文件名,類型,大小等,是否有任何開源框架提供可搜索的索引存儲? – 2012-02-21 06:23:41

回答

0

面向列的數據庫,如Apache Cassandra可以處理這種情況 - 在卡桑德拉提供的索引是比較基本的,但很可能是爲您的方案確定。幾百萬個1KB值將是Cassandra的一個非常小的數據集,應該沒有問題。

其他元數據列可以與主要數據包一起寫入;列名可以在需要時即時決定,所以這將允許您的標題格式發展。

在卡桑德拉的數據被寫入磁盤中不可改變「SSTables」以有效的方式之前被收集在內存中的表。它也立即被寫入commitlog以提供耐用性死機等