Differences From:
File
ideas.txt
part of check-in
[f73c0e792b]
- More work on tags and properties. Getting late. Need to check-in
changes before stopping for the day...
by
drh on
2007-09-22 02:22:06.
[view]
To:
File
ideas.txt
part of check-in
[43b33702b4]
- Minor updates to the todo.txt and ideas.txt files.
by
drh on
2007-09-24 12:55:42.
Also file
ideas.txt
part of check-in
[b8cc22ebdf]
- Merged dhr's todo and ideas update
by
jnc on
2007-09-24 23:56:25.
[view]
@@ -49,108 +49,17 @@
attachment: UUID name description
* Header ends with a blank line. wiki content follows.
-Cluster format:
-
- M+ uuid
- Z manifest-cksum
-
- * Cluster generated in server mode only.
- * Embargo cluster that reference phantoms or other embargoed clusters.
- * Never send or ihave an embargoed cluster
-
-New sync algorithm based on clusters:
-
- * Keep a table of unclustered artifacts. Strive to keep this table
- less than 100 entries.
- * Client sends content of unclustered table as ihaves to server
- * Server builds a new cluster if size of cluster table >100.
- * Server sends unclustered table to client
- * Server sends gimme for all unknown ihave received from client
- * Client sends gimme for all unknown ihave received from server
- * Previous two steps repeat until no more gimmes
-
-Details of new push algorithm:
-
- * Table "unsent" contains all files never pushed
- * TEMP table "wanted" contains files the server does not have
- Loop:
- * Client sends login and "push" record
- * Client sends file message for all files in unsent and removes
- those files from the table.
- * Client sends file message for all files in wanted.
- * Client sends ihave messages for each entry in unclustered
- ------
- * Server receives file message
- * Server creates phantoms for unknown ihaves
- * Server sends gimme messages for all phantoms
- ------
- * Client clears its unsent table
- * For each gimme message add an entry to wanted
- * Halt if the wanted table is empty
-
-Details on new pull algorithm:
-
- Loop:
- * Client sends login and "pull" record
- * Client sends "prior" message with repository id and max record number
- * Client sends "gimme" for each phantom
- --------
- * Server creates new clusters to get unclustered size below 100
- * If there is "prior" message with repository id that matches this
- server, then send file messages for all record ids greater than
- prior
- * Server sends ihave messages for each entry in unclustered
- * Server sends maxrid message
- --------
- * Client receives file records
- * Client creates phantoms for unknown ihaves
- * If no phantoms exist, record maxrid for the server and halt
-
Need a dephantomize algorithm
-Auxiliary tables needed for new sync algorithm:
-
- * unsent: files that have never been sent to another repository
- * unclustered: non-phantom files not mentioned by a cluster
-
-Random thoughts:
-
- * Changes to manifest to support:
- + Trees of wiki pages and tickets
- + The ability to cap or close a branch
- + See "Extended Manifests" below
-
- * Add the concept of "clusters" to speed the transfer of "tips"
- on a sync.
-
- * Auxiliary tables:
- + tip
- + phantom
- + mlink
- + plink
- + branch
- + tree
+Random thoughts:
* Plink.isprim changed to record:
+ child is the principal descendent of parent. (1)
+ child is a branch from parent (2)
+ child uses parent as a merge (0)
-
- * tree records
- + type (code, wiki, ticket)
- + name (for wiki and ticket only)
- + treeid
-
- * branch records
- + treeid
- + origin_rid
- + origin_time
- + tip_rid
- + tip_time
- + color
* website can toggle isprim between principal and branch.
+ How to preserve across rebuild. A new record type?
+ How to share with other repositories