Я узнал, что Java Client 3.0.33 поддерживает Float/Double тип данных на стороне клиента.
В примечаниях к выпуску говорится: Поддержка двойного/плавающего на стороне клиента. Сервер будет хранить эти значения в виде длин.
Это прекрасно. Когда я вставляю значение float в аэрокосмический отсек, он хранится как длинное целое число на аэросик-сервере. Принимая во внимание, что, возвращая значение обратно с помощью Java Client, он получает как длинное целое число, сохраненное на сервере.
Ожидается, что Java-клиент должен был преобразовать Long для автоматического плавания при поиске. Это прекрасно сделано в клиенте python (serialize/deserialize). Мне нужно явно использовать getFloat() для преобразования обратно в float при использовании Java Client.
Мой вопрос: как узнать, для какого бункера мне нужно применить getFloat(), и для которого я не должен. Потому что я никогда не знаю, какой тип данных, который я читаю, был вставлен как float.
Спасибо заранее.Обработка Float/Double datatypes с использованием клиента Aerospike Java
ответ
Используйте клиент Aerospike Java 3.1.2 со следующим кодом. Двойной/float хранится как сериализованный Java-тип, но пока вы пишете и читаете с Jave, все будет в порядке.
Key key = new Key("test", "some-floats", "float-001");
Bin bin = new Bin("a-float", 3.14159f);
this.client.put(null, key, bin);
Record record = this.client.get(null, key, "a-float");
double pi = record.getFloat("a-float");
System.out.println("Float:"+pi);
@ Helipilot50, я упомянул об использовании getFloat() в моем вопросе. Моя проблема в том, что я не хочу явно использовать getFloat при поиске. Клиент Python делает это для меня. – Carbonrock
Обходной дается в последней версии клиента Aerospike Java (3.1.4, который собирается быть отпущена), чтобы заставить клиента всегда идти через объект Java сериализации/десериализации. Это позволяет избежать длительного обращения клиента. Пример кода приведен ниже.
double value = 22.7;
Bin bin = new Bin("mybin", (Object) value);
@ sunil, я жду этого релиза. - Благодаря. – Carbonrock
Выглядит очень искренняя проблема для меня. – sunil