我是 Cassandra 的新手,可以在下面的维基百科中找到。
列族(自 CQL 3 起称为“表”)类似于 RDBMS(关系数据库管理系统)中的表。列族包含行和列。每行都由行键唯一标识。每行有多个列,每列都有一个名称、值和时间戳。与 RDBMS 中的表不同,同一列族中的不同行不必共享同一组列,并且可以随时将一列添加到一行或多行。 [29]
它说'同一列族中的不同行不必共享同一组列',但如何实现呢?我几乎阅读了官方网站上的所有文件。
我可以创建表并插入如下数据。
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');
这很像我在关系数据库中所做的。那么如何创建具有不同列的多行呢?我还找到了官方文档中提到的“灵活模式”,这里怎么理解?
首先十分感谢。
最佳答案
列族来自Cassandra的原始设计,当时数据模型看起来像Google BigTable或Apache HBase,并且使用Thrift协议(protocol)进行通信。但这需要在应用程序内部定义架构,这使得从许多应用程序访问数据变得更加困难,因为您需要更新所有应用程序内部的架构......CREATE TABLE
和 INSERT
是很久以前引入的 Cassandra 查询语言 (CQL) 的一部分,并取代了基于 Thrift 的实现(Cassandra 4.0 完全删除了 Thrift 支持)。在 CQL 中,您需要为表定义架构,您需要在其中提供列名和类型。如果你真的需要动态列,有几种方法(我会链接我已经写过的答案,所以不会重复):
int
, text
, ..., 并且您仅将值插入相应的列中(描述为 here )关于cassandra - 如何理解Cassandra中的 'Flexible schema'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62692765/