3/26/2020 Assignment 4: Cassandra DB
This assignment will require you to actually create a Cassandra database and run some basic queries on your database. Most importantly, you will gain experience in modeling data in column-oriented way, as done in a Cassandra database.
Objectives
This assignment supports the following objectives:
Explain the CAP Theorem
Create and interact with a Cassandra DB
Details
In this assignment you will create a database for a virtual library. The books from the library can be be ¡°checked out¡± by Users for a fixed period of time.
For this assignment let us assume that books cannot be renewed. A User may check out any number of books at a time. Since the books are eBooks, any number of Users can check out a book at the same time.
The library contains a collection of eBooks. Basic information about each book needs to be stored
Title, primary author, secondary authors (if any), date of first publication, number of pages, publisher, translator (if any)
For non-fiction books, a list of the key topics covered by the book needs to be stored. For works of fiction (including poems, plays, novels, collection of stories), the topic is just ¡®fiction¡¯.
For each book, we also need to store information about when it was checked out by which User.
For each User we need to store certain information
User id, name, phone, address, university affiliation (if any)
Insert at least 3 books, 5 users. The database must contain information about at least 5 check outs of books.
https://courseworks2.columbia.edu/courses/97021/assignments/379015?module_item_id=789659 1/3
3/26/2020 Assignment 4: Cassandra DB
Write the queries below (Obviously, your database must be designed so that it can support these queries):
1. Which books have been checked out since such and such date.
2. Which users have checked out such and such book.
3. How many books does the library have on such and such topic.
4. Which users from Columbia University have checked out books on Machine Learning between this date and that date.
What to submit:
In separate text files:
1. Your database design, which should include the Column Families and what sorts of rows on each Column Family with what sorts of Columns.
2. The code to create the database (Keyspace)
3. The code to populate the database
4. The code for the queries
Assessment
Total 10 points:
The database design: 3 points
Code to create the database (Keyspace): 2 points Code to populate the database: 2 points
Code for the queries: 3 points
Submission
To complete your submission,
1. Click the blue Submit Assignment button at the top of this page. 2. Click the Choose File button, and locate your submission.
3. Feel free to include a comment with your submission.
4. Finally, click the blue Submit Assignment button.
https://courseworks2.columbia.edu/courses/97021/assignments/379015?module_item_id=789659 2/3
3/26/2020 Assignment 4: Cassandra DB
https://courseworks2.columbia.edu/courses/97021/assignments/379015?module_item_id=789659 3/3