My problem is that my composite primary key can change, like shown here :
1 - Root ---> Project 1 --> Cluster 1 ---> Cluser 2 --> Building 1 --> Sensor
2- Root ---> Project 2--> Building 1 --> Sensor 1
3- Root ---> Building 3 --> Sensor 1
4- Root ---> Floor 3 --> Sensor 1
In some graph I don’t have Cluster which means if I have a composite primary
key with ( Root, project , cluster, building, Floot ,sensor) and in some rows I
don’t have floors or in some I don’t have clusters that will be bad, or even
worse if I have a new type like Zone how can I add that , some what I want is
to have all my graph in a field so I can do something like : R1#P1#C1#B2.
So I thought if this is a bad idea or can It work ?
De : Ciureanu Constantin [mailto:ciureanu.constan...@gmail.com]
Envoyé : jeudi 22 septembre 2016 12:57
À : email@example.com
Objet : Re: Primary key with a separator
But Phoenix does this for you (creates a composite key, special separator) -
you just have to specify the PK while creating the table.
CREATE TABLE IF NOT EXISTS us_population (
state CHAR(2) NOT NULL,
city VARCHAR NOT NULL,
CONSTRAINT my_pk PRIMARY KEY (state, city));
Take care that the PK fields will be placed in the HBASE table row keys - and
would dramatically speed up the scans, all other fields would be accessible via
filters (full partition scan) in case you still know a range of keys (use PK
wisely for that).
2016-09-22 10:38 GMT+02:00 AZELMAT Hamza
I’m designing a nosql database with hbase and phoenix, and i was thinking of
making a composite primary key in this form.
HbaseRowKey (path_id,sensor_id,date) and C.Value ( Column Family).
my path_id will be composed like this : R1#P1#C1#B2.
and i was thinking with a SQL request without knowning R1 and P1 and C1 can i
get all Rows with path_id containing B2 with a substring ? will it be very
costly in Phoenix ?
To be more specific this is an iot project and we have use cases like this :
Root ---> Project 1 --> Cluster 1 ---> Cluser 2 --> Building 1 --> Sensor 1
Root ---> Project 2--> Building 1 --> Sensor 1
Root ---> Building 3 --> Sensor 1
Root ---> Floor 3 --> Sensor 1
I May have growing new type of nodes, that’s why I want something flexible in
my composite primary Key , R1 will be the root id, P1 the project with ID 1 etc
So I have requests like getting all sensors data of building with ID 1 with
this kind of conception do you think it’s a costly method ?
I have thought of neo4j but I like the easy of use of phoenix with SQL, also
it’s free of use and open source .
Thank you for your help