2011-11-25 46 views
0

我們有一個批量分析SQL作業 - 每天運行一次 - 從保存在強大的RDBMS中的2個源表中讀取數據。源表很龐大(> 100TB),但組合的字段少於10個。索引的平面文件

我的問題是可以將2個源表保存在壓縮和索引的平面文件中,這樣整個操作可以更快並且可以節省存儲空間,並且可以在低規格服務器上運行。另外,我們是否可以針對這些壓縮和索引的平面文件運行SQL查詢?任何關於如何去做這件事的指針都會非常有幫助。

+0

SQLite使用單個可移植平面文件來存儲單個數據庫的對象。它支持索引和SQL接口。但允許的最大數據庫大小僅爲14TB。 – Raihan

+0

您可以使用基於JSON或YAML的文本文件來存儲您的表格。最大文件大小可以與操作系統允許的一樣大。 Java和Ruby以及JSON和YAML的許多其他編程接口。但我不認爲任何阻礙支持索引。並沒有SQL接口。 – Raihan

回答

1

大多數優化策略優化速度或大小,並相互交換一個。一般來說,RDBMS解決方案會以速度爲代價進行優化 - 以規模爲代價 - 例如,通過創建索引,您佔用更多空間,並以更快的速度訪問數據。

因此,您希望優化速度和尺寸的願望不太可能實現 - 您幾乎可以肯定必須交易一個針對另一個。其次,如果你想執行「類似於sql」的查詢,我敢肯定,RDBMS是最好的解決方案 - 尤其是對於龐大的數據集。

基礎數據可能適用於特定優化 - 例如,如果您可以創建基於位掩碼的自定義索引方案以創建整數,並使用這些整數通過布爾運算符訪問數據,那麼您可能能夠擊敗RDBMS索引的性能。

+0

謝謝內維爾。 「sql like」查詢是爲了評估我們是否可以將已有的SQL作業重新用於索引平面文件,但不是太重要。關鍵是如何創建如此高性能的索引和壓縮平面文件。 – user1065024