cqlsh create table:
CREATE TABLE emp(
emp_id int PRIMARY KEY,
emp_name text,
emp_city text,
emp_sal varint,
emp_phone varint
);
插入数据
INSERT INTO emp (emp_id, emp_name, emp_city,
emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);
选择数据
SELECT * FROM emp;
emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+-----------+----------+------------+---------
1 | Hyderabad | ram | 9848022338 | 50000
2 | Hyderabad | robin | 9848022339 | 40000
3 | Chennai | rahman | 9848022330 | 45000
与mysql相同,其中column family
,column
?
列族是有序行集合的容器。反过来,每一行都是有序的列集合。 列是Cassandra的基本数据结构,具有三个值,即键或列名,值和时间戳。
所以表emp
是column family
?
INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);
是一行包含列?
列类似于emp_id=>1
或emp_name=>ram
??
在Cassandra中,尽管定义了列族,但列不是。您可以随时自由地将任何列添加到任何列族。 这是什么意思? 我可以有类似的东西吗?
emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+-----------+----------+------------+---------
1 | Hyderabad | ram | 9848022338 | 50000
2 | Hyderabad | robin | 9848022339 | 40000 | asdfasd | asdfasdf
3 | Chennai | rahman | 9848022330 | 45000
超级列是一个特殊列,因此它也是一个键值对。但是超级列存储子列的映射。 超级列在哪里,如何创建它?
答案 0 :(得分:0)
名称列系列是现在简称为表的旧术语,例如示例中的“emp”。每个表包含一个或多个列,例如“emp_id”,“emp_name”。
当说出能够随时自由添加列的内容时,这意味着您总是可以省略列的值(将为null)或使用ALTER TABLE
语句添加列。
答案 1 :(得分:0)
列系列是一个旧名称,现在它只被称为表。
关于超级专栏,也是一个旧术语,你有" Map"例如,数据类型,或用于更复杂结构的用户定义数据类型。
关于自由添加列 - 在过去,Cassandra正在使用非结构化数据范例,所以在插入列之前你不必定义列,因为现在它不可能,因为Cassandra团队感动了#34;结构化" (数据库行业的许多人都得出结论,非结构化数据产生的问题多于努力)。
无论如何,Cassandra在存储级别的数据表示与MySQL非常不同,实际上只保存了不空的列的数据。当你从cqlsh运行select时它可能看起来是同一行,但它以非常不同的方式存储和查询。