SlideShare a Scribd company logo
Versioning system in
Graspeo
Nikita Grishin, EPFL, 02.06.2014
Supervised by Andrii Vozniuk
Motivation
Every document management system
has the versioning.
Motivation
Every document management system
has the versioning.
Various resources from various locations
need to be tracked back
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
State of the art
• 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
• 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.
• Snapshots: new version of document for each
modification
• 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
• 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
• 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
• Hard drive snapshots.
Apple TimeMachine
• Hard drive snapshots.
• Keeps:
• Hourly backups for last 24 hours
Apple TimeMachine
• Hard drive snapshots.
• Keeps:
• Hourly backups for last 24 hours
• Daily backups for the past month
Apple TimeMachine
• 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
• 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
Graspeo versioning system solution
Versioning
Graspeo versioning system solution
Versioning
• Snapshots: new version of item for
each significant modification
Graspeo versioning system solution
Versioning
• Snapshots: new version of item for
each significant modification
• Significant modification is a
modification that needs to be stored
in versions.
• Space: creation of space,
modification in subitems list
• Resource: creation of resource,
modification of its content (resource
replacement)
Graspeo versioning system solution
• Snapshots: new version of item for each
significant modification
• Significant modification is a
modification that needs to be stored in
versions.
• Space: creation of space, modification
in subitems list
• Resource: creation of resource,
modification of its content (resource
replacement)
• Restore a version remains to copy the
content from version document to an item
document. This will automatically create
a new version on the top of versioning
tree.
Versioning
How does it work?
• New collection for versions: easy scalable
How does it work?
• New collection for versions: easy scalable
• Version document is almost a full copy of item
document
How does it work?
• New collection for versions: easy scalable
• Version document is almost a full copy of item
document
• Version creation happens in mongoose post-save
hook
How does it work?
• New collection for versions: easy scalable
• Version document is almost a full copy of item
document
• Version creation happens in mongoose post-save
hook
• The versions controller takes a decision if a new
version is needed (i.e. defining a notion of
significant modification)
How does it work?
• Resources version:
• GridFS to store old file versions
• The last version of file is also stored on local
filesystem because of performance issues with
GridFS and use of BTSync
How does it work?
• Version Schema
• Extends Item schema
• New field called «originId» to track one item
modifications
How does it work?
• Version is created on item creation and on
significant modification
How does it work?
• Version is created on item creation and on
significant modification
• Space:
• Modification of subitems list (subitem created/
removed)
• Resource replacement
How does it work?
• Version is created on item creation and on significant
modification
• Space:
• Modification of subitems list (subitem created/
removed)
• Resource replacement
• Resource:
• Replacement
How does it work?
• Versioning API
• List of versions timestamps
• Version by date
• Restore a chosen version of space
How does it work?
• Version restore
• User asks to restore the version of space for given date
• System looks for that space in items collection and for
its version in versions collection
• Copies subitems list from version to item document
• Removes all items in items collection that are no more in
recovered space
• Recursively restore subitems of that space
How does it work?
• Version restore
• While recursively restoring subitems of space, some of
them can be already removed from items collection. For
that case:
• The system creates a new document in item
collections and fill it with data from version document
• New document = new id: the system fix all path- and
id-related problems
• That is the most expensive part of restoring process
How does it work?
• Version restore: Resource
• Make a restore in database as described above
• Write the asked version of resource to disk
• Regenerate thumbnails for the new resource
content.
How does it work?
• On the user side:
• Version creation is completely transparent
• Version restore is a little bit slow
• On the server side:
• Version creation is asynchronous and with a low load on
database
• Version restore is expensive in terms of time and
database load
Future Plans
Future Plans
• Optimize the version restore process
• Extend the current versioning system to a multiuser
versioning
• Integrate Git with current versioning system for text
files
• Create a movie-style visualization of versioning and
modification tracking
Thank you for your attention
Questions

