Once upon a time the implication of ‘nosql’ was ‘not SQL’, but these days it
would be more accurate to characterize it as ‘not only SQL’.
‘schemaless’ also can be interpreted a little flexibly. In a relational
database structure, you can think of ‘schema’ (with respect to tables) as
meaning means two things: how a table is structured, and that each row in that
table obeys that structure. In C* and DynamoDB the first notion remains true,
because we declare the structure. However the storage representation is more
fluid so individual rows depend on which attributes have actually been stored;
what the rows contain will obey some part of the schema, but they may not
contain everything that was declared in the schema.
This is a more structured notion than you get with things that are document
stores, e.g. elasticsearch. Those are more schemaless, but sometimes that can
feel like a shell game. You declare indexes based on your expectations, and if
the data doesn’t meet your expectations, you won’t find it. So people work to
make their data meet the expectations. If the data is designed to meet the
expectations and the machinery using it is configured with the expectations,
talking about things being schemaless nudges towards being a word game to hide
something which is trying to behave isomorphically. You can find that you wind
up in a similar place in the end, just with tools that are less computationally
efficient.
From: Russell Spitzer
Reply-To: "user@cassandra.apache.org"
Date: Sunday, December 15, 2019 at 9:53 PM
To: user
Subject: Re: Is cassandra schemaless?
Message from External Sender
Cassandra is not schemaless. Not all nosql databases are schemaless either, the
term is a little outdated since many nosql databases now support some or all of
ansi SQL. Cassandra does not though, just a very limited subset called CQL
On Sun, Dec 15, 2019, 8:04 PM lampahome
mailto:pahome.c...@mirlab.org>> wrote:
I read some difference between nosql and sql, and one obvious differences is
nosql supporting schemaless.
But I try it in cassandra and get result not like that.
Ex:
cqlsh:key> Create table if not exists yo (blk bigint primary key, count int);
cqlsh:key> insert into yo (blk, count, test) values (2,4,'123');
It shows message="Undefined column name test"
So cassandra isn't schemaless?