-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.sql
71 lines (58 loc) · 1.94 KB
/
script.sql
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
# create logical group of DB objects in DB (pg 241), also change char set
CREATE SCHEMA WEBCRAWL CHARACTER SET UTF8MB4 COLLATE UTF8MB4_BIN;
SET AUTOCOMMIT = 0;
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
# tell mysql which db to use
USE WEBCRAWL;
CREATE TABLE SITE (
SITE_ID BIGINT UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT,
SITE_URL VARCHAR(255) UNIQUE, # make sure the URL is unique
SITE_TITLE VARCHAR(100),
PRIMARY KEY (SITE_ID))
ENGINE = INNODB; # produces transaction - safe tables (pg. 247)
CREATE TABLE WORD (
WORD_ID BIGINT UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT,
WORD_WORD VARCHAR(45) UNIQUE,
PRIMARY KEY (WORD_ID))
ENGINE = INNODB;
CREATE TABLE EXCERPT (
SITE_ID BIGINT UNSIGNED,
WORD_ID BIGINT UNSIGNED, # try adding index here to see if its faster on return...
EXCERPT_WRD_FREQ_SITE FLOAT,
EXCERPT_PHRASE VARCHAR(150),
EXCERPT_WORD VARCHAR(45), #test
PRIMARY KEY (SITE_ID, WORD_ID),
FOREIGN KEY (SITE_ID) REFERENCES SITE(SITE_ID),
FOREIGN KEY (WORD_ID) REFERENCES WORD(WORD_ID))
ENGINE = INNODB;
# store URL
delimiter |
CREATE PROCEDURE PRC_STORE_URL_TTL (IN URL VARCHAR(255), IN TTL VARCHAR(100), OUT UID BIGINT UNSIGNED)
BEGIN
START TRANSACTION;
INSERT INTO SITE (SITE_URL, SITE_TITLE)
VALUES(URL, TTL);
SET UID = LAST_INSERT_ID();
COMMIT;
END |
delimiter ;
# store word
delimiter |
CREATE PROCEDURE PRC_STORE_WORD (IN WORD_S VARCHAR(45), IN UID BIGINT UNSIGNED, IN WFREQ FLOAT, IN PHRASE VARCHAR(150))
BEGIN
DECLARE WID BIGINT UNSIGNED;
DECLARE W_EXISTS INT;
SET W_EXISTS = 0;
START TRANSACTION;
SELECT COUNT(*) INTO @W_EXISTS FROM WORD WHERE WORD_WORD = WORD_S;
IF (@W_EXISTS > 0) THEN
SELECT WORD_ID INTO @WID FROM WORD WHERE WORD_WORD = WORD_S;
ELSE
INSERT INTO WORD (WORD_WORD) VALUES(WORD_S);
SET @WID = LAST_INSERT_ID();
END IF;
INSERT INTO EXCERPT
VALUES(UID, @WID, WFREQ, PHRASE, WORD_S);
COMMIT;
END |
delimiter ;