More Related Content

What's hot

Creating SaltStack State data with Pyobjects
Creating SaltStack State data with PyobjectsCreating SaltStack State data with Pyobjects
Creating SaltStack State data with Pyobjects
Evan Borgstrom
 
Fact-Based Monitoring - PuppetConf 2014
Fact-Based Monitoring - PuppetConf 2014Fact-Based Monitoring - PuppetConf 2014
Fact-Based Monitoring - PuppetConf 2014
Puppet
 
SVC / Storwize: cost effective storage planning (BVQ use case)
SVC / Storwize: cost effective storage planning (BVQ use case)SVC / Storwize: cost effective storage planning (BVQ use case)
SVC / Storwize: cost effective storage planning (BVQ use case)
Michael Pirker
 
Improvements in Bitsy 1.5
Improvements in Bitsy 1.5Improvements in Bitsy 1.5
Improvements in Bitsy 1.5
LambdaZen LLC
 
High Availability from the DevOps side - OpenStack Summit Portland
High Availability from the DevOps side - OpenStack Summit PortlandHigh Availability from the DevOps side - OpenStack Summit Portland
High Availability from the DevOps side - OpenStack Summit Portland
eNovance
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Ahmed El-Arabawy
 
Lifting the Blinds: Monitoring Windows Server 2012
Lifting the Blinds: Monitoring Windows Server 2012Lifting the Blinds: Monitoring Windows Server 2012
Lifting the Blinds: Monitoring Windows Server 2012
Datadog
 
InfluxDB Internals
InfluxDB InternalsInfluxDB Internals
InfluxDB Internals
InfluxData
 
Software Carpentry - Version control slides
Software Carpentry - Version control slidesSoftware Carpentry - Version control slides
Software Carpentry - Version control slides
anpawlik
 
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Masao Fujii
 
Project meniscus
Project meniscusProject meniscus
Project meniscus
Kichul Jung
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
Phill Brown
 
Fast Deployments to Multiple Golang Lambda Functions
Fast Deployments to Multiple Golang Lambda FunctionsFast Deployments to Multiple Golang Lambda Functions
Fast Deployments to Multiple Golang Lambda Functions
Kp Krishnamoorthy
 
Apache development with GitHub and Travis CI
Apache development with GitHub and Travis CIApache development with GitHub and Travis CI
Apache development with GitHub and Travis CI
Jukka Zitting
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
Gaetano Giunta
 
6 git
6 git6 git
Totalsvn Usage And Administration By Gopi
Totalsvn Usage And Administration By GopiTotalsvn Usage And Administration By Gopi
Totalsvn Usage And Administration By Gopi
gopinathkarangula
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
Samnang Chhun
 
HIPP2JIPP - Cologne Jenkins Area Meetup
HIPP2JIPP - Cologne Jenkins Area MeetupHIPP2JIPP - Cologne Jenkins Area Meetup
HIPP2JIPP - Cologne Jenkins Area Meetup
fredg15
 

What's hot (19)

Creating SaltStack State data with Pyobjects
Creating SaltStack State data with PyobjectsCreating SaltStack State data with Pyobjects
Creating SaltStack State data with Pyobjects
 
Fact-Based Monitoring - PuppetConf 2014
Fact-Based Monitoring - PuppetConf 2014Fact-Based Monitoring - PuppetConf 2014
Fact-Based Monitoring - PuppetConf 2014
 
SVC / Storwize: cost effective storage planning (BVQ use case)
SVC / Storwize: cost effective storage planning (BVQ use case)SVC / Storwize: cost effective storage planning (BVQ use case)
SVC / Storwize: cost effective storage planning (BVQ use case)
 
Improvements in Bitsy 1.5
Improvements in Bitsy 1.5Improvements in Bitsy 1.5
Improvements in Bitsy 1.5
 
