Как перечислить все имена столбцов в семействе столбцов в Cassandra?

Я использую Cassandra и хочу создать браузер данных, который показывает содержимое любого семейства столбцов. Мне нужно получить имена столбцов для настройки сетки пользовательского интерфейса. Можно ли собрать имена столбцов во всех строках?


person Yelis913    schedule 09.07.2012    source источник


Ответы (3)


Лучший способ, если вы используете 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

person jbellis    schedule 09.07.2012
comment
Это кажется самым удобным решением. На данный момент я использую Cassandra 1.0.9, поэтому я не могу попробовать это. - person Yelis913; 10.07.2012
comment
Для Cassandra 1.2 (очевидно... я использую 2.0.4) вам нужно запросить столбцы_схемы SELECT column_name FROM system.schema_columns WHERE keyspace_name = ? AND columnfamily_name = ? - person Andrew Charneski; 30.01.2014

Этот ответ состоит из нескольких частей.

Во-первых, чтобы ответить на ваш конкретный вопрос, вы должны использовать sliceQuery, чтобы получить все столбцы в строке. Передайте пустой ByteBuffer в качестве начального и конечного значений, чтобы эффективно запрашивать все столбцы:

ByteBuffer empty = ByteBufferUtil.EMPTY_BYTE_BUFFER;       
sliceQuery.setRange(empty,empty,false,100);

Во-вторых, вам нужно сделать предположение о том, что модель данных хранится в семействе столбцов.

Если модель данных является статической (одна строка на объект, один столбец на атрибут), то имена столбцов, которые вы возвращаете, должны быть именами столбцов, которые вы хотите отобразить. Однако если данные хранятся динамически (один объект в столбце, все объекты с одним и тем же первичным ключом хранятся в одной строке) — как, например, во временном ряду, — тогда вам нужно понять, как столбцы имена (возможно, составные) необходимо интерпретировать. Другим очень распространенным применением динамического подхода является то, как семейства столбцов сохраняются при определении с помощью CQL.

Я должен добавить, что невозможно сказать, как семейство столбцов используется для хранения объектов. Существует схема, которую вы можете запросить, но она говорит вам только о том, как форматировать данные при их сохранении, а не о том, как данные (и имена атрибутов) сериализуются и десериализуются.

person Chris Gerken    schedule 09.07.2012
comment
Извините, но прежде чем я получу все столбцы подряд, мне нужно получить строку, и для этого мне нужно знать ключ строки. В моем случае я знаю только название семейства столбцов и ничего о строках в нем. Итак, что я хочу сделать, это просмотреть все строки и собрать идентификаторы строк или, по крайней мере, просмотреть все значения определенного столбца. P.S. Я родом из мира отношений, и Кассандра доставляет мне неприятности. - person Yelis913; 09.07.2012
comment
Итак, ваш вопрос действительно о том, как использовать Гектора в целом? - person Chris Gerken; 09.07.2012

попробуй это:

select columnfamily_name from system.schema_columnfamilies where keyspace_name=‘mykeyspace';
person DàChún    schedule 01.05.2014