如何存储大数据以用于计算?

问题描述:

我最近开始处理大数据。具体来说,我有几个GB的数据,我必须经常对它进行计算(添加,修改)。由于对数据的任何计算都需要很长时间,因此我一直在考虑如何存储数据以进行快速计算。以下是我已经调查的选项:如何存储大数据以用于计算?

  1. 纯文本文件:这项技术的唯一的好处就是插入数据是很容易的。现有数据的更改非常缓慢,因为无法高效地搜索记录。
  2. 数据库:插入和修改数据被简化。然而,由于这是一个正在进行的研究项目,模式可能需要经常更新,取决于实验结果(这种情况现在还没有发生,但肯定会在不久的将来发生)。此外,移动数据并不简单(与简单文件相比)。此外,我注意到,与数据存储在XML中相比,查询数据并不那么快。
  3. XML:使用BeautifulSoup,只加载包含所有数据的XML文件需要大约15分钟,并占用大约15GB的RAM。由于在一天内多次运行脚本是非常正常的,因此每次调用大约15分钟似乎非常长。好处是数据加载后,我可以快速搜索/修改元素(标签)。
  4. JSON和YAML:我还没有深入研究过它。他们肯定可以压缩存储文件所需的磁盘空间(相对于XML)。但是,当数据以这些格式存储时,我发现无法查询记录(与数据库或XML不同)。

你建议我做什么?你有没有其他的选择?

如果您要为大量数据寻找灵活的数据库,MongoDB可能是您正在寻找的技术。

MongoDB的属于家庭的NoSQL数据库系统,并且是:

  • 基于JSON酷似文件
  • 即使有大量的数据
  • 无架构
  • 文件具有高性能基
  • 开源
  • 查询
  • 可索引

它允许您以非常灵活的方式修改您的模式,很容易插入数据(1.),修改数据及其结构(2.),比XML(3)更快)和基于JSON的高效存储(4.)。

+0

但选定的答案在这里http://*.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

整数的大小是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 ..