首页 文章

RavenDB:存储大小问题

提问于
浏览
8

我正在使用RavenDB进行一些测试,以便根据iphone应用程序存储数据 . 该应用程序将发送一串5个GPS坐标和一个GUID的密钥 . 我在RavenDB中看到每个文档大约是664-668字节 . 对于10位小数和一个guid来说,这是巨大的 . 有人能帮助我理解我做错了什么吗?当一百万条记录超过磁盘上的一个演出时,我注意到它的大小非常大 . 根据我的计算,它应该小得多 . 纯粹基于数据大小不应该是文件大约100字节?并且鉴于文档数据库具有内置的对象模式,假设将其加倍为200字节 . 鉴于该计算,数据库应该是大约200兆,具有100万条记录 . 但它要大十倍 . 有人可以帮助我在这里我的数学错误吗?

(有一个朋友检查我的数学,我有点关闭 - 数字更新)

1 回答

  • 17

    作为一般原则,NoSQL数据库不是RDBMS的传统要求 . 通常使用NoSQL,您会出于各种原因选择将数据一式两份或一式三份存储 .

    特别是使用RavenDB,每个文档都是JSON格式,所以你有一些开销 . 但是,它实际上是以BSON格式保存在磁盘上,节省了一些字节 . 此实现细节从客户端隐藏 . 此外,每个文档都有两个流 - 主文档内容和关联的元数据 . 这非常强大,但确实占用了额外的磁盘空间 . 文档和元数据都以BSON格式保存在ESENT支持的文档存储中 .

    然后,您需要考虑如何访问数据 . 您创建的任何静态索引以及您要求Raven通过其LINQ API为您创建的任何动态索引都会将数据复制到索引存储中 . 这是一个使用Lucene.net专有索引文件格式实现的独立存储 . 如果要估算磁盘空间要求,则需要考虑这一点 . (顺便说一句 - 你也会关注RDBMS解决方案中的索引)

    如果您非常关心优化磁盘空间的每个字节,那么NoSQL解决方案可能不适合您 . 几乎市场上的每种产品都有这些类型的开销 . 但请记住,磁盘空间今天很便宜 . 关系数据库针对磁盘空间进行了优化,因为存储在发明时非常昂贵 . 世界已经发生了变化,NoSQL解决方案也接受了这一点 .

相关问题