带压缩的MongoDB键值DB替代方案

时间:2011-07-15 10:44:14

标签: c# mongodb nosql

我目前正在使用MongoDB来存储一些传感器的大量实时信号。存储的信息包括时间戳,数值和指示信号质量的标志。

查询非常快,但使用的磁盘数量过高,并且想尝试最适合我目的的其他非关系数据库。

我一直在关注http://nosql-database.org/,但我不知道哪个数据库最符合我的需求。

非常感谢:)

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

MongoDB在每个文档中存储字段名称,这很好,因为它允许所有文档具有不同的字段,但是当字段始终相同时会产生存储开销。

要减少磁盘消耗,请尝试缩短字段名称,而不是:

{
    _id: "47cc67093475061e3d95369d",
    timestamp: "2011-06-09T17:46:21",
    value: 314159,
    quality: 3
}

试试这个:

{
    _id: "47cc67093475061e3d95369d",
    t: "2011-06-09T17:46:21",
    v: 314159,
    q: 3
}

然后,您可以将这些字段名称映射到应用程序中更有意义的内容。

此外,如果您要存储单独的_idtimestamp字段,那么您可能会加倍。 ObjectId类型中包含timestamp embedded,因此根据您查询和使用数据的方式,这可能意味着您无需单独使用单独的时间戳字段。

答案 2 :(得分:1)

磁盘空间很便宜,不关心这一点,使用新数据库进行开发会花费更多......如果你在Windows上,你可以试试RavenDB

另外,请查看有关减少mongo数据库大小的this答案:

  

您可以通过运行mongod --repair或by来执行此“压缩”   直接连接并运行db.repairDatabase()。