如何在Cassandra中列出列族中的所有列名?
我正在使用Cassandra,我想制作一个数据浏览器,显示任何列族的内容。 我需要获取列名来配置UI网格。 是否可以收集所有行中的列名?
最好的方法,如果你使用Cassandra 1.1:
SELECT column_name FROM system.schema_columnfamilies WHERE keyspace_name = X AND columnfamily_name = Y
另见http://www.datastax.com/dev/blog/schema-in-cassandra-1-1
这个答案有几个部分。
首先,要回答您的具体问题,您应该使用sliceQuery来连续获取所有列。 将空的ByteBuffer作为起始值和结束值传递,以有效地请求所有列:
ByteBuffer empty = ByteBufferUtil.EMPTY_BYTE_BUFFER; sliceQuery.setRange(empty,empty,false,100);
其次,您需要假设存储在列族中的数据模型。
如果数据模型是静态的(每个对象一行,每个属性一列),那么您获取的列名应该是您要显示的列名。 但是,如果数据以动态方式存储(每列一个对象,所有具有相同主键的对象存储在同一行中) – 例如在时间序列中 – 那么您需要了解列的方式需要解释名称(可能是复合的)。 动态方法的另一个常见用法是通过CQL定义列族的持久化方式。
我应该补充说,没有办法告诉如何使用列族来存储对象。 您可以查询架构,但这只会告诉您数据在持久化时的格式,而不是数据(和属性名称)的序列化和反序列化方式。
试试这个:
select columnfamily_name from system.schema_columnfamilies where keyspace_name='mykeyspace';
- Cassandra批处理查询具有不同分区键的表的性能
- Cassandra更新不一致
- 如何在Cassandra中执行批处理语句和LWT作为事务
- 考虑将序列化的java对象存储为cassandra作为JSON。 捕获量是多少?
- com.datastax.driver.core.exceptions.InvalidQueryException:unconfigured table schema_keyspaces
- cassandra的cqlsh控制台中的操作超时错误
- 如何使用Java类连接Cassandra
- 如何使用Datastax Java驱动程序的异步/批量写入function
- 只有日期范围扫描Cassandra CQL时间戳