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

时间:2013-05-02 06:37:36

标签: bigdata

我最近开始研究大数据。具体来说,我有几GB的数据,我必须经常进行计算(添加,修改)。由于对数据的任何计算都需要花费大量时间,因此我一直在考虑如何存储数据以便快速计算。以下是我研究的选项:

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

2 个答案:

答案 0 :(得分:1)

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

MongoDB属于NoSQL数据库系统的家族,是:

  • 基于类似JSON的文件
  • 即使有大量数据也非常高效
  • 无架构
  • 基于文档的
  • 开源
  • 可查询
  • 可转位

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

答案 1 :(得分:-1)

整数的大小是4,long long int是8个字节,它可以访问大约19位数据,对于unsinged long long int size也是8个字节,但是处理的值大于long long int但是这个小于20位数.Is有任何方法可以挂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 ..