-
Notifications
You must be signed in to change notification settings - Fork 1
views
Max Franks edited this page Jul 21, 2018
·
3 revisions
CREATE CountMinSketch VIEW channel.trends
FROM LOG news.subsilent:posts p
WHERE p.url STARTSWITH "twitter"
WITH OPTIONS {
replication_factor: 3
size: 30
};
USE synapse.lighting;
// Types
CREATE TYPE Voltage WITH deviceid uuid, voltage float64;
CREATE TYPE MonthlyAverageVoltage WITH month int, year int, average float64;
// Voltage Log
CREATE LOG voltages USING TYPE Voltage CLUSTERED BY deviceid;
CREATE AGGREGATE MonthlyAverage() AS monthly.voltages
FROM voltages v
USING TYPE MonthlyAverageVoltage;
SELECT FROM monthly.voltages v WHERE v.deviceid = '123098120398102983';
Functional views need to be able to resume work from a checkpoint. They also need to emit values in order to save state.
USE synapse.lighting;
db.use('synapse.lighting')
SHOW
lists various system details based on user credentials. The information show is for the current namespace;
SHOW NAMESPACES;
SHOW LOGS;
SHOW VIEWS;
SHOW USERS;
SHOW ROLES;
DESCRIBE TYPE Location;
DESCRIBE LOG <name>;
DESCRIBE VIEW <name>;
DESCRIBE ROLE <role>;
DESCRIBE USER <username>;
var Location = db.types('Location') Location.desc();
CREATE ROLE guest FOR NAMESPACE synapse.*;
db.roles.create('synapse.lighting', 'guest');
REMOVE ROLE guest FOR NAMESPACE synapse.*;
db.roles.remove('synapse.lighting', 'guest');
ADD PERMISSIONS insert.log, create.log, drop.log TO ROLE guest ON NAMESPACE synapse.*;
ADD ALL PERMISSIONS TO ROLE guest ON NAMESPACE acme.crates;
var permissions = ['insert.log', 'create.log', 'drop.log']; var ns = namespaces('lighting'); db.roles('guest').addPermissions(permissions);
db.use('synapse.lighting'); db.roles('guest').removePermission('log.drop');
REMOVE PERMISSION log.drop FROM ROLE guest ON NAMESPACE synapse.*;
ADD USER max.franks TO NAMESPACE synapse.lighting WITH ROLE guest;
REMOVE USER max.franks;
REMOVE USER max.franks FROM NAMESPACE acme;
SET PASSWORD FOR USER max.franks TO "synapse";
ADD PUBLIC KEY "..." FOR USER max.franks;
REMOVE PUBLIC KEY "..." FOR USER max.franks;
ADD ROLE guest FOR USER max.franks ON NAMESPACE synapse.*;
REMOVE ROLE guest FOR USER max.franks ON NAMESPACE synapse.*;
ADD API SECRET <hex> FOR ROLE news;
REMOVE API SECRET <hex> FOR ROLE news;
Permissions are applied to a scope. For instance, a namespace and a log or view.
insert.logs
select.logs
create.logs
drop.logs
show.logs
add.users
remove.users
update.users
grant.users
assign.users
show.users
create.roles
delete.roles
update.roles
show.roles
create.views
drop.views
select.views
update.views
show.views
create.namespaces
show.namespaces
drop.namespaces
use.namespaces
GENERATE TOKEN FOR ROLE news USING SALT '...';
Authentication: K <salt>:<role>:<public-hash>;
SUBSCRIBE TO subsilent.news:channels.trending
WHERE channel = 'Volcanoes' LIMIT 30;
SUBSCRIBE TO {...}
FROM subsilent.news:channels.trending
WHERE channel = 'Volcanoes';
UNSUBSCRIBE TO LOG subsilent.news:channels.trending;