Project_Transaction.pdf

CSC383 Programming Project

C o n fl i c t S e r i a l i z a b i l i t y i n

T r a n s a c t i o n s .

College of Computer and Information Sciences

King Saud University

S p r i n g 2 0 1 8

1 Introduction

A transaction, in the context of a database, is a logical unit that is independently executed for data retrieval or updates. In

relational databases, database transactions must be atomic, consistent, isolated and durable--summarized as the ACID

acronym. Two schedules are conflict-equivalent if one can be reached from the other through a series of swaps of adjacent

operations, where no swap falls into one of the following patterns:

 the operations are by the same transaction

 the operations use the same database element, and at least one is a write

A schedule is conflict-serializable if it is conflict-equivalent to some serial schedule.

Your goal in this project is to implement a Conflict Serializable Checker with two basic operations: test for conflict

Serializability and draw a simple precedence graph. Your program should be linked with a main program in-order to test

its functionality. Note: you should choose the appropriate data structure for the program.

2 Requirements In this project you are required to implement a Conflict Serializable Checker to fulfill the

following requirements:

1. Read the size of the schedule from the user.

2. The program takes a schedule from the user in this form: : "r1x", "r2z", "r1z", "r3y",

"r3y",...

The first instruction “r1x” means: r = read, 1 = the transaction, x is the element

Let x be an arbitrary instruction, then:

x[0]: can take the form of r (read) or w (write) to set the operation

x[1]: can take the form of 1,2,3,...,n to set the transaction

x[2]: can take the form of a,b,c,...,z to set the element

3. Test for conflict Serializability.

4. Draw a simple precedence graph

3 Deliverable and Rules

The submission deadline is 07/05/2018 at 12:00 PM before the final Exam, you

should deliver:

1. A report written.

2. T h e Source code on a CD.

You have to read and follow the following rules:

1. This assignment is to be conducted by groups of exactly three students.

2. The students can implement their own data structures; use Java collections, or

any other library to achieve assignment’s requirements.

3. Every group member should participate in all parts of the assignment: de-

signing, programming, and writing the program and report. Members of the same

group may receive different marks according to their participation in the work.

4. The submitted program will be evaluated in a demonstration which all the group

members should attend.

5. Any member of the group who fails to attend the demonstration without a

proper excuse shall receive 0 in the demo mark.

6. In accordance with the university regulation, cheating in the project will be

penalized by the mark 0 in the project.

4 Appendix 1. Create a schedule: String[] schedule = {"r1x", "r2z", "r1z", "r3y", "r3y", "w1x", "w3y",

"r2y", "w2z", "w2y"};

2. Create an instance of Schedule: Schedule obj = new Schedule(schedule);

3. Can call one of three methods: o obj.getSchedule(): returns the schedule

o obj.precedenceGraph(): returns a graphical representation of the precedence graph

o obj.conflictSerializable(): returns information on the schedule

Input: String[] schedule = {"r1x", "r2z", "r1z", "r3y", "r3y", "w1x", "w3y", "r2y", "w2z", "w2y"};

Schedule obj = new Schedule(schedule);

System.out.println(obj.getSchedule());

System.out.println(obj.precedenceGraph());

System.out.println(obj.conflictSerializable());

Output: //getSchedule()

r1x, r2z, r1z, r3y, r3y, w1x, w3y, r2y, w2z, w2y,

//precedenceGraph()

3 -> 2

1 -> 2

//conflictSerializable()

Is Schedule Conflict-Serializable: True, Schedule is acyclic, thus it's conflict serializable.