Data Sync Tool

Embed Size (px)

Citation preview

  • 8/8/2019 Data Sync Tool

    1/13

    Project Management Client

    (Data Synchronization Tool)

    Abstract

    Data Synchronization Tool uses Google code gear to avail the facility of working

    off line, and providing the data synchronization when connection get reestablish.

    Data Synchronization Tool provides APIs for offline application access and datastorage. These APIs let developers build applications that can run even if the web

    server can't be contacted, and allow those applications to store data offline using

    SQL syntax.

    While working online the single point of failure, a user may face getting

    disconnected or not getting the net access. For this purpose Data Synchronization

    Tool provide the data base schema on the client side by creating a local server andworker pool which make your web applications more responsive by performing

    resource-intensive operations asynchronously. The function of the Google gear in

    this project is providing data synchronization with the server and hence the project

    provides the facility of working offline.

  • 8/8/2019 Data Sync Tool

    2/13

    Existing system

    The existing system is the centralized system in which we have browser which access

    project management tool that is remote server through a network.

    Web browser sends an HTTP request for a file over internet to the web server.

    The web server retrieves the requested file and sends the web pages to web browser.

    The web browser sends multiple HTTP request to the web server.

    As the web server receives the HTTP request for files, the server finds each file and sends

    the files to the browser.

    The web browser takes the original web page files, follows the instructions given by the

    HTML tags in the file to combine the web page and the inserted file content into it web

    document the browser display on screen.

    In the centralized system we dont have the facility to work offline.

  • 8/8/2019 Data Sync Tool

    3/13

    So As such there is no existing system which provides the facility to work offline.

    Problem definition:

    In todays day o day lifes mobility and time management is a biggest concern.

    Mobility:-

    People while traveling are bound to face problems like net disconnection or no access. For

    instance a user while traveling might need to use an application where internet access

    would be the prerequisite. at such a point if no net access is possible then the user will be

    unable to carry out his work.

    Time management:-

    Eg:- in a office if the main server goes down then the application will not run further, for

    instance a BPO can make use of this project for caching the customers contact information

    on local server rather than accessing it every time from the remote server.

    Data Synchronization Tool will help to solve these problems to a great extent.

    Using the PMC user can use his web based application offline while on the move as the

    local server will make the web application run offline. Applications that are more than just

    static files have data that is typically stored on the server. For the application to be useful offline,

    this data must be accessible locally. The Database module provides a relational database forstoring data.

    In Data Synchronization Tool as the database is provided or cached on the clients machine

    (local server) so user need not access the remote server again and again for the same page

    or the database. Hence time is saved and also cost is reduced.

    t

    http://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_database.html
  • 8/8/2019 Data Sync Tool

    4/13

    Key contentsThe first thing you need to run a web application offline is the ability to start it without an

    Internet connection. This is the purpose of theLocal Server module.For a fast introduction to taking web content offline, work through the tutorial Enabling Static

    Files to Work Offline using Gears. You will be introduced to theLocal Server API and the

    manifest file, the key components that cache your application's resources and make it availableoffline.

    Storing User's Data

    Applications that are more than just static files have data that is typically stored on the server.For the application to be useful offline, this data must be accessible locally. TheDatabase

    module provides a relational database for storing data. On the Architecture page you will find a

    discussion of strategies for designing the local storage that your application needs.

    When an offline application reconnects, you will need to synchronize any changes made in the

    local database with the server. There are many different approaches to synchronizing data, andthere is no single perfect approach. The Architecture page describes some strategies for

    synching.An additional feature of the Google Gears database is Full-Text Search, providing a fast way to

    search text within a database file. Read the details here.

    Performance

    When synchronizing large amounts of data, you may find that the database operations begin toaffect the responsiveness of the browser. The Worker Pool allows you to move your database

    operations to the background to keep the browser responsive.

    The Worker Pool is useful for any expensive operations that slow down the UI.

    Google Gears: Enabling Offline Web Applications

    Google Gears is an open source browser extension that lets developers create webapplications that can run offline.

    Features

    Google Gears consists of three modules that address the core challenges in making

    web applications work offline.

    Local ServerCache and serve application resources (HTML, JavaScript, images, etc.)locallyDatabaseStore data locally in a fully-searchable relational databaseWorker PoolMake your web applications more responsive by performing resource-

    http://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/tutorial.htmlhttp://code.google.com/apis/gears/tutorial.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/architecture.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_workerpool.htmlhttp://code.google.com/apis/gears/api_localserver.htmhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_workerpool.htmlhttp://code.google.com/apis/gears/api_workerpool.htmhttp://code.google.com/apis/gears/api_database.htmhttp://code.google.com/apis/gears/api_localserver.htmhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/tutorial.htmlhttp://code.google.com/apis/gears/tutorial.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/architecture.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_workerpool.htmlhttp://code.google.com/apis/gears/api_localserver.htmlhttp://code.google.com/apis/gears/api_database.htmlhttp://code.google.com/apis/gears/api_workerpool.html
  • 8/8/2019 Data Sync Tool

    5/13

    intensive operations asynchronouslyhttp://code.google.com/apis/gears/design.html

    Proposed system

    When you add a local data store to your application, you will have a single place

    through which all data storage and retrieval requests pass.

    http://code.google.com/apis/gears/design.htmlhttp://code.google.com/apis/gears/design.html
  • 8/8/2019 Data Sync Tool

    6/13

    Figure: Data Layer

    For example, if your AJAX application issues a JSON request directly to the server toget all the accounts for a user, you might change this to instead ask an intermediateobject for all the accounts for the user. This object could then decide whether to retrievethe data from the server, the local store, or some combination of both. Similarly, whenthe application wants to update the user's accounts, the app does so by calling theintermediate object. The intermediate object can then decide whether to write the datalocally, whether to send the data to the server and it can schedule synchronization.

    You can think of this intermediate object as a data switch layer that implements thesame interface as the data layer. As a first step, you can make the data switch forwardall your calls to the data layer that interacts with the server. This step is useful since it isthe code path that is followed when Google Gears is not installed or if the user doesn'twant to enable the application to work offline. Note that a data switch is not strictlynecessary (for example Gear Pad does not have a data switch layer).

    If the application is not structured with a data layer and adding a data layer is not anoption, it is still possible to isolate the data layer by intercepting all the calls to the webserver just before they are sent. For example, you could intercept a form submit (listento the submit event) and decide if the application should use the local data store or thedata on the server.

    Implementing this approach involves finding all functions and methods that sendrequests to the server, and rerouting them. The challenge is that this method requires alot of extra work, like parsing URLs, iterating over forms as well as generating the sameresult as the server would. In practice you end up reimplementing large parts of the webserver on the client side. Regardless, this can be a viable option for existing AJAXapplications that can't be otherwise rearchitected.

    Data Synchronization

    No matter which connection and modality strategy you use, the data in the localdatabase will get out of sync with the server data. For example, local data and serverdata get out of sync when:

    The user makes changes while offline

    Data is shared and can be changed by external parties

    Data comes from an external source, such as a feed

  • 8/8/2019 Data Sync Tool

    7/13

    Resolving these differences so that the two stores are the same is called"synchronization". There are many approaches to synchronization and none are perfectfor all situations. The solution you ultimately choose will likely be highly customized toyour particular application.

    Below are some general synchronization strategies.

    Manual Sync

    The simplest solution to synchronization is what we call "manual sync". It's manualbecause the user decides when to synchronize. It can be implemented simply byuploading all the old local data to the server, and then downloading a fresh copy fromthe server before going offline.

    Manual sync requires that:

    The amount of data is small enough to download in a reasonable amount of time.

    The user explicitly indicates when he or she is going offline, typically via a buttonin the user interface.

    The problems with this method and with the offline mode it creates are:

    Users don't always know the state of their network connections. Internetconnections may die unexpectedly or be intermittent, for example, on a bus.

    Users may forget to synchronize before going offline.

    Manual sync can be a good way to get started as it is relatively easy to implement.However, it requires the user to have awareness and involvement in the synching

    process.

    Background Sync

    In background sync", the application continuously synchronizes the data between thelocal data store and the server. This can be implemented by pinging the server everyonce in a while or better yet, letting the server push or stream data to the client (this iscalled Comet in the Ajax lingo).

    The benefits of background synching are:

    Data is ready at all times, whenever the user chooses to go offline, or is

  • 8/8/2019 Data Sync Tool

    8/13

  • 8/8/2019 Data Sync Tool

    9/13

    Characteristics of Scrum

    Aproduct backlogof prioritized work to be done;

    Completion of a fixed set of backlog items in a series of short iterations or sprints;

    A brief daily meeting orscrum, at which progress is explained, upcoming work isdescribed and impediments are raised.

    A briefsprint planning session in which the backlog items for the sprint will bedefined.

    A briefsprint retrospective, at which all team members reflect about the pastsprint.

    Scrum is facilitated by a Scrum Master, whose primary job is to remove impediments tothe ability of the team to deliver the sprint goal. The Scrum Master is not the leader ofthe team (as they are self-organizing) but acts as a buffer between the team and anydistracting influences.

    Scrum enables the creation of self-organizing teams by encouraging co-location of allteam members, and verbal communication across all team members and disciplines

  • 8/8/2019 Data Sync Tool

    10/13

    that are involved in the project.

    A key principle of Scrum is its recognition that fundamentally empirical challengescannot be addressed successfully in a traditional predictive or planned manner. Assuch, Scrum adopts an empirical approach accepting that the problem cannot be fullyunderstood or defined, focusing instead on maximizing the team's ability to deliver

    quickly and respond to emerging requirements.

    Sprint planning

    Prior to every sprint the Product Owner, the Scrum Master and the Team decide whatthe team will work on during the next sprint. The Product Owner maintains a prioritizedlist of backlog items, the product backlog, that can be reprioritized during sprintplanning. The Team selects items from the top of the product backlog. They select onlyas much work as they can commit to finishing. The Team then plans the architectureand design of how the product backlog could be implemented. The product backlogitems are then broken down into tasks that become the sprint backlog.

    Scrum Roles

    Several roles are defined in Scrum; these are divided into two groups; pigs andchickens, based on a joke about a pig and a chicken [1]:A pig and a chicken are walking down a road. The Chicken looks at the pig and says"Hey, why don't we open a restaurant?" The pig looks back at the chicken and says"Good idea, what do you want to call it?" The chicken thinks about it and says "Whydon't we call it 'Ham and Eggs'?" "I don't think so" says the pig, "I'd be committed butyou'd only be involved"So thepigs are committed to building software regularly and frequently, while everyoneelse are chickens that are interested in the project but are really irrelevant because if it

    fails they're not apig, that is they weren't the ones that committed to doing it. Theneeds, desires, ideas and influences of the chicken roles are taken into account, but notin any way letting it affect or distort or get in the way of the actual Scrum project.

    [edit] Pig Roles

    Pigs are the ones committed to the project and the Scrum process; they are the oneswith their bacon on the line.

    [edit] Product Owner

    Represents the voice of the customer to ensure the Scrum Team works with the rightthings from a business perspective.

    [edit] Scrum Master (or Facilitator)Ensure that the Scrum process is used as intended. The Scrum Master is the enforcerof rules and sprints of practice. The master protects the scrum team from impedimentsand distractions

    [edit] Scrum Team

    A small team of 5-9 people with cross-functional skills to do the actual work.

    [edit] Chicken Roles

    http://en.wikipedia.org/wiki/Empiricalhttp://en.wikipedia.org/wiki/Pighttp://en.wikipedia.org/wiki/Chickenhttp://www.scrumforteamsystem.com/ProcessGuidance/Roles/Roles.htmlhttp://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=5http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=6http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=7http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=8http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=9http://en.wikipedia.org/wiki/Empiricalhttp://en.wikipedia.org/wiki/Pighttp://en.wikipedia.org/wiki/Chickenhttp://www.scrumforteamsystem.com/ProcessGuidance/Roles/Roles.htmlhttp://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=5http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=6http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=7http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=8http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=9
  • 8/8/2019 Data Sync Tool

    11/13

    Chicken roles are not part of the actual Scrum process, but must be taken into account.An important aspect of Agile approach is the practice of involving users, business andstakeholders into part of the process. It is important for these people to be engaged andprovide feedback into the outputs for review and planning of each sprint.

    [edit] UsersThe software is being built for someone! Never forget that software that is not used, islike a tree falling in the forest- was it ever written?

    [edit] Stakeholders

    The people that will enable the project, but not directly involved in the process. Thisincludes Executives.

    [edit] Consulting Experts

    These are people that provide expertise that is not required on every sprint. Often thesechickens will become apigas part of the Scrum Team during some sprints.

    Scrum terminology

    Scrum Master: The person or persons in charge of the tracking and the daily updatesfor the scrum (equivalent to a project manager). Sometimes referred to as a ScrumFacilitator.Scrum Team: A cross-functional team (developers, B.A.s, DBAs, and testers)responsible for developing the product.Product Owner: The person responsible for maintaining the Product Backlog viacontinuous interaction with Clients and Stakeholders.Story: A customer focused description of valued functionality.Product Backlog: The stories to be completed.Sprint: A time period (usually 2 to 4 weeks) in which development occurs on a set ofstories that the team has committed to.Burn Down Chart: Daily progress for a sprint over the sprint's length.

    http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=10http://en.wikipedia.org/wiki/If_a_tree_falls_in_a_foresthttp://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=11http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=12http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=10http://en.wikipedia.org/wiki/If_a_tree_falls_in_a_foresthttp://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=11http://en.wikipedia.org/w/index.php?title=Scrum_(development)&action=edit&section=12
  • 8/8/2019 Data Sync Tool

    12/13

    INTRODUCTION TO PROGRAMMING TOOLS

    1. JAVA SCRIPT

    JavaScript is a scripting language most often used forclient-side web development. Itis a dynamic, weakly typed, prototype-based language with first-class functions.

    Currently, "JavaScript" is an implementation of the ECMAScript standard.Despite the name, JavaScript is essentially unrelated to the Java programminglanguage; though both have a common debt to Csyntax. The language was renamedfrom LiveScript in a co-marketing deal between Netscape and Sun in exchange forNetscape bundling Sun's Java runtime with their browser, which was dominant at thetime. The key design principles within JavaScript are inherited from the Selfprogramming language."JavaScript" is a registered trademark ofSun Microsystems, Inc. It was used underlicense for technology invented and implemented by Netscape Communications andcurrent entities such as the Mozilla Foundation.The primary use of JavaScript is to write functions that are embedded in or included

    from HTML pages and interact with the Document Object Model (DOM) of the page.Some simple examples of this usage are: Opening orpopping up a new window with programmatic control over the size,position and 'look' of the new window (i.e. whether the menus, toolbars, etc. are visible). Validation ofweb form input values to make sure that they will be acceptedbefore they are submitted to the server. Changing images as the mouse cursormoves over them: This effect is oftenused to draw the user's attention to important links displayed as graphical elements.

    Because JavaScript runs on the client rather than the server, it can respond to useractions quickly, making an application feel more responsive. Furthermore, JavaScriptcode can detect user actions which HTML alone cannot, such as individual keystrokes.

    2. MY SQL

    MySQL is a multithreaded, multi-userSQLdatabase management system (DBMS)[2]

    which has, according to MySQL AB, more than 10 million installations.[3] The basicprogram runs as a server providing multiuser access to a number of databases.MySQL is owned and sponsored by a single for-profit firm, the Swedish companyMySQL AB, which holds the copyright to most of the codebase. This is similar to theJBoss model. It is dissimilar to the Apache project, where the software is developed by

    http://en.wikipedia.org/wiki/Scripting_languagehttp://en.wikipedia.org/wiki/Client-sidehttp://en.wikipedia.org/wiki/Client-sidehttp://en.wikipedia.org/wiki/Dynamic_languagehttp://en.wikipedia.org/wiki/Weak_typinghttp://en.wikipedia.org/wiki/Prototype-based_programminghttp://en.wikipedia.org/wiki/First-class_functionhttp://en.wikipedia.org/wiki/ECMAScripthttp://en.wikipedia.org/wiki/Java_(programming_language)http://en.wikipedia.org/wiki/Java_(programming_language)http://en.wikipedia.org/wiki/C_(programming_language)http://en.wikipedia.org/wiki/C_(programming_language)http://en.wikipedia.org/wiki/Netscapehttp://en.wikipedia.org/wiki/Self_(programming_language)http://en.wikipedia.org/wiki/Registered_trademarkhttp://en.wikipedia.org/wiki/Sun_Microsystemshttp://en.wikipedia.org/wiki/Mozilla_Foundationhttp://en.wikipedia.org/wiki/HTMLhttp://en.wikipedia.org/wiki/Document_Object_Modelhttp://en.wikipedia.org/wiki/Pop-up_adhttp://en.wikipedia.org/wiki/Validationhttp://en.wikipedia.org/wiki/Form_(web)http://en.wikipedia.org/wiki/Rollover_(web_design)http://en.wikipedia.org/wiki/Thread_(computer_science)http://en.wikipedia.org/wiki/Multi-userhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/Database_management_systemhttp://en.wikipedia.org/wiki/MySQLhttp://en.wikipedia.org/wiki/MySQL_ABhttp://en.wikipedia.org/wiki/MySQLhttp://en.wikipedia.org/wiki/Swedenhttp://en.wikipedia.org/wiki/MySQL_ABhttp://en.wikipedia.org/wiki/JBosshttp://en.wikipedia.org/wiki/Apache_HTTP_Serverhttp://en.wikipedia.org/wiki/Scripting_languagehttp://en.wikipedia.org/wiki/Client-sidehttp://en.wikipedia.org/wiki/Dynamic_languagehttp://en.wikipedia.org/wiki/Weak_typinghttp://en.wikipedia.org/wiki/Prototype-based_programminghttp://en.wikipedia.org/wiki/First-class_functionhttp://en.wikipedia.org/wiki/ECMAScripthttp://en.wikipedia.org/wiki/Java_(programming_language)http://en.wikipedia.org/wiki/Java_(programming_language)http://en.wikipedia.org/wiki/C_(programming_language)http://en.wikipedia.org/wiki/Netscapehttp://en.wikipedia.org/wiki/Self_(programming_language)http://en.wikipedia.org/wiki/Registered_trademarkhttp://en.wikipedia.org/wiki/Sun_Microsystemshttp://en.wikipedia.org/wiki/Mozilla_Foundationhttp://en.wikipedia.org/wiki/HTMLhttp://en.wikipedia.org/wiki/Document_Object_Modelhttp://en.wikipedia.org/wiki/Pop-up_adhttp://en.wikipedia.org/wiki/Validationhttp://en.wikipedia.org/wiki/Form_(web)http://en.wikipedia.org/wiki/Rollover_(web_design)http://en.wikipedia.org/wiki/Thread_(computer_science)http://en.wikipedia.org/wiki/Multi-userhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/Database_management_systemhttp://en.wikipedia.org/wiki/MySQLhttp://en.wikipedia.org/wiki/MySQL_ABhttp://en.wikipedia.org/wiki/MySQLhttp://en.wikipedia.org/wiki/Swedenhttp://en.wikipedia.org/wiki/MySQL_ABhttp://en.wikipedia.org/wiki/JBosshttp://en.wikipedia.org/wiki/Apache_HTTP_Server
  • 8/8/2019 Data Sync Tool

    13/13

    a public community and the copyright to the codebase is owned by its individualauthors.MySQL is popular forweb applications and acts as the database component of theLAMP, MAMP, and WAMP platforms (Linux/Mac/Windows-Apache-MySQL-PHP/Perl/Python), and for open-source bug tracking tools like Bugzilla. Its popularity for

    use with web applications is closely tied to the popularity ofPHP and Ruby on Rails,which is often combined with MySQL. PHP and MySQL are essential components forrunning popularcontent management systems such as WordPress and Drupal bloggingplatforms. Wikipedia runs on MediaWiki software, which is written in PHP and uses aMySQL database.

    HARDWARE AND SOFTWARE REQUIREMENTS.

    Software Requirements:

    Platform: Any browser and any Os.

    Hardware Requirements:

    Min. 2GB Hard Disk.

    512 MB RAM.

    LAN and Internet connection.

    http://en.wikipedia.org/wiki/Web_applicationhttp://en.wikipedia.org/wiki/LAMP_(software_bundle)http://en.wikipedia.org/wiki/Bugzillahttp://en.wikipedia.org/wiki/PHPhttp://en.wikipedia.org/wiki/Ruby_on_Railshttp://en.wikipedia.org/wiki/PHPhttp://en.wikipedia.org/wiki/Content_management_systemhttp://en.wikipedia.org/wiki/WordPresshttp://en.wikipedia.org/wiki/Drupalhttp://en.wikipedia.org/wiki/Wikipediahttp://en.wikipedia.org/wiki/MediaWikihttp://en.wikipedia.org/wiki/Web_applicationhttp://en.wikipedia.org/wiki/LAMP_(software_bundle)http://en.wikipedia.org/wiki/Bugzillahttp://en.wikipedia.org/wiki/PHPhttp://en.wikipedia.org/wiki/Ruby_on_Railshttp://en.wikipedia.org/wiki/PHPhttp://en.wikipedia.org/wiki/Content_management_systemhttp://en.wikipedia.org/wiki/WordPresshttp://en.wikipedia.org/wiki/Drupalhttp://en.wikipedia.org/wiki/Wikipediahttp://en.wikipedia.org/wiki/MediaWiki