neo4j:--normalize-types=false 的权衡是什么?

问题描述 投票:0回答:1

neo4j-admin
工具可以从CSV导入数据。 其中一个选项需要的是:

--normalize-types[=<true/false>]

确定是否将属性类型规范化为 Cypher 类型,例如

int
变为
long
float
变为
double

默认:

true

如果我没有显式设置

--normalize-types=false
,那么
neo4j-admin
工具会生成如下消息:

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

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

类型标准化与不标准化的权衡是什么?

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

neo4j cypher
1个回答
0
投票

我看到添加了对规范化类型的支持的commit有这样的评论:

导入器标准化属性类型以匹配 Cypher

实际上意味着在某些 .csv 标头中指定的类型,表示 某些属性应该是类型,例如“short”将被导入为 输入“长”。基本上所有整数类型都会被导入和存储 因为长整型和浮点类型将被导入并存储为 双倍。

这将是默认行为,但可以针对特定情况进行覆盖 通过提供“--normalize-types=false”的场景

我认为这意味着如果您不标准化类型,那么每当您使用 Cypher 时,任何非标准化数据类型都必须与标准化类型相互转换。因此,即使您可以节省存储空间,您的 Cypher 查询也会变慢。

© www.soinside.com 2019 - 2024. All rights reserved.