如何在 Cassandra 中构建动态查询?
How to build a Dynamic Query in Cassandra?
根据论坛和少数人的经验,我理解 Java 驱动程序可以根据以下内容提供帮助 post ..
1
但是有什么方法可以在没有 java 驱动程序的情况下在 Cassandra 中构建查询。
不幸的是,这里没有人回答这个问题
Dealing with dynamic Query String in Cassandra。趁机再养。
谢谢,
普拉萨德
这里有两个方面:
- 最简单的方法 - 构建查询本身 - 这可以通过连接字符串或使用第一个问题中讨论的 QueryBuilder 来完成。
- 最复杂的一个 - 如何执行查询。在 Cassandra 中,要求您在执行查询时(至少)提供分区键。否则,您将执行完整的 table 扫描,最有可能以读取超时结束。
为了缓解第二个问题,人们正在进行非规范化并创建辅助 tables,其中特定字段是分区键。但这无法自动完成,因为您可能会以特定 table 的非常倾斜的数据分布结束。二级索引也有局限性,最好与分区键一起使用。
P.S。在 DataStax Enterprise 中,这可以通过在 table 上添加 DSE Search 索引来稍微放宽,但性能会比纯 Cassandra 略差。
根据论坛和少数人的经验,我理解 Java 驱动程序可以根据以下内容提供帮助 post ..
但是有什么方法可以在没有 java 驱动程序的情况下在 Cassandra 中构建查询。 不幸的是,这里没有人回答这个问题 Dealing with dynamic Query String in Cassandra。趁机再养。
谢谢, 普拉萨德
这里有两个方面:
- 最简单的方法 - 构建查询本身 - 这可以通过连接字符串或使用第一个问题中讨论的 QueryBuilder 来完成。
- 最复杂的一个 - 如何执行查询。在 Cassandra 中,要求您在执行查询时(至少)提供分区键。否则,您将执行完整的 table 扫描,最有可能以读取超时结束。
为了缓解第二个问题,人们正在进行非规范化并创建辅助 tables,其中特定字段是分区键。但这无法自动完成,因为您可能会以特定 table 的非常倾斜的数据分布结束。二级索引也有局限性,最好与分区键一起使用。
P.S。在 DataStax Enterprise 中,这可以通过在 table 上添加 DSE Search 索引来稍微放宽,但性能会比纯 Cassandra 略差。