性能方面,重命名生产的每个mongo密钥名称是否值得?

Bil*_*net 1 performance mongodb

据我所知,每个密钥名称都按"原样"存储在mongo数据库中.这意味着将使用四个字母存储字段"名称".

如果我希望我的应用程序准备好存储大量数据,重命名我的mongo文档中的每个键,那会是明智的吗?例如,"name"将变为"n","description"将变为"d".

我希望它能够显着减少数据库使用的空间,同时减少发送给客户端的数据量(更不用说它有点了解mongo文档内容).我对吗?

如果我对代码中的每个键进行重命名(不需要重命名现有数据,我可以从头开始重建),是否有一个好的做法或者我应该知道的任何其他建议?

Dav*_*ica 5

注意:这主要是猜测,我没有基准测试结果来支持这一点

虽然技术上"缩小"你的密钥会减少你的内存/磁盘空间占用空间的大小,但我认为如果不是实际上不利的话,它的优点是非常小的.

首先要意识到的是,Mongodb中存储的数据实际上并不是以原始JSON格式存储的,它实际上使用标准BSON存储为纯二进制格式.这允许Mongo进行各种内部优化,例如压缩,如果你使用WiredTiger作为你的存储引擎(感谢指出那个@Jpaljasma).

其次,可以说你不要再压缩你的钥匙.那么你需要缩小你的钥匙.每次.永远.这在您的应用程序方面有很多工作要做.此外,您需要在阅读时解开密钥(因为用户不知道是什么n).每次.永远.突然间,您的次要内存优化成为主要的运行时减速.

第三,这种缩小/取消的过程有点复杂.您需要维护和测试两者之间的映射,保持测试,更新,并且永远不会有任何重叠(如果这样做,那就是所有数据的结尾).我不会那么努力.

总的来说,我认为缩小你的密钥以保存几个字符是一个非常可怕的想法.重要的是要牢记大局:VAST的大部分数据都不在键中,而是在值中.如果您想优化数据大小,请查看.