+++ /dev/null
---
--- Create tables in BitTorrent log analysis database in MySQL.
--- Use indexes for fast access.
---
--- 2011, Mariana Marasoiu, mariana.marasoiu@gmail.com
--- 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
--- - add foreign key support
--- - add indexes
--- - add message_types and peer_status_messages tables
--- - update column types
---
-
-DROP TABLE IF EXISTS btclients;
-DROP TABLE IF EXISTS swarms;
-DROP TABLE IF EXISTS client_sessions;
-DROP TABLE IF EXISTS status_messages;
-DROP TABLE IF EXISTS peer_status_messages;
-DROP TABLE IF EXISTS transfer_directions;
-DROP TABLE IF EXISTS message_types;
-DROP TABLE IF EXISTS verbose_messages;
-
-CREATE TABLE btclients (
- id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
- name VARCHAR(100),
- language VARCHAR(100),
- url VARCHAR(255),
- dht_support BOOLEAN,
- streaming_support BOOLEAN,
- pxe_support BOOLEAN,
- features VARCHAR(1024)
-) ENGINE=InnoDB;
-
-CREATE TABLE swarms (
- id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
- torrent_filename VARCHAR(255),
- data_size UNSIGNED INTEGER,
- description VARCHAR(4096)
-) ENGINE=InnoDB;
-
-CREATE TABLE client_sessions (
- id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
- swarm_id UNSIGNED INTEGER REFERENCES swarms(id) ON DELETE CASCADE ON UPDATE CASCADE,
- btclient_id UNSIGNED INTEGER REFERENCES btclients(id) ON DELETE CASCADE ON UPDATE CASCADE,
- system_os VARCHAR(100),
- system_os_version VARCHAR(100),
- -- system RAM in megabytes
- system_ram UNSIGNED SMALLINT,
- -- system CPU in MHz
- system_cpu UNSIGNED SMALLINT,
- -- beware of IPv6
- public_ip VARCHAR(100),
- public_port UNSIGNED SMALLINT,
- -- KB/s
- ds_limit UNSIGNED INTEGER,
- -- KB/s
- us_limit UNSIGNED INTEGER,
- start_time DATETIME,
- dht_enabled BOOLEAN,
- pxe_enabled BOOLEAN,
- streaming_enabled BOOLEAN,
- features VARCHAR(1024),
- description VARCHAR(4096)
-) ENGINE=InnoDB;
-
-CREATE TABLE status_messages (
- id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
- client_session_id INTEGER REFERENCES client_sessions(id) ON DELETE CASCADE ON UPDATE CASCADE,
- timestamp DATETIME,
- num_peers UNSIGNED SMALLINT,
- num_dht_peers UNSIGNED SMALLINT,
- -- KB/s
- download_speed UNSIGNED INTEGER,
- -- KB/s
- upload_speed UNSIGNED INTEGER,
- -- KB
- download_size UNSIGNED INTEGER,
- -- KB
- upload_size UNSIGNED INTEGER,
- -- seconds
- eta UNSIGNED INTEGER
-) ENGINE=InnoDB;
-
-CREATE TABLE peer_status_messages (
- id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
- client_session_id UNSIGNED INTEGER REFERENCES client_sessions(id) ON DELETE CASCADE ON UPDATE CASCADE,
- timestamp DATETIME,
- -- beware of IPv6
- peer_ip VARCHAR(100),
- peer_port UNSIGNED SMALLINT,
- -- KB/s
- download_speed UNSIGNED INTEGER,
- -- KB/s
- upload_speed UNSIGNED INTEGER
-) ENGINE=InnoDB;
-
-CREATE TABLE transfer_directions (
- id UNSIGNED TINYINT PRIMARY KEY AUTO_INCREMENT,
- value VARCHAR(100) NOT NULL
-) ENGINE=InnoDB;
-
-CREATE TABLE message_types (
- id UNSIGNED TINYINT PRIMARY KEY AUTO_INCREMENT,
- value VARCHAR(100) NOT NULL,
- -- message parameters such as index, begin, length, listen port
- parameters VARCHAR(256) NOT NULL
-) ENGINE=InnoDB;
-
-CREATE TABLE verbose_messages (
- id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
- client_session_id UNSIGNED INTEGER REFERENCES client_sessions(id) ON DELETE CASCADE ON UPDATE CASCADE,
- timestamp DATETIME,
- direction_id UNSIGNED TINYINT REFERENCES transfer_directions(id),
- -- beware of IPv6
- peer_ip VARCHAR(100),
- peer_port UNSIGNED SMALLINT,
- message_type_id UNSIGNED TINYINT REFERENCES message_types(id),
- index UNSIGEND INTEGER,
- begin UNSIGNED INTEGER,
- length UNSIGNED INTEGER,
- listen_port UNSIGNED SMALLINT
-) ENGINE=InnoDB;
-
--- insert BitTorrent clients in `btclients` table
--- FIXME: update INSERT statemets to use new `btclients` schema
-
-INSERT INTO btclients(name, language, dht, streaming)
- VALUES('Tribler', 'Python', 1, 1);
-INSERT INTO btclients(name, language, dht, streaming)
- values('libtorrent-rasterbar', 'C++', 1, 0);
-INSERT INTO btclients(name, language, dht, streaming)
- VALUES('Vuze', 'Java', 1, 1);
-INSERT INTO btclients(name, language, dht, streaming)
- values('Transmission', 'C', 1, 0);
-INSERT INTO btclients(name, language, dht, streaming)
- VALUEs('Aria', 'C', 1, 0);
-INSERT INTO btclients(name, language, dht, streaming)
- VALUES('Mainline', 'Python', 1, 0);
-
---
--- insert into `transfer_directions` table
--- direction = 0 -> receive (from peer)
--- direction = 1 -> send (to peer)
---
-
---
--- insert into `message_types` table
---
-drop table if exists status_messages;
-drop table if exists verbose_messages;
-drop table if exists client_sessions;
-drop table if exists btclients;
-drop table if exists swarms;
+--
+-- Create tables in BitTorrent log analysis database in MySQL.
+-- Use indexes for fast access.
+--
+-- 2011, Mariana Marasoiu, mariana.marasoiu@gmail.com
+-- 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
+-- - add foreign key support
+-- - add indexes
+-- - add message_types and peer_status_messages tables
+-- - update column types
+--
-create table swarms(
- id integer primary key auto_increment,
- torrent text,
- filesize integer check(filesize between 0 and 1000),
- purpose text,
- source text);
+DROP TABLE IF EXISTS btclients;
+DROP TABLE IF EXISTS swarms;
+DROP TABLE IF EXISTS client_sessions;
+DROP TABLE IF EXISTS status_messages;
+DROP TABLE IF EXISTS peer_status_messages;
+DROP TABLE IF EXISTS transfer_directions;
+DROP TABLE IF EXISTS message_types;
+DROP TABLE IF EXISTS verbose_messages;
-create table btclients(
- id integer primary key auto_increment,
- name text,
- language text,
- dht integer check(dht between 0 and 1),
- streaming integer check(streaming between 0 and 1));
+CREATE TABLE btclients (
+ id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
+ name VARCHAR(100),
+ language VARCHAR(100),
+ url VARCHAR(255),
+ dht_support BOOLEAN,
+ streaming_support BOOLEAN,
+ pxe_support BOOLEAN,
+ features VARCHAR(1024)
+) ENGINE=InnoDB;
-create table client_sessions(
- id integer primary key auto_increment,
- swarm_id integer references swarms(id) on delete cascade on update cascade,
- client_id integer references btclients(id) on delete cascade on update cascade,
- system_os text,
- system_os_version text,
- system_ram integer check (system_ram between 0 and 32768),
- system_cpu integer check (system_cpu between 100 and 10000),
- public_ip text,
- public_port integer check (public_port between 1 and 65535),
- ds_limit integer check (ds_limit between 0 and 1000000),
- us_limit integer check (us_limit between 0 and 1000000),
- start_time datetime);
+CREATE TABLE swarms (
+ id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
+ torrent_filename VARCHAR(255),
+ data_size UNSIGNED INTEGER,
+ description VARCHAR(4096)
+) ENGINE=InnoDB;
-create table status_messages (
- cs_id integer references client_sessions(id) on delete cascade on update cascade,
- timestamp datetime,
- peer_num integer check (peer_num between 0 and 100000),
- dht integer check (dht between 0 and 100000),
- download_speed integer check (download_speed between 0 and 1000000),
- upload_speed integer check (upload_speed between 0 and 1000000),
- download_size integer check(download_size between 0 and 100000000000),
- upload_size integer check(upload_size between 0 and 100000000000),
- eta integer);
+CREATE TABLE client_sessions (
+ id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
+ swarm_id UNSIGNED INTEGER REFERENCES swarms(id) ON DELETE CASCADE ON UPDATE CASCADE,
+ btclient_id UNSIGNED INTEGER REFERENCES btclients(id) ON DELETE CASCADE ON UPDATE CASCADE,
+ system_os VARCHAR(100),
+ system_os_version VARCHAR(100),
+ -- system RAM in megabytes
+ system_ram UNSIGNED SMALLINT,
+ -- system CPU in MHz
+ system_cpu UNSIGNED SMALLINT,
+ -- beware of IPv6
+ public_ip VARCHAR(100),
+ public_port UNSIGNED SMALLINT,
+ -- KB/s
+ ds_limit UNSIGNED INTEGER,
+ -- KB/s
+ us_limit UNSIGNED INTEGER,
+ start_time DATETIME,
+ dht_enabled BOOLEAN,
+ pxe_enabled BOOLEAN,
+ streaming_enabled BOOLEAN,
+ features VARCHAR(1024),
+ description VARCHAR(4096)
+) ENGINE=InnoDB;
---
--- direction = 0 -> receive (from peer)
--- direction = 1 -> send (to peer)
---
+CREATE TABLE status_messages (
+ id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
+ client_session_id INTEGER REFERENCES client_sessions(id) ON DELETE CASCADE ON UPDATE CASCADE,
+ timestamp DATETIME,
+ num_peers UNSIGNED SMALLINT,
+ num_dht_peers UNSIGNED SMALLINT,
+ -- KB/s
+ download_speed UNSIGNED INTEGER,
+ -- KB/s
+ upload_speed UNSIGNED INTEGER,
+ -- KB
+ download_size UNSIGNED INTEGER,
+ -- KB
+ upload_size UNSIGNED INTEGER,
+ -- seconds
+ eta UNSIGNED INTEGER
+) ENGINE=InnoDB;
+
+CREATE TABLE peer_status_messages (
+ id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
+ client_session_id UNSIGNED INTEGER REFERENCES client_sessions(id) ON DELETE CASCADE ON UPDATE CASCADE,
+ timestamp DATETIME,
+ -- beware of IPv6
+ peer_ip VARCHAR(100),
+ peer_port UNSIGNED SMALLINT,
+ -- KB/s
+ download_speed UNSIGNED INTEGER,
+ -- KB/s
+ upload_speed UNSIGNED INTEGER
+) ENGINE=InnoDB;
+
+CREATE TABLE transfer_directions (
+ id UNSIGNED TINYINT PRIMARY KEY AUTO_INCREMENT,
+ value VARCHAR(100) NOT NULL
+) ENGINE=InnoDB;
-create table verbose_messages (
- cs_id integer references client_sessions(id) on delete cascade on update cascade,
- timestamp datetime,
- direction integer check(direction between 0 and 1),
- peer_ip text,
- peer_port integer check(peer_port between 1 and 65535),
- message_type integer check (message_type between 0 and 100),
- _index integer check (_index between 0 and 100000),
- begin integer check (begin between 0 and 10000000),
- length integer check (length between 0 and 10000000),
- listen_port integer check(listen_port between 0 and 65535));
+CREATE TABLE message_types (
+ id UNSIGNED TINYINT PRIMARY KEY AUTO_INCREMENT,
+ value VARCHAR(100) NOT NULL,
+ -- message parameters such as index, begin, length, listen port
+ parameters VARCHAR(256) NOT NULL
+) ENGINE=InnoDB;
+
+CREATE TABLE verbose_messages (
+ id UNSIGNED INTEGER PRIMARY KEY AUTO_INCREMENT,
+ client_session_id UNSIGNED INTEGER REFERENCES client_sessions(id) ON DELETE CASCADE ON UPDATE CASCADE,
+ timestamp DATETIME,
+ direction_id UNSIGNED TINYINT REFERENCES transfer_directions(id),
+ -- beware of IPv6
+ peer_ip VARCHAR(100),
+ peer_port UNSIGNED SMALLINT,
+ message_type_id UNSIGNED TINYINT REFERENCES message_types(id),
+ index UNSIGEND INTEGER,
+ begin UNSIGNED INTEGER,
+ length UNSIGNED INTEGER,
+ listen_port UNSIGNED SMALLINT
+) ENGINE=InnoDB;
-- insert BitTorrent clients in `btclients` table
+-- FIXME: update INSERT statemets to use new `btclients` schema
-insert into btclients(name, language, dht, streaming)
- values('Tribler', 'Python', 1, 1);
-insert into btclients(name, language, dht, streaming)
- values('libtorrent', 'C++', 1, 0);
-insert into btclients(name, language, dht, streaming)
- values('Vuze', 'Java', 1, 1);
-insert into btclients(name, language, dht, streaming)
+INSERT INTO btclients(name, language, dht, streaming)
+ VALUES('Tribler', 'Python', 1, 1);
+INSERT INTO btclients(name, language, dht, streaming)
+ values('libtorrent-rasterbar', 'C++', 1, 0);
+INSERT INTO btclients(name, language, dht, streaming)
+ VALUES('Vuze', 'Java', 1, 1);
+INSERT INTO btclients(name, language, dht, streaming)
values('Transmission', 'C', 1, 0);
-insert into btclients(name, language, dht, streaming)
- values('Aria', 'C', 1, 0);
-insert into btclients(name, language, dht, streaming)
- values('Mainline', 'Python', 1, 0);
+INSERT INTO btclients(name, language, dht, streaming)
+ VALUEs('Aria', 'C', 1, 0);
+INSERT INTO btclients(name, language, dht, streaming)
+ VALUES('Mainline', 'Python', 1, 0);
--- .genfkey --exec
+--
+-- insert into `transfer_directions` table
+-- direction = 0 -> receive (from peer)
+-- direction = 1 -> send (to peer)
+--
+
+--
+-- insert into `message_types` table
+--