Re: Cannot mix counter and non counter columns in the same table
> I agree it makes code messier That's not a trivial point. It isn't just about doing two queries to read. Its also having to do two queries to write and remembering to do that in all the places. On Wed, Nov 2, 2016 at 1:56 AM, Cody Yanceywrote: > I agree it makes code messier, but you aren't really losing anything by > separating them out into separate tables and then doing parallel queries. > > Counter tables already don't support atomic batch operations (all batch > operations are unlogged), CAS operations (LWTs not supported) and have a > whole host of other gotchas that don't apply as much to Cassandra but have > more to do with the mathematical underpinnings of non-idempotent operations > in a world where the Two Generals problem is unsolved. > > If Cassandra WAS to allow mixing of storage paradigms into one "logical" > table it would probably be just two separate tables under the hood anyway > since the write path is so different. > > This isn't Stockholm Syndrome for Cassandra as much as it is Stockholm > Syndrome for databases. I've never used a database that could count very > well, even non-distributed databases like postgres or mysql. Cassandra's > implementation is at least fast and scalable. > > Thanks, > Cody > > On Tue, Nov 1, 2016 at 2:13 PM, Edward Capriolo > wrote: > >> Here is a solution that I have leverage. Ignore the count of the value >> and use a multi-part column name as it's value. >> >> For example: >> >> create column family stuff ( >> rowkey string, >> column string, >> value string. >> counter_to_ignore long, >> primary key( rowkey, column, value)); >> >> >> >> On Tue, Nov 1, 2016 at 9:29 AM, Ali Akhtar wrote: >> >>> That's a terrible gotcha rule. >>> >>> On Tue, Nov 1, 2016 at 6:27 PM, Cody Yancey wrote: >>> In your table schema, you have KEYS and you have VALUES. Your KEYS are text, but they could be any non-counter type or compound thereof. KEYS obviously cannot ever be counters. Your VALUES, however, must be either all counters or all non-counters. The official example you posted conforms to this limitation. Thanks, Cody On Nov 1, 2016 7:16 AM, "Ali Akhtar" wrote: > I'm not referring to the primary key, just to other columns. > > My primary key is a text, and my table contains a mix of texts, ints, > and timestamps. > > If I try to change one of the ints to a counter and run the create > table query, I get the error ' Cannot mix counter and non counter > columns in the same table' > > > On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey wrote: > >> For counter tables, non-counter types are of course allowed in the >> primary key. Counters would be meaningless otherwise. >> >> Thanks, >> Cody >> >> On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: >> >>> In the documentation for counters: >>> >>> https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_count >>> er_t.html >>> >>> The example table is created via: >>> >>> CREATE TABLE counterks.page_view_counts >>> (counter_value counter, >>> url_name varchar, >>> page_name varchar, >>> PRIMARY KEY (url_name, page_name) >>> ); >>> >>> Yet if I try to create a table with a mixture of texts, ints, >>> timestamps, and counters, i get the error ' Cannot mix counter and non >>> counter columns in the same table' >>> >>> Is that supposed to be allowed or not allowed, given that the >>> official example contains a mix of counters and non-counters? >>> >> > >>> >> >
Re: Cannot mix counter and non counter columns in the same table
I agree it makes code messier, but you aren't really losing anything by separating them out into separate tables and then doing parallel queries. Counter tables already don't support atomic batch operations (all batch operations are unlogged), CAS operations (LWTs not supported) and have a whole host of other gotchas that don't apply as much to Cassandra but have more to do with the mathematical underpinnings of non-idempotent operations in a world where the Two Generals problem is unsolved. If Cassandra WAS to allow mixing of storage paradigms into one "logical" table it would probably be just two separate tables under the hood anyway since the write path is so different. This isn't Stockholm Syndrome for Cassandra as much as it is Stockholm Syndrome for databases. I've never used a database that could count very well, even non-distributed databases like postgres or mysql. Cassandra's implementation is at least fast and scalable. Thanks, Cody On Tue, Nov 1, 2016 at 2:13 PM, Edward Capriolowrote: > Here is a solution that I have leverage. Ignore the count of the value and > use a multi-part column name as it's value. > > For example: > > create column family stuff ( > rowkey string, > column string, > value string. > counter_to_ignore long, > primary key( rowkey, column, value)); > > > > On Tue, Nov 1, 2016 at 9:29 AM, Ali Akhtar wrote: > >> That's a terrible gotcha rule. >> >> On Tue, Nov 1, 2016 at 6:27 PM, Cody Yancey wrote: >> >>> In your table schema, you have KEYS and you have VALUES. Your KEYS are >>> text, but they could be any non-counter type or compound thereof. KEYS >>> obviously cannot ever be counters. >>> >>> Your VALUES, however, must be either all counters or all non-counters. >>> The official example you posted conforms to this limitation. >>> >>> Thanks, >>> Cody >>> >>> On Nov 1, 2016 7:16 AM, "Ali Akhtar" wrote: >>> I'm not referring to the primary key, just to other columns. My primary key is a text, and my table contains a mix of texts, ints, and timestamps. If I try to change one of the ints to a counter and run the create table query, I get the error ' Cannot mix counter and non counter columns in the same table' On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey wrote: > For counter tables, non-counter types are of course allowed in the > primary key. Counters would be meaningless otherwise. > > Thanks, > Cody > > On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: > >> In the documentation for counters: >> >> https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html >> >> The example table is created via: >> >> CREATE TABLE counterks.page_view_counts >> (counter_value counter, >> url_name varchar, >> page_name varchar, >> PRIMARY KEY (url_name, page_name) >> ); >> >> Yet if I try to create a table with a mixture of texts, ints, >> timestamps, and counters, i get the error ' Cannot mix counter and non >> counter columns in the same table' >> >> Is that supposed to be allowed or not allowed, given that the >> official example contains a mix of counters and non-counters? >> > >> >
Re: Cannot mix counter and non counter columns in the same table
Here is a solution that I have leverage. Ignore the count of the value and use a multi-part column name as it's value. For example: create column family stuff ( rowkey string, column string, value string. counter_to_ignore long, primary key( rowkey, column, value)); On Tue, Nov 1, 2016 at 9:29 AM, Ali Akhtarwrote: > That's a terrible gotcha rule. > > On Tue, Nov 1, 2016 at 6:27 PM, Cody Yancey wrote: > >> In your table schema, you have KEYS and you have VALUES. Your KEYS are >> text, but they could be any non-counter type or compound thereof. KEYS >> obviously cannot ever be counters. >> >> Your VALUES, however, must be either all counters or all non-counters. >> The official example you posted conforms to this limitation. >> >> Thanks, >> Cody >> >> On Nov 1, 2016 7:16 AM, "Ali Akhtar" wrote: >> >>> I'm not referring to the primary key, just to other columns. >>> >>> My primary key is a text, and my table contains a mix of texts, ints, >>> and timestamps. >>> >>> If I try to change one of the ints to a counter and run the create table >>> query, I get the error ' Cannot mix counter and non counter columns in >>> the same table' >>> >>> >>> On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey wrote: >>> For counter tables, non-counter types are of course allowed in the primary key. Counters would be meaningless otherwise. Thanks, Cody On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: > In the documentation for counters: > > https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html > > The example table is created via: > > CREATE TABLE counterks.page_view_counts > (counter_value counter, > url_name varchar, > page_name varchar, > PRIMARY KEY (url_name, page_name) > ); > > Yet if I try to create a table with a mixture of texts, ints, > timestamps, and counters, i get the error ' Cannot mix counter and non > counter columns in the same table' > > Is that supposed to be allowed or not allowed, given that the official > example contains a mix of counters and non-counters? > >>> >
Re: Cannot mix counter and non counter columns in the same table
Big Fat lol!!! Am 01.11.2016 19:02 schrieb "Ali Akhtar": > ^ Stockholm syndrome :) > > On Tue, Nov 1, 2016 at 10:54 PM, Robert Wille wrote: > >> I used to think it was terrible as well. But it really isn’t. Just put >> your non-counter columns in a separate table with the same primary key. If >> you want to query both counter and non-counter columns at the same time, >> just query both tables at the same time with asynchronous queries. >> >> On Nov 1, 2016, at 7:29 AM, Ali Akhtar wrote: >> >> That's a terrible gotcha rule. >> >> On Tue, Nov 1, 2016 at 6:27 PM, Cody Yancey wrote: >> >>> In your table schema, you have KEYS and you have VALUES. Your KEYS are >>> text, but they could be any non-counter type or compound thereof. KEYS >>> obviously cannot ever be counters. >>> >>> Your VALUES, however, must be either all counters or all non-counters. >>> The official example you posted conforms to this limitation. >>> >>> Thanks, >>> Cody >>> >>> On Nov 1, 2016 7:16 AM, "Ali Akhtar" wrote: >>> I'm not referring to the primary key, just to other columns. My primary key is a text, and my table contains a mix of texts, ints, and timestamps. If I try to change one of the ints to a counter and run the create table query, I get the error ' Cannot mix counter and non counter columns in the same table' On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey wrote: > For counter tables, non-counter types are of course allowed in the > primary key. Counters would be meaningless otherwise. > > Thanks, > Cody > > On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: > >> In the documentation for counters: >> >> https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html >> >> The example table is created via: >> >> CREATE TABLE counterks.page_view_counts >> (counter_value counter, >> url_name varchar, >> page_name varchar, >> PRIMARY KEY (url_name, page_name) >> ); >> >> Yet if I try to create a table with a mixture of texts, ints, >> timestamps, and counters, i get the error ' Cannot mix counter and non >> counter columns in the same table' >> >> Is that supposed to be allowed or not allowed, given that the >> official example contains a mix of counters and non-counters? >> > >> >> >
Re: Cannot mix counter and non counter columns in the same table
^ Stockholm syndrome :) On Tue, Nov 1, 2016 at 10:54 PM, Robert Willewrote: > I used to think it was terrible as well. But it really isn’t. Just put > your non-counter columns in a separate table with the same primary key. If > you want to query both counter and non-counter columns at the same time, > just query both tables at the same time with asynchronous queries. > > On Nov 1, 2016, at 7:29 AM, Ali Akhtar wrote: > > That's a terrible gotcha rule. > > On Tue, Nov 1, 2016 at 6:27 PM, Cody Yancey wrote: > >> In your table schema, you have KEYS and you have VALUES. Your KEYS are >> text, but they could be any non-counter type or compound thereof. KEYS >> obviously cannot ever be counters. >> >> Your VALUES, however, must be either all counters or all non-counters. >> The official example you posted conforms to this limitation. >> >> Thanks, >> Cody >> >> On Nov 1, 2016 7:16 AM, "Ali Akhtar" wrote: >> >>> I'm not referring to the primary key, just to other columns. >>> >>> My primary key is a text, and my table contains a mix of texts, ints, >>> and timestamps. >>> >>> If I try to change one of the ints to a counter and run the create table >>> query, I get the error ' Cannot mix counter and non counter columns in >>> the same table' >>> >>> >>> On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey wrote: >>> For counter tables, non-counter types are of course allowed in the primary key. Counters would be meaningless otherwise. Thanks, Cody On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: > In the documentation for counters: > > https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html > > The example table is created via: > > CREATE TABLE counterks.page_view_counts > (counter_value counter, > url_name varchar, > page_name varchar, > PRIMARY KEY (url_name, page_name) > ); > > Yet if I try to create a table with a mixture of texts, ints, > timestamps, and counters, i get the error ' Cannot mix counter and non > counter columns in the same table' > > Is that supposed to be allowed or not allowed, given that the official > example contains a mix of counters and non-counters? > >>> > >
Re: Cannot mix counter and non counter columns in the same table
I used to think it was terrible as well. But it really isn’t. Just put your non-counter columns in a separate table with the same primary key. If you want to query both counter and non-counter columns at the same time, just query both tables at the same time with asynchronous queries. On Nov 1, 2016, at 7:29 AM, Ali Akhtar> wrote: That's a terrible gotcha rule. On Tue, Nov 1, 2016 at 6:27 PM, Cody Yancey > wrote: In your table schema, you have KEYS and you have VALUES. Your KEYS are text, but they could be any non-counter type or compound thereof. KEYS obviously cannot ever be counters. Your VALUES, however, must be either all counters or all non-counters. The official example you posted conforms to this limitation. Thanks, Cody On Nov 1, 2016 7:16 AM, "Ali Akhtar" > wrote: I'm not referring to the primary key, just to other columns. My primary key is a text, and my table contains a mix of texts, ints, and timestamps. If I try to change one of the ints to a counter and run the create table query, I get the error ' Cannot mix counter and non counter columns in the same table' On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey > wrote: For counter tables, non-counter types are of course allowed in the primary key. Counters would be meaningless otherwise. Thanks, Cody On Nov 1, 2016 7:00 AM, "Ali Akhtar" > wrote: In the documentation for counters: https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html The example table is created via: CREATE TABLE counterks.page_view_counts (counter_value counter, url_name varchar, page_name varchar, PRIMARY KEY (url_name, page_name) ); Yet if I try to create a table with a mixture of texts, ints, timestamps, and counters, i get the error ' Cannot mix counter and non counter columns in the same table' Is that supposed to be allowed or not allowed, given that the official example contains a mix of counters and non-counters?
Re: Cannot mix counter and non counter columns in the same table
That's a terrible gotcha rule. On Tue, Nov 1, 2016 at 6:27 PM, Cody Yanceywrote: > In your table schema, you have KEYS and you have VALUES. Your KEYS are > text, but they could be any non-counter type or compound thereof. KEYS > obviously cannot ever be counters. > > Your VALUES, however, must be either all counters or all non-counters. The > official example you posted conforms to this limitation. > > Thanks, > Cody > > On Nov 1, 2016 7:16 AM, "Ali Akhtar" wrote: > >> I'm not referring to the primary key, just to other columns. >> >> My primary key is a text, and my table contains a mix of texts, ints, and >> timestamps. >> >> If I try to change one of the ints to a counter and run the create table >> query, I get the error ' Cannot mix counter and non counter columns in >> the same table' >> >> >> On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey wrote: >> >>> For counter tables, non-counter types are of course allowed in the >>> primary key. Counters would be meaningless otherwise. >>> >>> Thanks, >>> Cody >>> >>> On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: >>> In the documentation for counters: https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html The example table is created via: CREATE TABLE counterks.page_view_counts (counter_value counter, url_name varchar, page_name varchar, PRIMARY KEY (url_name, page_name) ); Yet if I try to create a table with a mixture of texts, ints, timestamps, and counters, i get the error ' Cannot mix counter and non counter columns in the same table' Is that supposed to be allowed or not allowed, given that the official example contains a mix of counters and non-counters? >>> >>
Re: Cannot mix counter and non counter columns in the same table
In your table schema, you have KEYS and you have VALUES. Your KEYS are text, but they could be any non-counter type or compound thereof. KEYS obviously cannot ever be counters. Your VALUES, however, must be either all counters or all non-counters. The official example you posted conforms to this limitation. Thanks, Cody On Nov 1, 2016 7:16 AM, "Ali Akhtar"wrote: > I'm not referring to the primary key, just to other columns. > > My primary key is a text, and my table contains a mix of texts, ints, and > timestamps. > > If I try to change one of the ints to a counter and run the create table > query, I get the error ' Cannot mix counter and non counter columns in > the same table' > > > On Tue, Nov 1, 2016 at 6:11 PM, Cody Yancey wrote: > >> For counter tables, non-counter types are of course allowed in the >> primary key. Counters would be meaningless otherwise. >> >> Thanks, >> Cody >> >> On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: >> >>> In the documentation for counters: >>> >>> https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html >>> >>> The example table is created via: >>> >>> CREATE TABLE counterks.page_view_counts >>> (counter_value counter, >>> url_name varchar, >>> page_name varchar, >>> PRIMARY KEY (url_name, page_name) >>> ); >>> >>> Yet if I try to create a table with a mixture of texts, ints, >>> timestamps, and counters, i get the error ' Cannot mix counter and non >>> counter columns in the same table' >>> >>> Is that supposed to be allowed or not allowed, given that the official >>> example contains a mix of counters and non-counters? >>> >> >
Re: Cannot mix counter and non counter columns in the same table
I'm not referring to the primary key, just to other columns. My primary key is a text, and my table contains a mix of texts, ints, and timestamps. If I try to change one of the ints to a counter and run the create table query, I get the error ' Cannot mix counter and non counter columns in the same table' On Tue, Nov 1, 2016 at 6:11 PM, Cody Yanceywrote: > For counter tables, non-counter types are of course allowed in the primary > key. Counters would be meaningless otherwise. > > Thanks, > Cody > > On Nov 1, 2016 7:00 AM, "Ali Akhtar" wrote: > >> In the documentation for counters: >> >> https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html >> >> The example table is created via: >> >> CREATE TABLE counterks.page_view_counts >> (counter_value counter, >> url_name varchar, >> page_name varchar, >> PRIMARY KEY (url_name, page_name) >> ); >> >> Yet if I try to create a table with a mixture of texts, ints, timestamps, >> and counters, i get the error ' Cannot mix counter and non counter columns >> in the same table' >> >> Is that supposed to be allowed or not allowed, given that the official >> example contains a mix of counters and non-counters? >> >
Re: Cannot mix counter and non counter columns in the same table
For counter tables, non-counter types are of course allowed in the primary key. Counters would be meaningless otherwise. Thanks, Cody On Nov 1, 2016 7:00 AM, "Ali Akhtar"wrote: > In the documentation for counters: > > https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html > > The example table is created via: > > CREATE TABLE counterks.page_view_counts > (counter_value counter, > url_name varchar, > page_name varchar, > PRIMARY KEY (url_name, page_name) > ); > > Yet if I try to create a table with a mixture of texts, ints, timestamps, > and counters, i get the error ' Cannot mix counter and non counter columns > in the same table' > > Is that supposed to be allowed or not allowed, given that the official > example contains a mix of counters and non-counters? >