phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From AZELMAT Hamza <>
Subject RE: Primary key with a separator
Date Thu, 22 Sep 2016 11:21:15 GMT
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 []
Envoyé : jeudi 22 septembre 2016 12:57
À :
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.


      state CHAR(2) NOT NULL,

      city VARCHAR NOT NULL,

      population BIGINT

      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
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

View raw message