卡桑德拉模式少吗?

问题描述

我正在使用NodeJS应用程序通过以下方式连接到Cassandra cassandra-driver

在使用cassandra-driver之后,我注意到我们已经为每个表预先定义了架构。 有人可以帮助我了解是否需要事先在Cassandra中定义每个表的架构吗?

这是我尝试从nodeJS应用程序连接到Cassandra DB的方式:

const cassandra = require("cassandra-driver");
const client = new cassandra.Client({
 contactPoints: ['127.0.0.1'],localDataCenter: 'datacenter1',keyspace: 'testdb'
});

const executeCassandraQuery = async (query,params) => {
let fetchData;
try {
    fetchData = await client.execute(query,params,{ prepare: false });
    console.log(`Successfully executed the query: ${JSON.stringify(fetchData)}`);
} catch (error) {
    console.log(`There was an error executing the query: ${error}`)
}
return fetchData;
}

client.connect(async function (err,data) {
if (err) {
    console.log(`There was an error connecting to Cassandra...${err}`)
}
else {
    console.log(`Connected to Cassandra...${data}`);
    const insertQuery = 'INSERT INTO testtable (id,firstname,lastname) VALUES(?,?,?)';
    const insertQueryParams = [1,"Tony","Mathew"];

    const insertQueryResponse = await executeCassandraQuery(insertQuery,insertQueryParams);
    console.log(`insertQueryResponse : ${insertQueryResponse}`);
    const fetchQuery = 'SELECT * FROM employees';
}
});  

在运行上述nodeJS脚本之前,我已经使用以下cql命令创建了“ testdb”键空间和“ testtable”表:

CREATE KEYSPACE testdb WITH replication = {'class': 'SimpleStrategy','replication_factor' : 3};
CREATE TABLE testtable(id int PRIMARY KEY,name text);

解决方法

不,它不是无架构的。

相关答案适用:

In Cassandra,how is it possible to save data in a column name while leaving the column value empty?

相关文本:

不,不再。这曾经是可能的。它需要旧的(3.x之前的存储引擎)并使用基于Thrift的API。但是,使用CQL(和新的存储引擎)构建的表要求所有列都被预先定义,并且不允许在运行时使用它(至少,与Thrift的方式不同)。