首页 > 解决方案 > mysql json vs mongo - 存储空间

问题描述

我遇到了一个有趣的情况,虽然不是一个实际问题,但我不明白为什么会这样。

我们有一个 mongo 数据库,主要由存储在数组中的一些批量数据组成。由于超过 90% 的团队都熟悉 mysql,而我们中只有少数人熟悉 mongo,再加上不是关键数据库,所有查询都在 2 个字段(客户端或产品)上完成) 我们决定将 mysql 中的数据移动到这样的表中

[idProduct (bigint unsigned), idClient (bigint unsigned), data (json)]

其中数据是一个包含数百个属性及其值的巨大 json。

我们还通过 idClient 上的哈希将其划分为 100 个分区。

PARTITION BY HASH(idClient)
PARTITIONS 100;

一切正常,但我注意到一个有趣的事实:

原始的 mongo db 大约有 70 GB,给或取。mysql 版本(实际上包含更少的数据,因为重新删除了我们在 mongo 中用作索引的一些重复项)有超过 400 GB。

为什么要占用这么多空间?理论上 bson 实际上应该比 json 略大(至少在大多数情况下)。即使 mysql 中的索引更大......差异也很大(超过 5 倍)。

标签: mysqljsonmongodbsizediskspace

解决方案


嗨,我认为主要原因可能是由于 Mongo 在内部将 json 存储为 bson(http://bsonspec.org/),并且在规范中强调这种表示是轻量级的。


推荐阅读