High Availability from the DevOps side - OpenStack Summit Portland
High Availability from the DevOps side - OpenStack Summit PortlandHigh Availability from the DevOps side - OpenStack Summit Portland
High Availability from the DevOps side - OpenStack Summit Portland
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
 
Lifting the Blinds: Monitoring Windows Server 2012
Lifting the Blinds: Monitoring Windows Server 2012Lifting the Blinds: Monitoring Windows Server 2012
Lifting the Blinds: Monitoring Windows Server 2012
 
InfluxDB Internals
InfluxDB InternalsInfluxDB Internals
InfluxDB Internals
 
Software Carpentry - Version control slides
Software Carpentry - Version control slidesSoftware Carpentry - Version control slides
Software Carpentry - Version control slides
 
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
 
Project meniscus
Project meniscusProject meniscus
Project meniscus
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
Fast Deployments to Multiple Golang Lambda Functions
Fast Deployments to Multiple Golang Lambda FunctionsFast Deployments to Multiple Golang Lambda Functions
Fast Deployments to Multiple Golang Lambda Functions
 
Apache development with GitHub and Travis CI
Apache development with GitHub and Travis CIApache development with GitHub and Travis CI
Apache development with GitHub and Travis CI
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
 
6 git
6 git6 git
6 git
 
Totalsvn Usage And Administration By Gopi
Totalsvn Usage And Administration By GopiTotalsvn Usage And Administration By Gopi
Totalsvn Usage And Administration By Gopi
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
 
HIPP2JIPP - Cologne Jenkins Area Meetup
HIPP2JIPP - Cologne Jenkins Area MeetupHIPP2JIPP - Cologne Jenkins Area Meetup
HIPP2JIPP - Cologne Jenkins Area Meetup
 

Similar to Grasp(eo) versioning system Final presentation

Grasp(eo) versioning system
Grasp(eo) versioning systemGrasp(eo) versioning system
Grasp(eo) versioning system
Nikita Grishin
 
Git
GitGit
Slide set 7 (Source Code Management History Overview) - Copy.pptx
Slide set 7 (Source Code Management History  Overview) - Copy.pptxSlide set 7 (Source Code Management History  Overview) - Copy.pptx
Slide set 7 (Source Code Management History Overview) - Copy.pptx
UTKARSHBHARDWAJ71
 
SVN
SVNSVN
Random House
Random HouseRandom House
Random House
victorlukianchikov
 
Git
GitGit
GIT INTRODUCTION
GIT INTRODUCTIONGIT INTRODUCTION
GIT INTRODUCTION
MohanRaviRohitth
 
Subversion client
Subversion clientSubversion client
Subversion client
rchakra
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
Vikram SV
 
Source-it Version-contol & GIT - floating-lesson
Source-it Version-contol & GIT - floating-lessonSource-it Version-contol & GIT - floating-lesson
Source-it Version-contol & GIT - floating-lesson
Yoram Michaeli
 
Subversion
SubversionSubversion
Subversion
rchakra
 
GIT In Detail
GIT In DetailGIT In Detail
GIT In Detail
Haitham Raik
 
Source version control using subversion
Source version control using subversionSource version control using subversion
Source version control using subversion
Mangesh Bhujbal
 
Source control system SVN, QLIKVIEW & GIT
Source control system SVN, QLIKVIEW & GITSource control system SVN, QLIKVIEW & GIT
Source control system SVN, QLIKVIEW & GIT
Satish C Ayappan
 
L06 a versioning_system_overview
L06 a versioning_system_overviewL06 a versioning_system_overview
L06 a versioning_system_overview
M. Shahzad Mughal
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
PouriaQashqai1
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
atishgoswami
 
Mini git tutorial
Mini git tutorialMini git tutorial
Mini git tutorial
Cristian Lucchesi
 
6421 b Module-13
6421 b Module-136421 b Module-13
6421 b Module-13
Bibekananada Jena
 
