|Consortium Solutions Middleware Forge MyObjectWeb|
RUBBoS: Bulletin Board Benchmark
RUBBoS is a bulletin board benchmark modeled after an online news forum like Slashdot. We originally considered using the Perl-based Slashcode, which is freely available, but we concluded that the code was too complex to serve as a benchmark. Instead, we implemented the essential bulletin board features of the Slashdot site in PHP. In particular, as in Slashcode, we support discussion threads. A discussion thread is a logical tree, containing a story at its root and a number of comments for that story, which may be nested. Users have two different levels of authorized access: regular user and moderator. Regular users browse and submit stories and comments. Moderators in addition review stories and rate comments.
We provide a PHP and a Java Servlets implementation of RUBBoS. Download.
The main tables in the database are the users, stories, comments, and submissions tables. The users table contains each user?s real name and nickname, contact information (email), password, level of authorized access, and rating. The stories table contains each story?s title and body, the nickname of the story?s author, the date the story was posted, the number of comments at the outermost nesting level, and the category the story fits under. The categories table contains the same categories as the Slashdot site. The comments table contains the comment?s subject and body, the nickname of the comment?s author, the date the comment was posted, the identifier of the story or the parent comment it belongs to, and a comment rating. Each submitted story is initially placed in the submissions table, unless submitted by a moderator. We maintain a moderator_log table, which stores the moderator ratings for comments. Regular user ratings are computed based on the ratings of the comments they have posted.
For efficiency reasons, we split both the stories and comments tables into separate new and old tables. In the new stories table we keep the most recent stories with a cut-off of one month. We keep old stories for a period of two years. The new and old comments tables correspond to the new and old stories respectively. The majority of the browsing requests are expected to access the new stories and comments tables, which are much smaller and therefore much more efficiently accessible. A daemon is activated periodically to move stories and comments from the new to the old tables as appropriate.
We generate the story and comment bodies with words from a given dictionary and lengths between 1KB and 8KB. Short stories and comments are much more common, so we use a Zipf-like distribution for story length. The database contains 2 years of stories and comments. We use an average of 15 to 25 stories per day and between 20 and 50 comments per story, as we observed on Slashdot. We emulate 500,000 total users, out of which 10% have moderator access privilege. With these parameters, the database size is 439MB. We also created a larger database of 1.4GB containing more old stories and comments. The results are very similar as the majority of the requests access the new stories and comments.
To initialize the RUBBoS database, you have to get the data files and then the script RUBBoS/database/load.sql that is contained in the RUBBoS distribution. Note that you have to modify the load.sql file with your paths to the data files.
Copyright © 1999-2005, ObjectWeb Consortium | contact | webmaster | Last modified at 2005-02-22 06:23 PM