Отсутствие некоторых скалярных функций Neo4j

Использование версии сообщества Neo4j 3.2.0.

Типы свойств в Neo4j должны соответствовать примитивам Java. Почему существуют только скалярные функции для целых чисел (т.е. toInteger) и чисел с плавающей запятой? При импорте (LOAD CSV) было бы полезно сделать преобразование строк в байты, шорты и удвоения, а не указывать типы в заголовке. APOC также не имеет скалярных функций для этих типов. Можно было бы ожидать этого, поскольку между типами чисел существует большая разница в памяти. Любая техническая причина или обходной путь (например, для преобразования строки в byte|short|double под нагрузкой CSV?

Кроме того, инструмент импорта позволяет использовать все типы чисел в метаданных заголовка.


person Matthew Campbell    schedule 01.09.2017    source источник
comment
При использовании литералов списки объектов выглядят как целые числа, а числа с плавающей запятой являются единственными поддерживаемыми числами. Например, невозможно указать свойство как байт (например, свойство {id: 1, ...} id по умолчанию имеет целочисленное значение).   -  person Matthew Campbell    schedule 01.09.2017
comment
Похоже на известную проблему github.com/neo4j/neo4j/issues/7652   -  person Matthew Campbell    schedule 01.09.2017
comment
Одна сбивающая с толку вещь в Neo4j заключается в том, что типы на самом деле отличаются от рекламируемых. Neo4j использует 64-битные двойные и длинные значения под капотом (не целые числа или числа с плавающей запятой, несмотря на имена функций) и использует пару приемов оптимизации для хранения, если все значения для некоторых свойств достаточно низкие.   -  person InverseFalcon    schedule 01.09.2017


Ответы (1)


Не уверен, что именно вы имеете в виду под типы свойств должны соответствовать примитивам Java. Насколько я знаю, нет никаких обязательств делать что-либо, когда вы пишете программное обеспечение.

Вы можете найти типы Neo4j и их соответствие различным языкам в этом документе: https://neo4j.com/docs/developer-manual/current/drivers/cypher-values/.

Надеюсь это поможет.

С уважением, Том

person Tom Geudens    schedule 01.09.2017
comment
в Cypher встроены скалярные функции для целых чисел и чисел с плавающей запятой, но не для byte, small и double, которые я нахожу странными. Apoc также не заполняет пробел. Типы свойств в узле или отношениях сопоставляются с примитивами в Java (кроме null). - person Matthew Campbell; 01.09.2017
comment
Neo4j имеет только Boolean, Integer, Float (и String по умолчанию, очевидно). Так зачем Cypher нужны другие скалярные функции, если только их можно использовать в базе данных? Вы утверждаете, что есть пробел ... но любой тип, который может быть в базе данных, покрыт, так где же пробел? - person Tom Geudens; 02.09.2017