Drupal Version Control & File System Basics
Drupal Version Control & File System BasicsDrupal Version Control & File System Basics
Drupal Version Control & File System Basics
Julia Kulla-Mader
 

Similar to Grasp(eo) versioning system Final presentation (20)

Grasp(eo) versioning system
Grasp(eo) versioning systemGrasp(eo) versioning system
Grasp(eo) versioning system
 
Git
GitGit
Git
 
Slide set 7 (Source Code Management History Overview) - Copy.pptx
Slide set 7 (Source Code Management History  Overview) - Copy.pptxSlide set 7 (Source Code Management History  Overview) - Copy.pptx
Slide set 7 (Source Code Management History Overview) - Copy.pptx
 
SVN
SVNSVN
SVN
 
Random House
Random HouseRandom House
Random House
 
Git
GitGit
Git
 
GIT INTRODUCTION
GIT INTRODUCTIONGIT INTRODUCTION
GIT INTRODUCTION
 
Subversion client
Subversion clientSubversion client
Subversion client
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Source-it Version-contol & GIT - floating-lesson
Source-it Version-contol & GIT - floating-lessonSource-it Version-contol & GIT - floating-lesson
Source-it Version-contol & GIT - floating-lesson
 
Subversion
SubversionSubversion
Subversion
 
GIT In Detail
GIT In DetailGIT In Detail
GIT In Detail
 
Source version control using subversion
Source version control using subversionSource version control using subversion
Source version control using subversion
 
Source control system SVN, QLIKVIEW & GIT
Source control system SVN, QLIKVIEW & GITSource control system SVN, QLIKVIEW & GIT
Source control system SVN, QLIKVIEW & GIT
 
L06 a versioning_system_overview
L06 a versioning_system_overviewL06 a versioning_system_overview
L06 a versioning_system_overview
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Mini git tutorial
Mini git tutorialMini git tutorial
Mini git tutorial
 
6421 b Module-13
6421 b Module-136421 b Module-13
6421 b Module-13
 
Drupal Version Control & File System Basics
Drupal Version Control & File System BasicsDrupal Version Control & File System Basics
Drupal Version Control & File System Basics
 

Recently uploaded

Artificial Intelligence, Data and Competition – LIM – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – LIM – June 2024 OECD discussionArtificial Intelligence, Data and Competition – LIM – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – LIM – June 2024 OECD discussion
OECD Directorate for Financial and Enterprise Affairs
 
ASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdfASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdf
ToshihiroIto4
 
Gregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics PresentationGregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics Presentation
gharris9
 
Mẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPoint
Mẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPointMẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPoint
Mẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPoint
1990 Media
 
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij
 
Pro-competitive Industrial Policy – LANE – June 2024 OECD discussion
Pro-competitive Industrial Policy – LANE – June 2024 OECD discussionPro-competitive Industrial Policy – LANE – June 2024 OECD discussion
Pro-competitive Industrial Policy – LANE – June 2024 OECD discussion
OECD Directorate for Financial and Enterprise Affairs
 
XP 2024 presentation: A New Look to Leadership
XP 2024 presentation: A New Look to LeadershipXP 2024 presentation: A New Look to Leadership
XP 2024 presentation: A New Look to Leadership
samililja
 
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Dutch Power
 
Updated diagnosis. Cause and treatment of hypothyroidism
Updated diagnosis. Cause and treatment of hypothyroidismUpdated diagnosis. Cause and treatment of hypothyroidism
Updated diagnosis. Cause and treatment of hypothyroidism
Faculty of Medicine And Health Sciences
 
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
SkillCertProExams
 
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
OECD Directorate for Financial and Enterprise Affairs
 
Carrer goals.pptx and their importance in real life
Carrer goals.pptx  and their importance in real lifeCarrer goals.pptx  and their importance in real life
Carrer goals.pptx and their importance in real life
artemacademy2
 
