grasp(eo) versioning system

39

Upload: nikita-grishin

Post on 04-Jul-2015

42 views

Category:

Social Media


2 download

DESCRIPTION

Final semester project presentation

TRANSCRIPT

Page 1: Grasp(eo) versioning system

Versioning system in Graspeo

Nikita Grishin, EPFL, 17.04.2014 Supervised by Andrii Vozniuk

Page 2: Grasp(eo) versioning system
Page 3: Grasp(eo) versioning system

Motivation

Every document management system has the versioning.

Page 4: Grasp(eo) versioning system

Motivation

Every document management system has the versioning.

Various resources from various locations need to be tracked back

Page 5: Grasp(eo) versioning system

Motivation

Every document management system has the versioning.

Various resources from various locations need to be tracked back

The collaborators system implies the recovery system

Page 6: Grasp(eo) versioning system

State of the art

Page 7: Grasp(eo) versioning system

• Mercurial, SVN/CVS!

• On document change, only modifications are saved

• Easy to track modifications

• Difficult to recover old versions

• Git

• On file change, new version of file is created

• Easy to recover old versions

• Difficult to track modifications

Page 8: Grasp(eo) versioning system

• Mercurial, SVN/CVS!

• On document change, only modifications are saved

• Easy to track modifications

• Difficult to recover old versions

• Git

• On file change, new version of file is created

• Pointer to the last version

• Easy to recover old versions

• Difficult to track modifications

Only for text documents.

Works very bad with media content.

Page 9: Grasp(eo) versioning system

• Snapshots: new version of document for each modification

Page 10: Grasp(eo) versioning system

• Snapshots: new version of document for each modification

• Recovering the older version: creates a copy of the asked version on the top of the last version

Page 11: Grasp(eo) versioning system

• Snapshots: new version of document for each modification

• Recovering the older version: creates a copy of the asked version on the top of the last version

• Some old versions can be removed by Google in case of lack of space

Page 12: Grasp(eo) versioning system

• Snapshots: new version of document for each modification

• Recovering the older version: creates a copy of the asked version on the top of the last version

• Some old versions can be removed by Google in case of lack of space

• Only users that can edit the document can see its modification history

Page 13: Grasp(eo) versioning system

• Hard drive snapshots.

Apple TimeMachine

Page 14: Grasp(eo) versioning system

• Hard drive snapshots.

• Keeps:

• Hourly backups for last 24 hours

Apple TimeMachine

Page 15: Grasp(eo) versioning system

• Hard drive snapshots.

• Keeps:

• Hourly backups for last 24 hours

• Daily backups for the past month

Apple TimeMachine

Page 16: Grasp(eo) versioning system

• Hard drive snapshots.

• Keeps:

• Hourly backups for last 24 hours

• Daily backups for the past month

• Weekly backups until your backup drive is full.

Apple TimeMachine

Page 17: Grasp(eo) versioning system

• Hard drive snapshots.

• Keeps:

• Hourly backups for last 24 hours

• Daily backups for the past month

• Weekly backups until your backup drive is full.

• When your backup drive is full, TimeMachine removes old backups to free space.

Apple TimeMachine

Page 18: Grasp(eo) versioning system

Graspeo versioning system solution

Versioning

Page 19: Grasp(eo) versioning system

Graspeo versioning system solution• Snapshots: new version of item for

each modification

Versioning

Page 20: Grasp(eo) versioning system

Graspeo versioning system solution• Snapshots: new version of item for

each modification

• Any modification in Space generates a new version of Space and of all its parents

Versioning

Page 21: Grasp(eo) versioning system

Graspeo versioning system solution• Snapshots: new version of item for

each modification

• Any modification in Space generates a new version of Space and of all its parents

• Each file modification creates a new version of that file

Versioning

Page 22: Grasp(eo) versioning system

Graspeo versioning system solution• Snapshots: new version of item for

each modification

• Any modification in Space generates a new version of Space and of all its parents

• Each file modification creates a new version of that file

• File or Space removing affects only space. The file itself stays in the database

Versioning

Page 23: Grasp(eo) versioning system

Graspeo versioning system solution• Snapshots: new version of item for

each modification

• Any modification in Space generates a new version of Space and of all its parents

• Each file modification creates a new version of that file

• File or Space removing affects only space. The file itself stays in the database

• Recover the old version remains to clone it and put on the top of versions tree

Versioning

Page 24: Grasp(eo) versioning system
Page 25: Grasp(eo) versioning system

How does it work?• Each item has two new fields: originId and version

Page 26: Grasp(eo) versioning system

How does it work?• Each item has two new fields: originId and version

• OriginId: id of the first version of item. It is used to track the item modifications during the time. Is the same for all versions of the item

Page 27: Grasp(eo) versioning system

How does it work?• Each item has two new fields: originId and version

• OriginId: id of the first version of item. It is used to track the item modifications during the time. Is the same for all versions of the item

• Version: Value indicating the version number of the item.

Page 28: Grasp(eo) versioning system

How does it work?• Each item has two new fields: originId and version

• OriginId: id of the first version of item. It is used to track the item modifications during the time. Is the same for all versions of the item

• Version: Value indicating the version number of the item.

• Path value represents now the logical path: it is constructed of originId values (not id).

Page 29: Grasp(eo) versioning system

How does it work?• Each item has two new fields: originId and version

• OriginId: id of the first version of item. It is used to track the item modifications during the time. Is the same for all versions of the item

• Version: Value indicating the version number of the item.

• Path value represents now the logical path: it is constructed of originId values (not id).

• So now a query on path will return all children of all versions of the item.

Page 30: Grasp(eo) versioning system

How does it work?• New version of item contains the same data that the previous

version, except id and version fields:

• id field is completely new and unique

• version field is incremented by 1

Page 31: Grasp(eo) versioning system

How does it work?• New version of item contains the same data that the previous

version, except id and version fields:

• id field is completely new and unique

• version field is incremented by 1

• Parents are updated recursively:

• New version of parent is created

• Subitems array of parent’s new version document is updated in order to remove an id of previous version child

Page 32: Grasp(eo) versioning system

How does it work?• GridFS is implemented in order to store all files versions.

• Every version of each file is stored in GridFS with its unique id

• Resource document has a field gfsId that references to the file in GridFS

Page 33: Grasp(eo) versioning system

How does it work?• GridFS is implemented in order to store all files versions.

• Every version of each file is stored in GridFS with its unique id

• Resource document has a field gfsId that references to the file in GridFS

• On the file system, only the last version of file is present.

• When file’s version is updated, old version is removed from file system storage and is replaced by the new version from GridFS

• Motivation: BitTorrent Sync, performance

Page 34: Grasp(eo) versioning system

Future PlansSemester project deadline: 06.06.2014

Page 35: Grasp(eo) versioning system

Future Plans• Implement versioning while removing items (end of this week)

Page 36: Grasp(eo) versioning system

Future Plans• Implement versioning while removing items (end of this week)

• Create API for versions recovery (end of April)

Page 37: Grasp(eo) versioning system

Future Plans• Implement versioning while removing items (end of this week)

• Create API for versions recovery (end of April)

• Create a front-end for versioning

Page 38: Grasp(eo) versioning system

Future Plans• Implement versioning while removing items (end of this week)

• Create API for versions recovery (end of April)

• Create a front-end for versioning

• Implement versioning while using BTSync

Page 39: Grasp(eo) versioning system

Thank you for your attentionQuestions