Java 和 Cassandra 之间哪种数据类型转换最好?

What datatypes translate best between Java and Cassandra?

我正在使用 Spring Data Cassandra。我对以最轻松的方式启动我的项目并快速运行感兴趣。我正在尝试选择合适的数据类型,这样我就不必再考虑它们了。

我在 Cassandra 中创建了以下数据。

  1. lat/long 位置 - BigDecimal 是最好的吗 Java 8 Type for this?
  2. 缩略图 - 32-64kb 的二进制数据。由于它的体积小,我希望将它直接存储在记录中。最好的 Java 8 类型是什么?
  3. timestamp - Cassandra 上最好的 Java8 Class 时间戳是什么?

目前,Spring 使用与 Java 6 兼容的 Java 驱动程序 3.x,因此在开箱体验方面存在一些限制。 driver manual has a table with mapping between Java & CQL data types。回答您的问题:

  1. 这取决于您的要求 - 我认为双打就足够了;
  2. blob 默认映射到 java.nio.ByteBuffer - 如果需要,您可以添加 byte[] 的编解码器,但这需要您自己编写代码(请参阅 doc on custom codecs);
  3. 对于时间戳和 Java 8 种时间类型之间的映射,有一个单独的 jar,其中包含所谓的 extra codecs,您可以注册并直接映射到 Instant,等等.

P.S。较新的驱动程序 4.x 支持 Java 8 及更高版本,因此您将获得时间戳映射我们的框。但是还没有 Spring 数据版本支持这个版本。