Memory conserving versioning of an electronic document
Memory conserving versioning of an electronic document is provided. Client versioning factors are analyzed by a client versioning engine and server versioning factors are analyzed by a server versioning engine for determining when an electronic document should be stored as a new version. Accordingly, new versions of an electronic document are only created when determined to be sufficiently important, thus reducing the amount of memory required for increased version payload.
1. A computer-implemented method for memory conserving versioning of an electronic document, comprising:
receiving, at a server, client edits to the electronic document;
analyzing, by the server, a plurality of server memory conserving versioning factors for determining whether to save the client edits as a new version of the electronic document, wherein at least one of the plurality of server memory conserving versioning factors is based on an amount of storage available to a particular client user or group of client users, and at least one of the plurality of server memory conserving versioning factors is based on a difficulty level of reproducing the client edits;
generating a derived value based on the server memory conserving versioning factors;
generating a versioning score at a client versioning analyzer based on the derived value and the client edits, and comparing the versioning score to a threshold versioning score; and
in response to the versioning score meeting or exceeding the threshold versioning score:
generating a new version identifier for the electronic document; and
saving the client edits to a storage repository using the new version identifier.
2. The computer-implemented method of claim 1 , wherein receiving client edits to the electronic document comprises receiving an update request from a client, and wherein the update request is a request for the server to update the electronic document with the client edits.
3. The computer-implemented method of claim 2 , wherein receiving the update request from the client comprises receiving an update request comprising a client request to save the client edits as a new version of the electronic document.
4. The computer-implemented method of claim 3 , wherein receiving an update request comprising a client request to save the client edits as a new version of the electronic document is in response to analyzing, by the client, a plurality of client memory conserving versioning factors.
5. The computer-implemented method of claim 4 , wherein analyzing the plurality of client memory conserving versioning factors comprises:
deriving a value for each of the plurality of client memory conserving versioning factors;
generating a versioning score based on the derived values;
comparing the versioning score against a versioning threshold score; and
when the versioning score meets or exceeds the versioning threshold score, determining that a new version of the electronic document should be created.
6. The computer-implemented method of claim 5 , wherein deriving a value for each of the plurality of client memory conserving versioning factors comprises deriving a value for at least one of:
a time interval client memory conserving versioning factor;
an edit size client memory conserving versioning factor;
an edit type client memory conserving versioning factor; and
an application-dependent edit type client memory conserving versioning factor.
7. The computer-implemented method of claim 5 , further comprising including the versioning score in the client request to save the client edits as a new version of the electronic document.
8. The computer-implemented method of claim 7 , wherein analyzing, by the server, the plurality of server memory conserving versioning factors comprises:
deriving a value for each of the plurality of server memory conserving versioning factors;
generating a versioning score based on the derived values;
comparing the versioning score against a versioning threshold score; and
when the versioning score meets or exceeds the versioning threshold score, determining that a new version of the electronic document should be created.
9. The computer-implemented method of claim 8 , wherein deriving a value for each of the plurality of server memory conserving versioning factors comprises deriving a value for at least one of:
a client version request memory conserving versioning factor;
a save time interval server memory conserving versioning factor;
a version time interval server memory conserving versioning factor; and
a storage server memory conserving versioning factor.
10. The computer-implemented method of claim 9 , wherein deriving a value for the client version request memory conserving versioning factor comprises deriving a value based on the client-generated versioning score.
11. The computer-implemented method of claim 1 , wherein in response to a negative determination, saving the client edits to a current version of the electronic document.
12. The computer-implemented method of claim 1 , further comprising:
determining whether at least one additional client is concurrently editing the electronic document; and
in response to a positive determination, generating and transmitting an update notification to the at least one additional client, wherein the update notification provides a notification to the at least one additional client that the electronic document has been updated with client edits.
13. The computer-implemented method of claim 12 , wherein the update notification provides a notification to the at least one additional client that the client edits have been saved to a new version of the electronic document.
14. A system for memory conserving versioning of an electronic document, comprising:
one or more processors for executing programmed instructions;
memory, coupled to the one or more processors, for storing program instruction steps for execution by the computer processor; and
a server memory conserving versioning engine comprising:
a server document synchronizer operative to receive a client-generated update request including client edits to the electronic document; and
a server memory conserving versioning analyzer that analyzes a plurality of server memory conserving versioning factors for determining whether to save the client edits as a new version of the electronic document, and that generates a derived value based on the server memory conserving versioning factors and generates a versioning score based on the derived value and the client edits, and compares the versioning score to a threshold versioning score wherein at least one of the plurality of server memory conserving versioning factors is based on an amount of storage available to a particular client user or group of client users and at least one of the plurality of server memory conserving versioning factors is based on a difficulty level of reproducing the client edits; and
a server document versioner operative to:
in response to the versioning score begin less than the threshold versioning score:
generate a new version identifier for the electronic document; and
save the client edits to a storage repository using the new version identifier; and
in response to the versioning score meeting or exceeding the threshold versioning score, save the client edits to a current version of the electronic document.
15. The system of claim 14 , wherein the client-generated update request includes a client request to save the client edits as a new version of the electronic document.
16. The system of claim 15 , wherein the client request to save the client edits as a new version of the electronic document is included in the update request in response to an analysis performed by a client memory conserving versioning analyzer, the client memory conserving versioning analyzer operative to:
derive a value for each of the plurality of client memory conserving versioning factors;
generate a versioning score based on the derived values;
compare the versioning score against a versioning threshold score; and
when the versioning score meets or exceeds the versioning threshold score, determine that a new version of the electronic document should be created.
17. The system of claim 16 , wherein in deriving a value for each of the plurality of client memory conserving versioning factors, the client memory conserving versioning analyzer is operative to derive a value for at least one of:
a time interval client memory conserving versioning factor;
an edit size client memory conserving versioning factor;
an edit type client memory conserving versioning factor; and
an application-dependent edit type client memory conserving versioning factor.
18. The system of claim 14 , wherein in analyzing a plurality of server memory conserving versioning factors, the server memory conserving versioning analyzer is operative to:
derive a value for each of the plurality of server memory conserving versioning factors;
generate a versioning score based on the derived values;
compare the versioning score against a versioning threshold score; and
when the versioning score meets or exceeds the versioning threshold score, determine that a new version of the electronic document should be created.
19. The system of claim 18 , wherein in deriving a value for each of the plurality of server memory conserving versioning factors, the server memory conserving versioning analyzer is operative to derive a value for at least one of:
a client version request memory conserving versioning factor based on a client-generated versioning score;
a save time interval server memory conserving versioning factor;
a version time interval server memory conserving versioning factor; and
a storage server memory conserving versioning factor.
20. A non-transitory computer readable medium containing computer executable instructions which, when executed by a computer, perform a method for memory conserving versioning of an electronic document, the method comprising:
receiving a client-generated update request including client edits to the electronic document and a client request to save the client edits as a new version of the electronic document;
deriving a value for each of a plurality of server memory conserving versioning factors, wherein at least one of the plurality of server memory conserving versioning factors is based on an amount of storage available to a particular client user or group of client users and wherein at least one of the plurality of server memory conserving versioning factors is based on a difficulty level of reproducing the client edits;
generating a versioning score based on the derived values and the client edits;
comparing the versioning score against a versioning threshold score; and
in response to the versioning score meeting or exceeding the versioning threshold score:
determining that a new version of the electronic document should be created;
generating a new version identifier for the electronic document; and
saving the client edits to a storage repository using the new version identifier; and
in response to the versioning score not meeting or exceeding the versioning threshold score, saving the client edits to a current version of the electronic document.