我们正在将一些数据从 MySQL 迁移到 Mongo,并为一些数据库表添加了额外的字段ObjectId迁移的数据对象的值。
目前我们将它们存储为 varchar(24) latin1_general_ci ,效果很好。
然而,为了高效存储/索引,我们可能应该转换回 12 字节二进制值。不幸的是,MySQL 似乎只有本机整数支持最多 8 个字节。还有另一种选择 - 也许是二进制?
Update:我正在从 MySQL 迁移,但目前仅迁移某些表。所以我首先复制 Mongo 中某个表的对象。然后,我返回 MySQL 中保留的任何其他具有旧 MySQL 表 ID 的外键引用的表,并添加一个新的引用字段来存储 Mongo 对象的 ID。然后我将删除原始引用字段 BIGINT。
更新2:我提出这个问题的原因是,我们可能需要 12 个月(或永远不会)才能移动其他数据,因此在此之前它将对实时 Web 应用程序的性能产生影响。
12 字节 unsigned int 的范围是0..79228162514264337593543950335
(最多 29 位);根据文档(您引用的同一网址),DECIMAL
/NUMERIC
列将每组九个 base10 数字打包成四个字节(总计floor(29 / 9) * 4 = 3 * 4 = 12
前 27 位字节),其余 2 位数字占用一个额外字节,最多可存储 13 个字节DECIMAL(29)
column.
或者,您可以将它们存储为BINARY(12)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)