I have a table like this in CQL3
create table product_info
(
key text,
value text,
Primary key (key)
);
It is a vertical table . Since I can insert new rows with (key , value ) pair.
Sample data will be :
product_info
key | value
-------------------------------------------
product_name | sample_product
quantity | 2
manufacture | sample_manufacturer
.... ....
But what I need is a horizontal table , where I could able to add columns dynamically without altering the table.
product_info
product_name | quantity | manufacture | ....
------------------------------------------------------------------------------
sample_product | 2 | sample_manufacturer | ....
I need the structure like the above table , need to keep on add the columns on the fly.
CQL3 provides an option to add columns dynamically , but before that we need to alter the table.
I need to know is there any other method which allows this.
I found that by using thrift api it is possible, but since thrift is not more supported , can not use that.
Is there any other API like hector or anything else supporting this ?
I did go through the similar stack overflow posts , but I didn't get a better solution.
You can add a column in the table by using the ALTER command. While adding column, you have to aware that the column name is not conflicting with the existing column names and that the table is not defined with compact storage option.
SuperColumn. A super column is a special column, therefore, it is also a key-value pair. But a super column stores a map of sub-columns. Generally column families are stored on disk in individual files.
Cassandra allows 2 billion columns per row.
A column family is a database object that contains columns of related data. It is a tuple (pair) that consists of a key–value pair, where the key is mapped to a value that is a set of columns. In analogy with relational databases, a column family is as a "table", each key-value pair being a "row".
CREATE TABLE product_info(
product_name text,
key text,
value text,
PRIMARY KEY (product_name, key)
);
Now you can insert up to 2B k/v pairs because the key is now the clustering column.
INSERT INTO product_info (product_name, key, value)
VALUES ('iPhone 6', 'quantity', '2');
INSERT INTO product_info (product_name, key, value)
VALUES ('iPhone 6', 'manufacturer', 'Apple');
INSERT INTO product_info (product_name, key, value)
VALUES ('iPhone 6', 'quantity', '2');
INSERT INTO product_info (product_name, key, value)
VALUES ('iPhone 6', 'another column name', 'another column value');
However, you did not specify your query access patterns, so this data model may be totally wrong (or ok) for your application.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With