2013-05-02 39 views
1

我最近開始處理大數據。具體來說,我有幾個GB的數據,我必須經常對它進行計算(添加,修改)。由於對數據的任何計算都需要很長時間,因此我一直在考慮如何存儲數據以進行快速計算。以下是我已經調查的選項:如何存儲大數據以用於計算?

  1. 純文本文件:這項技術的唯一的好處就是插入數據是很容易的。現有數據的更改非常緩慢,因爲無法高效地搜索記錄。
  2. 數據庫:插入和修改數據被簡化。然而,由於這是一個正在進行的研究項目,模式可能需要經常更新,取決於實驗結果(這種情況現在還沒有發生,但肯定會在不久的將來發生)。此外,移動數據並不簡單(與簡單文件相比)。此外,我注意到,與數據存儲在XML中相比,查詢數據並不那麼快。
  3. XML:使用BeautifulSoup,只加載包含所有數據的XML文件需要大約15分鐘,並佔用大約15GB的RAM。由於在一天內多次運行腳本是非常正常的,因此每次調用大約15分鐘似乎非常長。好處是數據加載後,我可以快速搜索/修改元素(標籤)。
  4. JSON和YAML:我還沒有深入研究過它。他們肯定可以壓縮存儲文件所需的磁盤空間(相對於XML)。但是,當數據以這些格式存儲時,我發現無法查詢記錄(與數據庫或XML不同)。

你建議我做什麼?你有沒有其他的選擇?

回答

1

如果您要爲大量數據尋找靈活的數據庫,MongoDB可能是您正在尋找的技術。

MongoDB的屬於家庭的NoSQL數據庫系統,並且是:

  • 基於JSON酷似文件
  • 即使有大量的數據
  • 無架構
  • 文件具有高性能基
  • 開源
  • 查詢
  • 可索引

它允許您以非常靈活的方式修改您的模式,很容易插入數據(1.),修改數據及其結構(2.),比XML(3)更快)和基於JSON的高效存儲(4.)。

+0

但選定的答案在這裏http://stackoverflow.com/questions/4426540/mongodb-and-postgresql-thoughts說:「它[MongoDB是]幾乎從來沒有比Postgres/MySQL/SQL Server/etc「。 – 2013-05-03 01:14:43

+0

@Waqar:選定的答案也是3歲;並且你提到你的模式會改變。我的意見是,MongoDB現在比2010年的時間要長得多。但這當然只是我的看法。 – ATN 2013-05-03 06:07:35

-1

整數的大小是4,long long int是8個字節,它可以訪問大約19個數字的數據,對於unsinged long long int size也是8個字節,但處理比long long大的值long int但小於20個數字。有沒有什麼辦法可以抑制20位數字的數據。

#include<iostream> 
using namespace std; 
int main() 
{ 
    unsigned long long int a; 
    cin>>a; 
    if(a>789456123789456123123)//want to take a higher thand this digits 
    { 
     cout<<"a is larger and big data"<<endl; 
    } 
} 

我搜索了一會兒,但沒有找到有用的內容。所有關於java biginteger ..

相關問題