yats.git

ref: 34e888df1bac1f38c5783c2fa746819f2d10853f

schema/schema.cql


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
CREATE KEYSPACE yats WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'}  AND durable_writes = true;
CREATE TABLE metric (
    id_client text,
    mtime timestamp,
    name text,
    value text,
    PRIMARY KEY ((id_client,name),mtime)
);
CREATE TABLE event (
    id_client text,
    etime timestamp,
    name text,
    PRIMARY KEY (id_client,etime)
);
CREATE TABLE client (
 id text,
 name text,
 created timestamp,
 PRIMARY KEY(id)
);
CREATE TABLE metric_info (
    id_client text,
    name text,
    description text,
    PRIMARY KEY (id_client,name)
);
CREATE TABLE position (
    id_client text,
    ptime timestamp,
    lat double,
    lon double, 
    name text,
    PRIMARY KEY (id_client,ptime)
);
CREATE TABLE sources (
    id_client text,
    name text,
    type text,
    app text,
    description text,
    PRIMARY KEY (id_client,app,type,name)
);
CREATE INDEX ON sources(id_client);

CREATE TABLE location (
    hash text,
    lname text,
    lon double,
    lat double,
    code text,
    cdist double,
    PRIMARY KEY (code,cdist)
);
CREATE TABLE location_label (
    hash text,
    ltype text,
    name text,
    PRIMARY KEY (ltype,hash)
);

// select * from location where lat='' and lon=''
// select * from location where ltype='' and code='' order by cdist
CREATE TABLE location (
    ltype text,
    code text,
    cdist double,
    hash text,
    lat double,
    lname text,
    lon double,
    PRIMARY KEY ((ltype, code), cdist)
)

use case:
1) actual fixed locations ---> index with H3 + precision (or maidenhead + precision)
2) position points on a path with id_client and optionally a timestamp : no space partitioning
select * from location where hash='x'
select * from position where id_user='x' and timestamp>'x'

CREATE TABLE position (
    id_client text,
    ptime timestamp,
    lat double,
    lon double,
    name text,
    PRIMARY KEY (id_client,ptime)
);