Семейство столбцов Cassandra по-разному отображается через CLI и DataStax

Я пытаюсь понять, почему я вижу разные данные двумя способами для отображения столбцов семейства столбцов Cassandra (1.2.x).

В первом я использую cassandra-cli для list строк в семействе столбцов.

[cassandra-cli]> list Users columns 1;
Using default limit of 100
-------------------
RowKey: [rowkey1]
=> (name=[name1], value=[value1], timestamp=[timestamp1])

Данные между [] являются заполнителем для значения. На самом деле они отображаются как шестнадцатеричное представление byte[]. Вышеприведенное, по-видимому, указывает на то, что есть одна строка с одним столбцом (у которого есть имя, значение и отметка времени).

Я делаю то, что, по моему мнению, эквивалентно API DataStax v1.

var cluster = Cluster.Builder ()
    .AddContactPoint ("127.0.0.1")
    .Build ();

var metadata = cluster.Metadata;
var keyspace = "keyspaceName";
var tableMetadatas = metadata.GetTables(keyspace);

foreach (var tableMetadata in tableMetadatas) {
    var session = cluster.Connect(keyspace);    

    var rowSet = session.Execute("SELECT * FROM \""+ tableMetadata + "\" ", ConsistencyLevel.One);
    CqlColumn[] columns = rowSet.Columns;

    foreach(var column in columns) {
        Console.WriteLine("Column name: " + column.Name + ", type: " + column.Type + ", keyspace: " + column.Keyspace);
    }

    foreach (var row in rowSet.GetRows()) {
        for (int i = 0; i < row.Length; i++) {
            String value = Encoding.UTF8.GetString(row.GetValue<byte[]>(i));
                        Console.WriteLine(value);
        }
    }
}

Это отображает

Column name: key, type: System.Byte[], keyspace: keyspaceName
Column name: column1, type: System.Byte[], keyspace: keyspaceName
Column name: value, type: System.Byte[], keyspace: keyspaceName
[The string value of rowkey1]
[The string value of name1]
[The string value of value1]

Кажется, это указывает на то, что есть 3 столбца: один с именем key, где значение равно rowkey; один с именем column1, где значением является значение name1; и один с именем value, где значением является значение value1.

Как я должен интерпретировать эти расхождения?


person Sotirios Delimanolis    schedule 16.05.2014    source источник


Ответы (1)


При использовании cassandra-cli вы видите «бережливое отношение» к своему хранилищу, а при использовании драйвера DataStax и cqlsh вы получаете «представление CQL».

Была серия сообщений, описывающих, как эти 2 связаны. Я связался с ними в своем ответе на Different между столбцами Thrift и CQL3 вопрос по SO.

person Alex Popescu    schedule 17.05.2014