Кассандра Внутреннее Хранение - PullRequest
1 голос
/ 28 января 2020

Если я создам такую ​​таблицу в Cassandra

   CREATE TABLE example (  
   key1 text PRIMARY KEY,  
   map1 map<text,text>,  
   list1 list<text>,  
   set1 set<text>
);

и вставлю некоторые данные, подобные этой

INSERT INTO example (  
   key1,  
   map1,  
   list1,  
   set1  
) VALUES (  
   'john',  
   {'patricia':'555-4326','doug':'555-1579'},  
   ['doug','scott'],  
   {'patricia','scott'}  
);

и посмотрю на хранилище с помощью CLI, я увижу это

RowKey: john  
=> (column=, value=, timestamp=1374683971220000)  
=> (column=map1:doug, value='555-1579', timestamp=1374683971220000)  
=> (column=map1:patricia, value='555-4326', timestamp=1374683971220000)  
=> (column=list1:26017c10f48711e2801fdf9895e5d0f8, value='doug', timestamp=1374683971220000)  
=> (column=list1:26017c12f48711e2801fdf9895e5d0f8, value='scott', timestamp=1374683971220000)  
=> (column=set1:'patricia', value=, timestamp=1374683971220000)  
=> (column=set1:'scott', value=, timestamp=1374683971220000)

Теперь мой вопрос таков: какая первая строка в выводе CLI? что это значит? почему у него нет ни столбца, ни значения, но есть метка времени?

Ответы [ 2 ]

1 голос
/ 28 января 2020

Был введен «маркер строки» [1], поэтому строка не исчезает, когда вы удаляете (установите столбец в ноль) последний столбец. В соответствии с тем, как ведут себя традиционные реализации SQL)

Вы также узнали, как Кассандра представляет коллекции под капотом. Помните, что

  • Ключи карты должны быть уникальными (решено)
  • Список может содержать дубликаты (решается добавлением uuid)
  • Набор не должен содержать дубликатов (решено)

[1] https://issues.apache.org/jira/browse/CASSANDRA-4361

0 голосов
/ 28 января 2020

Это потому, что при использовании cassandra-cli вы получаете экономное представление строк. Первая информация относится к первичному ключу, так как вы просто ключ раздела, он такой же, как ключ строки. Таким образом, у вас есть ваше значение: как rowKey (Джон в вашем примере), тогда отметка времени

У вас будет более читаемый набор результатов, если вместо этого вы используете cql sh. Вы можете найти более подробную информацию здесь: https://thelastpickle.com/blog/2013/01/11/primary-keys-in-cql.html

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...