Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将csv导入mongodb时,大小会增加_Mongodb - Fatal编程技术网

将csv导入mongodb时,大小会增加

将csv导入mongodb时,大小会增加,mongodb,Mongodb,我使用Compass将csv导入MongoDB。csv文件的大小为755MB,但在Mongo中,集合的大小为2.8GB?为什么会这样? 此外,csv有许多Sprasly填充的字段。在Mongo中,对于大多数rowsdocuments,这些字段被设置为空字符串。有没有一个选项可以说,如果不缺少值,则仅为特定文档创建字段。加载稀疏文件可能会不必要地占用大量空间。考虑这行的14493120行: foo,bar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,zip

我使用Compass将csv导入MongoDB。csv文件的大小为755MB,但在Mongo中,集合的大小为2.8GB?为什么会这样?
此外,csv有许多Sprasly填充的字段。在Mongo中,对于大多数rowsdocuments,这些字段被设置为空字符串。有没有一个选项可以说,如果不缺少值,则仅为特定文档创建字段。

加载稀疏文件可能会不必要地占用大量空间。考虑这行的14493120行:

foo,bar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,zip
文件大小为797229120字节。因此,让我们继续使用mongoimport加载它,并且不忽略空格。在MacBook上,加载需要8m45秒,并生成490字节的平均大小文档,总计7101710784个未压缩字节。WiredTiger存储引擎将在此基础上实现6.8倍的压缩,从而产生仅为1044369232字节的磁盘上代表和145854464字节的_id索引。总容量为1200MB。好的,比输入的797MB平面文件大一些


用-ignoreBlanks加载它,就会改变景观。它只需要5米55秒就可以加载并生成一个平均大小为63字节的文档,大约是原来的7.7倍。未压缩的总大小为72758890字节,也大约小7.7倍。压缩比降低到3.2x,但这仍然会产生286487020字节的磁盘上重复数据。毫不奇怪,_id索引大小相同,为145MB,但286MB+145MB~=432MB。与797MB的原始CSV相比,要点应该很清楚:使用-ignoreBlanks将稀疏文件加载到MongoDB中会产生更小的占用空间;在这种情况下,包含索引的磁盘比原始CSV文件小近2倍加载稀疏文件可能会不必要地占用大量空间。考虑这行的14493120行:

foo,bar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,zip
文件大小为797229120字节。因此,让我们继续使用mongoimport加载它,并且不忽略空格。在MacBook上,加载需要8m45秒,并生成490字节的平均大小文档,总计7101710784个未压缩字节。WiredTiger存储引擎将在此基础上实现6.8倍的压缩,从而产生仅为1044369232字节的磁盘上代表和145854464字节的_id索引。总容量为1200MB。好的,比输入的797MB平面文件大一些


用-ignoreBlanks加载它,就会改变景观。它只需要5米55秒就可以加载并生成一个平均大小为63字节的文档,大约是原来的7.7倍。未压缩的总大小为72758890字节,也大约小7.7倍。压缩比降低到3.2x,但这仍然会产生286487020字节的磁盘上重复数据。毫不奇怪,_id索引大小相同,为145MB,但286MB+145MB~=432MB。与797MB的原始CSV相比,要点应该很清楚:使用-ignoreBlanks将稀疏文件加载到MongoDB中会产生更小的占用空间;在这种情况下,磁盘上的索引比原始CSV文件小近2倍

您使用的是什么版本的Compass,检查大小的列上的标签是什么?在Compass 1.16中单击查看数据库时,集合列表会显示文档总大小,即未压缩数据的大小,而不是磁盘上文件的大小。数据大小将大于原始CSV,因为每个MongoDB文档都包含字段名,但是压缩后磁盘上的大小通常要小得多。Compass中的CSV导入更方便,而不是控制。为了更好地控制,我建议使用MongoDB服务器命令行工具,该工具具有转换选项,如和。您使用的是什么版本的Compass,以及检查尺寸的列上的标签是什么?在Compass 1.16中单击查看数据库时,集合列表会显示文档总大小,即未压缩数据的大小,而不是磁盘上文件的大小。数据大小将大于原始CSV,因为每个MongoDB文档都包含字段名,但是压缩后磁盘上的大小通常要小得多。Compass中的CSV导入更方便,而不是控制。为了更好地控制,我建议使用MongoDB服务器命令行工具,该工具具有转换选项,如、和。