使用C API和开源的键值数据库

时间:2012-09-07 09:07:24

标签: c

我正在寻找一个key-tuple数据库,我的数据库以15分钟的粒度存储过去1年中各种公司股票价值的条目。以下是要求:

  1. 它应该能够存储大约20 GB的数据(每个大约100个字节的2亿条记录)
  2. 我们将把它存储在一台机器上(没有分布式环境),RAM最大可以是2 GB。该机器将是32位linux机器,所以我想mongoDB是不可能的。
  3. 应该是开源的,我可以将它用于生产而无需任何付款/发布我的源代码。
  4. IT 必须一个好的C API和文档。
  5. 我想保留以下格式的条目:
    • companyID
    • 日期ID //可以采用1到180之间的值
    • 时间ID //每15分钟拍摄一次,因此可以取值1-96
    • 股票价值
  6. 关键是

    • companyID
    • 日期ID //可以采用1到180之间的值
    • 时间ID //每15分钟拍摄一次,因此可以取值1-96

    值为

    • 股票价值
  7. 以下是我希望能够做到的事情:

    • 在特定日期和特定时间检索所有公司的所有记录。基本上,我希望能够做到这样的事情:
      • 从表中选择*,其中day = 2,time = 48;
    • 检索特定公司的所有记录。基本上我希望能够做到这样的事情:
      • 从table中选择*,其中companyID = 10223;

    显然,我不想执行许多查询,相反,我希望所选数据库能够支持根据我的上述要求进行查询,即只有1个查询应该足以检索上述结果。毋庸置疑,响应时间应该很短(最多可接受1秒)。

    我也对NOSQL数据库持开放态度。请帮忙。

3 个答案:

答案 0 :(得分:4)

有许多键值存储,从旧的DBM变体(如GDBM)到现代变体(如Berkeley DBTokyo Cabinet

参见例如Wikipedia获取其他类似DBM的数据库列表。

但是,如果你想要更高级的查询,那么你应该选择SQLite,或者使用Berkeley DB(尽管它不再是开源我相信)。

答案 1 :(得分:0)

DB看起来像三维数组。    第一维:公司ID,第二个日期(1-180),第三个是时间(1-96)和    数据是股票价值。    如果内存不是约束,则3D阵列的响应时间会更快。    否则需要去Hashing。

答案 2 :(得分:0)

你可以使用拥有多种语言客户端API的Redis(www.redis.io/clients)(c,java,php,...)