原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样
原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样
原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样
gpww3sf4
 
Burning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdfBurning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdf
kkirkland2
 
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Dutch Power
 
Competition and Regulation in Professions and Occupations – ROBSON – June 202...
Competition and Regulation in Professions and Occupations – ROBSON – June 202...Competition and Regulation in Professions and Occupations – ROBSON – June 202...
Competition and Regulation in Professions and Occupations – ROBSON – June 202...
OECD Directorate for Financial and Enterprise Affairs
 
Competition and Regulation in Professions and Occupations – OECD – June 2024 ...
Competition and Regulation in Professions and Occupations – OECD – June 2024 ...Competition and Regulation in Professions and Occupations – OECD – June 2024 ...
Competition and Regulation in Professions and Occupations – OECD – June 2024 ...
OECD Directorate for Financial and Enterprise Affairs
 
Tom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issueTom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issue
amekonnen
 
Artificial Intelligence, Data and Competition – OECD – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – OECD – June 2024 OECD discussionArtificial Intelligence, Data and Competition – OECD – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – OECD – June 2024 OECD discussion
OECD Directorate for Financial and Enterprise Affairs
 
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsCollapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Rosie Wells
 

Recently uploaded (20)

Artificial Intelligence, Data and Competition – LIM – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – LIM – June 2024 OECD discussionArtificial Intelligence, Data and Competition – LIM – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – LIM – June 2024 OECD discussion
 
ASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdfASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdf
 
Gregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics PresentationGregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics Presentation
 
Mẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPoint
Mẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPointMẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPoint
Mẫu PPT kế hoạch làm việc sáng tạo cho nửa cuối năm PowerPoint
 
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
 
Pro-competitive Industrial Policy – LANE – June 2024 OECD discussion
Pro-competitive Industrial Policy – LANE – June 2024 OECD discussionPro-competitive Industrial Policy – LANE – June 2024 OECD discussion
Pro-competitive Industrial Policy – LANE – June 2024 OECD discussion
 
XP 2024 presentation: A New Look to Leadership
XP 2024 presentation: A New Look to LeadershipXP 2024 presentation: A New Look to Leadership
XP 2024 presentation: A New Look to Leadership
 
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
 
Updated diagnosis. Cause and treatment of hypothyroidism
Updated diagnosis. Cause and treatment of hypothyroidismUpdated diagnosis. Cause and treatment of hypothyroidism
Updated diagnosis. Cause and treatment of hypothyroidism
 
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
 
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
 
Carrer goals.pptx and their importance in real life
Carrer goals.pptx  and their importance in real lifeCarrer goals.pptx  and their importance in real life
Carrer goals.pptx and their importance in real life
 
原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样
原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样
原版制作贝德福特大学毕业证(bedfordhire毕业证)硕士文凭原版一模一样
 
Burning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdfBurning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdf
 
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
 
Competition and Regulation in Professions and Occupations – ROBSON – June 202...
Competition and Regulation in Professions and Occupations – ROBSON – June 202...Competition and Regulation in Professions and Occupations – ROBSON – June 202...
Competition and Regulation in Professions and Occupations – ROBSON – June 202...
 
Competition and Regulation in Professions and Occupations – OECD – June 2024 ...
Competition and Regulation in Professions and Occupations – OECD – June 2024 ...Competition and Regulation in Professions and Occupations – OECD – June 2024 ...
Competition and Regulation in Professions and Occupations – OECD – June 2024 ...
 
Tom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issueTom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issue
 
Artificial Intelligence, Data and Competition – OECD – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – OECD – June 2024 OECD discussionArtificial Intelligence, Data and Competition – OECD – June 2024 OECD discussion
Artificial Intelligence, Data and Competition – OECD – June 2024 OECD discussion
 
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsCollapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
 

