Skip to content

Instantly share code, notes, and snippets.

@fanktom
Created June 21, 2012 19:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fanktom/2968096 to your computer and use it in GitHub Desktop.
Save fanktom/2968096 to your computer and use it in GitHub Desktop.
Social Database Simulation
/* Create Database */
DROP SCHEMA IF EXISTS `limits`;
CREATE SCHEMA `limits`;
USE `limits`;
/* Create Tables */
DROP TABLE IF EXISTS `limits`.`users`;
DROP TABLE IF EXISTS `limits`.`friends`;
DROP TABLE IF EXISTS `limits`.`statuses`;
CREATE TABLE `limits`.`users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NOT NULL ,
`email` VARCHAR(45) NOT NULL ,
`address` VARCHAR(45) NULL ,
`likes` TEXT NULL ,
`dislikes` TEXT NULL ,
PRIMARY KEY (`id`)
);
CREATE TABLE `limits`.`friends` (
`a` INT NOT NULL ,
`b` INT NOT NULL
);
CREATE TABLE `limits`.`statuses` (
`id` INT NOT NULL AUTO_INCREMENT ,
`user_id` INT NOT NULL ,
`status` VARCHAR(255) NULL ,
PRIMARY KEY (`id`)
);
SET @user_count = 100000;
SET @friend_count = 130;
SET @status_count = @user_count * 100;
SET @total_count = @user_count + (@user_count * @friend_count) + (@user_count * 100);
/* Create Users */
DROP PROCEDURE IF EXISTS create_users;
DELIMITER //
CREATE PROCEDURE create_users()
BEGIN
DECLARE user_count INT DEFAULT (@user_count / 10);
WHILE user_count > 0 DO
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Albert Einstein','albert@einstein.sz','Rue de Suiss 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Dan Leno','dan@leno.com','Broadway 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Giovanni Lusieri','Giovanni@Lusieri.com','Rue de Suiss 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Steve Dodd','steve@dodd.com','Rue de Suiss 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Peter Heywood','peter@gmail.com','Rue de Suiss 4', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Joey Santiago','Joey@Santiago.de','Rue de Suiss 12', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Caroline of Ansbach','Caroline@Ansbach.au','Rue de Suiss 346', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Golding Bird','Golding@gmail.com','Rue de Suiss 245', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Ram Narayan','Ram@Narayan.com','Rue de Bangla 2346', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Katharine Hepburn','Katharine@Hepburn.org','Rue de Suiss 45', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
SET user_count = user_count - 1;
END WHILE;
END;
//
DELIMITER ;
call create_users();
/* Create Friends */
DROP PROCEDURE IF EXISTS create_friends;
DELIMITER //
CREATE PROCEDURE create_friends()
BEGIN
DECLARE friend_count INT DEFAULT @friend_count;
DECLARE user_count INT DEFAULT @user_count;
WHILE user_count > 0 DO
WHILE friend_count > 0 DO
INSERT INTO friends(a, b) VALUES (user_count, ROUND((RAND() * @user_count)));
SET friend_count = friend_count - 1;
END WHILE;
SET friend_count = @friend_count;
SET user_count = user_count - 1;
END WHILE;
END;
//
DELIMITER ;
call create_friends();
/* Create Statuses */
DROP PROCEDURE IF EXISTS create_statuses;
DELIMITER //
CREATE PROCEDURE create_statuses()
BEGIN
DECLARE status_count INT DEFAULT (@status_count / 2);
WHILE status_count > 0 DO
INSERT INTO statuses(user_id, status) VALUES (ROUND((RAND() * @user_count)), 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam');
INSERT INTO statuses(user_id, status) VALUES (ROUND((RAND() * @user_count)), 'Aenean rutrum elit massa, ac lobortis lacus. In nec tellus enim, non blandit sapien. In ullamcorper rhoncus libero non adipiscing. Donec malesuada lacinia urna, eu aliquet tellus tristique sit amet. Donec ut sapien ante, vitae pulvinar sem. Cras ac risus mi. Vivamus in turpis vitae velit aliquet viverra in ut orci.');
SET status_count = status_count - 1;
END WHILE;
END;
//
DELIMITER ;
call create_statuses();
/* Count created resources */
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM statuses;
SELECT COUNT(*) FROM friends;
SELECT @total_count;
/* Requests */
/* Show 200 Statuses from Friends */
SELECT '-> Show 200 Statuses from Friends' AS ' ';
SELECT users.name, statuses.status FROM users, friends, statuses
WHERE
friends.a = 30
AND
users.id = friends.b
AND
users.id = statuses.user_id
LIMIT 200;
/* Count Friends */
SELECT '-> Count Friends' AS ' ';
SELECT count(*) FROM users, friends WHERE friends.a = 86 AND users.id = 86;
/* Show Friends */
SELECT '-> Show Friends' AS ' ';
SELECT users.name, users.email, users.address FROM users, friends
WHERE
friends.a = 56
AND
users.id = friends.b;
/* Show Friends at gmail.com */
SELECT '-> Show Friends at gmail.com' AS ' ';
SELECT users.name, users.email, users.address FROM users, friends
WHERE
friends.a = 43
AND
users.id = friends.b
AND
users.email LIKE '%@gmail.com';
SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment