Presentation

Download Report

Transcript Presentation

CYBORG
Domain Independent Distributed
Database Retrieval System
Alok Khemka
Kapil Assudani
Kedar Fondekar
Rahul Nabar
Project Goals:

Application Domain Independence

Database Independence

Secure Communication
Application Domain Independence:





Each application domain has it’s own database schema.
Usually database schema used to be hard coded in the
application developed.
Defies Code Reusability: Different applications need to be
developed for different application domain.
Our application tackles this particular problem by
acknowledging itself of the application domain database
schema, dynamically at run time.
Code Reusability: the same application can be run in
different application domains, without worrying about the
application domain database schema.
Database Heterogeneity:




Usually applications are developed with the backend
database type in mind.
Extension of these applications for database type
other than that one developed for, is difficult.
Our application tackles this issue by providing
modular classes, designed mainly to overcome these
sort of problems only.
Stores all the relevant details about a database type
into “Database Parameters” class, abstracting the
details of database type from the rest of the program.
Communication Security:





To prevent the eavesdropping on the transaction details.
Internally the transferred data is still naked, though the
data is converted to common representation format.
All the transaction (starting from connecting to the
database to executing different queries to disconnecting to
the database is encrypted before being transferred over the
net and decrypted afterwards on the other side.
The encryption algorithm used is DES (symmetric key
algorithm) with 64 bit key size.
The SPI used is one from SUN (SUNJCE).
Control Flow Diagram:
Server
Listener
1: The server listener starts and starts listening for the incoming client connection.
Control Flow Diagram:
Server
Listener
1
Client
Process
2
3
Server
Thread
2: As soon as the client goes up, it connects with the main server, the main server spawns a
New thread for servicing the client and all the further communication from the client occurs
to this new Spawned thread.
Control Flow Diagram:
Client GUI
Server
Listener
1 Prompts user for
Id and password
Client
Process
2
Encrypts the id
And password
3
connect
Server
Thread
Security
Engine
3: The client gets the user id and password from the user, encrypts it using the security
engine, sends the id and password to the server to connect to the database.
Control Flow Diagram:
Client GUI
Server
Listener
Populates
7 gui
Client
Process
6 Decrypts
metadata
Security
Engine
5
metadata
2
Server
Thread
Decrypts id
And password
1
4
3
Security
Engine
Database
pool
4: Server decrypts the id and password, connects to all the databases, gets the metadata
from the databases, generates the XML file, encrypts it and sends it back to the client.
5: Client decrypts the metadata, parses the XML file and populates the user gui based on that
metadata.
Control Flow Diagram:
Client GUI
Generates
Sql query 1
10 Populate
gui
Client
Process
Encrypts 2
Sql query
Server
Listener
3
Execute query
Decrypts
9 results
Security
Engine
8
results
Server
Thread
Encrypt 7
result
5
4 Decrypts
query
6
Security
Engine
Database
pool
6: Users queries the database by selecting different gui components. Client process generates
the sql query based on gui components value, encrypts the query and sends it to the server
for execution.
7: server fires the query to the relevant database, gets the result, encrypts the result and
sends it back to the client.
Control Flow Diagram:
Client GUI
Server
Listener
1 disconnect
Client
Process
2
disconnect
Server
Thread
Database
pool
8: when the user is done, s/he disconnects with the server. During disconnection server
closes all the open connection with the database and the client application goes down.
Current Limitations:


The current implementation is developed for Java 1.3 and
the application will not work in a Java 1.4 and above
environments.
The DES is a symmetric key algorithm and puts an extra
overhead of passing the keys to the clients before starting a
session. (the key exchange algorithm is outside the scope
of this application).
Tomorrow never dies …
(future work)


Make provisions for a horizontal split and a vertical split of
tables in database.
Enhance the database query set to accommodate more
queries like delete table, delete record, join table, etc.
Thank You !!!