With the fast advancement in information technology, database management systems are becoming more and more advanced.
If at the beginning system designers and architects thought that a central control is better for database management, nowadays along with the relatively cheaper hardware, distributed database has become a better choice.
The main purpose of the project is to allow
users to reliably store and synchronize data between their mobile device and
the cloud. When there is not a network connection between the client and
the cloud, the data is stored locally, and when the connection becomes
available, the cloud database is updated accordingly. The database will be
replicated to improve reliability, availability and fault-tolerance. The
communication between clients and the cloud will be made through REST API and
C2DM protocol. Android SDK, Google App Engine and Big Table are the
technologies which will be used to develop this application.
I think the picture below describe clearly the principle of the project.
Google App Engine connected to Android Architecture |
This work will deal with the following problems: how to successfully integrate my system in an environment that allows replication and designing the algorithm for data selection.
It will proceed along the following points:
- Analyze requirements for system storing data inside cloud (or environment allowing replication) allowing mobile devices to load relevant parts of the data. Focus only to database layer and interface.
- Study and describe basic principles of databases and distributed systems.
- Describe the algorithm used for data selection (range or context, etc.)
- Select one DB and document reasons for decision.
- Design system architecture of system.
- Implement solution (DB side).
This is a team project. I'll focus on the server side of the system, the client will be described and developed by my colleague Andreea Sandu.
On the following days I'll describe the Big Table database provided by Google(GAE) and I'll try to develop a small REST Api in Java with the CRUD functionalities.
Until then, "Keep it Simple, Stupid"!