
Data Aggregation and Visuali-zation for the Torrent Measure-ment Software Kraken
Bachelor Thesis - Final Presentation

Sebastian Schrepfer
Overview
-
Introduction
-
Design
-
Architecture & Implementation
-
Evaluation
-
Demonstration
live slides: http://goo.gl/yxVrC4
Introduction
How does the worldwide distribution of torrent downloads look like on 2014-09-15?
SELECT country_iso_code,
COUNT(*) AS observed_peers
FROM
(SELECT PEERS.IP_ADDRESS AS ip_address,
PEERS.COUNTRY AS country_iso_code,
ANNOUNCE_RESULT.INFO_HASH AS info_hash
FROM `kraken-master`.ANNOUNCE_RESULT,
`kraken-master`.PEERS
WHERE ANNOUNCE_RESULT.ID = PEERS.ID
AND DATE(ANNOUNCE_RESULT.TIMESTAMP) = '2014-09-15'
GROUP BY PEERS.IP_ADDRESS) AS peers
GROUP BY country_iso_code
ORDER BY observed_peers DESC;
Query time with limited dataset: ~12s
country_iso_code | observed_peers
---------------------------------
ES | 2302
IT | 2038
AR | 689
RU | 633
PH | 598
US | 521
CL | 349
CN | 332
MX | 312
GB | 283
PK | 254
IN | 253
BR | 241
SA | 208
CA | 178
AU | 177
CO | 154
FR | 125
AE | 120
UA | 112
DO | 108
TW | 94
JP | 84
|
... | ...


And how many people from within Switzerland were downloading in movie torrent networks on 2014-09-15?

Design
Modules

Mobile Optimization

Architecture &
Implementation
Architecture

Data Aggregation
18.12.2014 | Prisoners | 100.5.5.5 | CH
18.12.2014 | Prisoners | 92.21.1.4 | DE
18.12.2014 | Prisoners | 100.5.5.5 | CH
18.12.2014 | Prisoners | 81.1.1.5 | CH
18.12.2014 | Prisoners | 100.5.5.5 | CH
18.12.2014 | Prisoners | 100.5.5.5 | CH
18.12.2014 | Prisoners | 100.5.5.5 | CH
18.12.2014 | Taxi | 81.1.1.5 | CH
18.12.2014 | Taxi | 92.21.1.4 | DE
18.12.2014 | Taxi | 92.21.1.4 | DE
18.12.2014 | Taxi | 1.23.3.55 | FR
18.12.2014 | Taxi | 1.23.3.55 | FR
18.12.2014 | Taxi | 92.21.1.4 | DE
18.12.2014 | Taxi | 92.21.1.4 | DE
18.12.2014 | Prisoners | 100.5.5.5 | CH
18.12.2014 | Prisoners | 92.21.1.4 | DE
18.12.2014 | Prisoners | 81.1.1.5 | CH
18.12.2014 | Taxi | 81.1.1.5 | CH
18.12.2014 | Taxi | 92.21.1.4 | DE
18.12.2014 | Taxi | 1.23.3.55 | FR
18.12.2014 | Prisoners | CH | 2
18.12.2014 | Prisoners | DE | 1
18.12.2014 | Taxi | CH | 1
18.12.2014 | Taxi | DE | 1
18.12.2014 | Taxi | FR | 1
18.12.2014 | CH | 2
18.12.2014 | DE | 1
18.12.2014 | FR | 1
SPECIFIC INFORMATION
GENERIC INFORMATION
KRAKEN CORE DB
Technologies
Sass
Compass
HTML5
CSS3
C3.js
moment.js
jQuery
D3.js
Maven
Ant
JSP
MySQL
Jave EE
Tomcat
normalize.css
Module Pattern
BUILD
BACK-END
FRONT-END: JS
FRONT-END
Evaluation
Usability Evaluation
Context Questions
SUS Questions
Demographic Questions
SUS Questions
-
10 simple questions (postive/negative alternating)
-
Technology agnostic: applicable for multiple technologies
-
SUS Score can be calculated with provided algorithm
-
SUS Score is highly reliable
-
According to study: score of 71.4 is «good».

70.94
Demographic Questions

Demonstration
Modules

Modules

Modules


Data Aggregation and Visuali-zation for the Torrent Measure-ment Software Kraken
Bachelor Thesis - Final Presentation

Sebastian Schrepfer
Appendix
Data Aggregation: SQL
DELIMITER $$
CREATE EVENT `CREATE_DAILY_STATISTICS`
ON SCHEDULE EVERY 1 DAY STARTS '2014-09-30 00:03:00'
DO BEGIN
-- yesterday's date
SET @QUERYDATE = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY));
INSERT INTO `kraken-statistics`.statistics_peers
(ip_address, country_iso_code, info_hash, date)
(SELECT PEERS.IP_ADDRESS AS ip_address,
PEERS.COUNTRY AS country_iso_code,
ANNOUNCE_RESULT.INFO_HASH AS info_hash,
@QUERYDATE AS date
FROM `kraken-master`.ANNOUNCE_RESULT,
`kraken-master`.PEERS
WHERE ANNOUNCE_RESULT.ID = PEERS.ID
AND DATE(ANNOUNCE_RESULT.TIMESTAMP) = @QUERYDATE
GROUP BY PEERS.IP_ADDRESS,
ANNOUNCE_RESULT.INFO_HASH);
INSERT INTO `kraken-statistics`.statistics_torrentmeta
(observed_peers, max_swarm_size, seeder_quota, info_hash, date)
(SELECT observed_peers,
max_swarm_size,
seeder_quota,
table1.info_hash,
date
FROM (
SELECT MAX(TOTAL_PEERS) AS max_swarm_size,
AVG(SEEDERS/TOTAL_PEERS) AS seeder_quota,
INFO_HASH AS info_hash,
@QUERYDATE AS date
FROM `kraken-master`.`ANNOUNCE_RESULT`
WHERE ANNOUNCE_COMPLETED = 1
AND DATE(TIMESTAMP) = @QUERYDATE
GROUP BY INFO_HASH
) AS table1, (
SELECT COUNT(*) AS observed_peers,
info_hash AS info_hash
FROM `kraken-statistics`.statistics_peers
WHERE date = @QUERYDATE
GROUP BY info_hash
) AS table2
WHERE table1.info_hash = table2.info_hash);
INSERT INTO `kraken-statistics`.statistics_torrents
(info_hash, title, filesize, publish_date)
(SELECT INFO_HASH AS info_hash,
TORRENT_TITLE AS title,
TORRENT_SIZE_KB AS filesize,
DATE(PUBLISH_DATE) AS publish_date
FROM `kraken-master`.TORRENTS
WHERE INFO_HASH NOT IN (
SELECT info_hash
FROM `kraken-statistics`.statistics_torrents)
AND INFO_HASH IN (
SELECT info_hash
FROM `kraken-statistics`.statistics_torrentmeta
WHERE date = @QUERYDATE));
END $$
DELIMITER ;Module Pattern
kraken.systemstatus = ( function($, moment, d3, errorHandling) {
"use strict";
var servletUrl = null;
function convertTimestamp(timestamp) {
[...]
}
function init(servletUrlNew) {
servletUrl = servletUrlNew;
[...]
}
[...]
return {
init: init
};
}(jQuery, moment, d3, kraken.errorHandling));
Bachelor Thesis Final Presentation
By S.S.
Bachelor Thesis Final Presentation
- 653