Grasp(eo) versioning system Final presentation

  • 1. Versioning system in Graspeo Nikita Grishin, EPFL, 02.06.2014 Supervised by Andrii Vozniuk
  • 2.
  • 3. Motivation Every document management system has the versioning.
  • 4. Motivation Every document management system has the versioning. Various resources from various locations need to be tracked back
  • 5. 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
  • 7. • 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
  • 8. • 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.
  • 9. • Snapshots: new version of document for each modification
  • 10. • 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
  • 11. • 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
  • 12. • 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
  • 13. • Hard drive snapshots. Apple TimeMachine
  • 14. • Hard drive snapshots. • Keeps: • Hourly backups for last 24 hours Apple TimeMachine
  • 15. • Hard drive snapshots. • Keeps: • Hourly backups for last 24 hours • Daily backups for the past month Apple TimeMachine
  • 16. • 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
  • 17. • 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
  • 18. Graspeo versioning system solution Versioning
  • 19. Graspeo versioning system solution Versioning • Snapshots: new version of item for each significant modification
  • 20. Graspeo versioning system solution Versioning • Snapshots: new version of item for each significant modification • Significant modification is a modification that needs to be stored in versions. • Space: creation of space, modification in subitems list • Resource: creation of resource, modification of its content (resource replacement)
  • 21. Graspeo versioning system solution • Snapshots: new version of item for each significant modification • Significant modification is a modification that needs to be stored in versions. • Space: creation of space, modification in subitems list • Resource: creation of resource, modification of its content (resource replacement) • Restore a version remains to copy the content from version document to an item document. This will automatically create a new version on the top of versioning tree. Versioning
  • 22.
  • 23. How does it work? • New collection for versions: easy scalable
  • 24. How does it work? • New collection for versions: easy scalable • Version document is almost a full copy of item document
  • 25. How does it work? • New collection for versions: easy scalable • Version document is almost a full copy of item document • Version creation happens in mongoose post-save hook
  • 26. How does it work? • New collection for versions: easy scalable • Version document is almost a full copy of item document • Version creation happens in mongoose post-save hook • The versions controller takes a decision if a new version is needed (i.e. defining a notion of significant modification)
  • 27. How does it work? • Resources version: • GridFS to store old file versions • The last version of file is also stored on local filesystem because of performance issues with GridFS and use of BTSync
  • 28. How does it work? • Version Schema • Extends Item schema • New field called «originId» to track one item modifications
  • 29. How does it work? • Version is created on item creation and on significant modification
  • 30. How does it work? • Version is created on item creation and on significant modification • Space: • Modification of subitems list (subitem created/ removed) • Resource replacement
  • 31. How does it work? • Version is created on item creation and on significant modification • Space: • Modification of subitems list (subitem created/ removed) • Resource replacement • Resource: • Replacement
  • 32. How does it work? • Versioning API • List of versions timestamps • Version by date • Restore a chosen version of space
  • 33. How does it work? • Version restore • User asks to restore the version of space for given date • System looks for that space in items collection and for its version in versions collection • Copies subitems list from version to item document • Removes all items in items collection that are no more in recovered space • Recursively restore subitems of that space
  • 34. How does it work? • Version restore • While recursively restoring subitems of space, some of them can be already removed from items collection. For that case: • The system creates a new document in item collections and fill it with data from version document • New document = new id: the system fix all path- and id-related problems • That is the most expensive part of restoring process
  • 35. How does it work? • Version restore: Resource • Make a restore in database as described above • Write the asked version of resource to disk • Regenerate thumbnails for the new resource content.
  • 36. How does it work? • On the user side: • Version creation is completely transparent • Version restore is a little bit slow • On the server side: • Version creation is asynchronous and with a low load on database • Version restore is expensive in terms of time and database load
  • 38. Future Plans • Optimize the version restore process • Extend the current versioning system to a multiuser versioning • Integrate Git with current versioning system for text files • Create a movie-style visualization of versioning and modification tracking
  • 39. Thank you for your attention Questions