Я пытаюсь понять, почему я вижу разные данные двумя способами для отображения столбцов семейства столбцов 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
.
Как я должен интерпретировать эти расхождения?