Appendix E. Hush SQL Schema
Here is the HBase URL Shortener, or Hush, schema expressed in SQL:
CREATE TABLE user ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, username CHAR(20) NOT NULL, credentials CHAR(12) NOT NULL, roles CHAR(10) NOT NULL, // could be a separate table "userroles", but \ for the sake of brevity it is folded in here, eg. "AU" == "Admin,User" firstname CHAR(20), lastname CHAR(30), email VARCHAR(60), CONSTRAINT pk_user PRIMARY KEY (id), CONSTRAINT idx_user_username UNIQUE INDEX (username) ); CREATE TABLE url ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, url VARCHAR(4096) NOT NULL, refShortId CHAR(8), title VARCHAR(200), description VARCHAR(400), content TEXT, CONSTRAINT pk_url (id), ) CREATE TABLE shorturl ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, userId INTEGER, urlId INTEGER, shortId CHAR(8) NOT NULL, refShortId CHAR(8), description VARCHAR(400), CONSTRAINT pk_shorturl (id), CONSTRAINT idx_shorturl_shortid UNIQUE INDEX (shortId), FOREIGN KEY fk_user (userId) REFERENCES user (id), FOREIGN KEY fk_url (urlId) REFERENCES url (id) ) CREATE TABLE click ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, datestamp DATETIME, shortId CHAR(8) NOT NULL, category CHAR(2), dimension CHAR(4), counter INTEGER UNSIGNED, CONSTRAINT pk_clicks (id), FOREIGN KEY fk_shortid (shortId) REFERENCES shortid (id); )
Get HBase: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.