neo4j:--normalize-types=false的利弊是什么?

q5iwbnjs  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(96)

neo4j-admin工具可以从CSV导入数据。其中一个选项是:
--normalize-types[=<true/false>]
确定是否将属性类型规范化为Cypher类型,例如int变成longfloat变成double
默认值:true
如果我没有显式地设置--normalize-types=false,那么neo4j-admin工具会生成如下消息:

Property type of 'foo' normalized from 'int' --> 'long' in /path/to/my-nodes.csv

我的数据库有数十亿个属性,所以如果可能的话,我想节省保存空间(和RAM)。我知道整数属性适合32位,浮点属性不需要64位精度。(有关每个属性类型的位宽,请参见this reference。)

规范化类型与不正常?

例如,较窄的类型实际上是否节省了保存空间/RAM?它们是否与Cypher查询不兼容?

kq0g1dla

kq0g1dla1#

我看到commit添加了对规范化类型的支持,它有这样的注解:

导入器规范化属性类型以匹配Cypher

这实际上意味着一个类型,在一些.csv头中指定,说明某个属性应该是例如。“short”将被导入为“long”类型。基本上所有的整数类型都将被导入并存储为long,浮点类型将被导入并存储为double。
这将是默认行为,但可以通过提供“--normalize-types=false”来覆盖特定场景。
我认为这意味着如果你不规范化类型,那么任何未规范化的数据类型都必须在使用Cypher时转换为规范化类型。因此,即使您可以保存存储空间,您的Cypher查询也会变慢。
你可能想用两种方式来测试它,看看这是否是真的(并让我们知道)。

相关问题