Cassandra 如何理解';灵活的模式&x27;在卡桑德拉?;
我是卡桑德拉的新手,在下面的维基百科中可以找到 列族(自CQL 3起称为“表”)类似于RDBMS(关系数据库管理系统)中的表。列族包含行和列。每一行都由一个行键唯一标识。每行有多个列,每个列都有名称、值和时间戳。与RDBMS中的表不同,同一列族中的不同行不必共享同一组列,一列可以随时添加到一行或多行。[29] 它说“同一列族中的不同行不必共享同一组列”,但如何实现它呢?我几乎已经阅读了官方网站上的所有文件 我可以像下面这样创建表并插入数据Cassandra 如何理解';灵活的模式&x27;在卡桑德拉?;,cassandra,Cassandra,我是卡桑德拉的新手,在下面的维基百科中可以找到 列族(自CQL 3起称为“表”)类似于RDBMS(关系数据库管理系统)中的表。列族包含行和列。每一行都由一个行键唯一标识。每行有多个列,每个列都有名称、值和时间戳。与RDBMS中的表不同,同一列族中的不同行不必共享同一组列,一列可以随时添加到一行或多行。[29] 它说“同一列族中的不同行不必共享同一组列”,但如何实现它呢?我几乎已经阅读了官方网站上的所有文件 我可以像下面这样创建表并插入数据 CREATE TABLE Emp_record(E_id
CREATE TABLE Emp_record(E_id int PRIMARY KEY,E_score int,E_name text,E_city text);
INSERT INTO Emp_record(E_id, E_score, E_name, E_city) values (101, 85, 'ashish', 'Noida');
INSERT INTO Emp_record(E_id, E_score, E_name, E_city) values (102, 90, 'ankur', 'meerut');
这与我在关系数据库中所做的非常相似。那么,如何创建具有不同列的多行呢
我还发现官方文件中提到了“灵活模式”,在这里如何理解
非常感谢。Column系列源自Cassandra的原始设计,当时的数据模型类似于Google BigTable或Apache HBase,并且使用Thrift协议进行通信。但这需要在应用程序内部定义模式,这使得从许多应用程序访问数据的问题更加严重,因为您需要更新所有应用程序内部的模式
CREATE TABLE
和INSERT
是很久以前引入的Cassandra查询语言(CQL)的一部分,它取代了基于Thrift的实现(Cassandra 4.0完全取消了Thrift支持)。在CQL中,需要为表定义模式,其中需要提供列名和类型。如果您真的需要动态列,有几种方法可以实现(我将链接我已经写过的答案,这样就不会重复):
int
,text
,…,并且您只能将值插入相应的列中(已描述)谢谢,但我仍然不知道我是否用不同的列实现了不同的行?Cassandra要求在插入期间只指定主键-所有其他列都是可选的-如果不指定值,您将返回
null
。所以您只需执行,插入到表(pk1,pk2,col1)中的值(1,2,3)
然后插入到表(pk1,pk2,col3)中的值(2,3,5)
,您将得到两行-首先,您在col1
中只有值,第二行-只有col2