From: Rich M. <rd...@cf...> - 2003-05-30 17:14:54
|
The good news about YAML is that I can use it to encode arbitrary data structures (in my case, from Perl). The bad news is that it has to process the entire data structure for any save/restore. In contrast, although Perl's dbmopen() functionality allows me to access a hash immediately, it doesn't handle anything BUT hashes. I wonder if there might be a way to get the best of both worlds: an instantly-available store for arbitrary persistent data. Clues? Comments? Suggestions? -r -- email: rd...@cf...; phone: +1 650-873-7841 http://www.cfcl.com/rdm - my home page, resume, etc. http://www.cfcl.com/Meta - The FreeBSD Browser, Meta Project, etc. http://www.ptf.com/dossier - Prime Time Freeware's DOSSIER series http://www.ptf.com/tdc - Prime Time Freeware's Darwin Collection |
From: Clark C. E. <cc...@cl...> - 2003-05-30 20:47:34
|
Hello Rich. I'm not quite sure I understand your requirement. Basically, for my application, I do something quite simple. Since the top level production for YAML is a sequence of documents separated by three dashes (---) I use this to great effect: 1. The first document in the stream is a serialization of the current 'state' of the document. 2. Remaining documents in the stream are 'changes' to the primary document that have occured since the file was last saved (although I actually store all changes, so the first N have a key "applied: yes"). 3. After I load the object into memory, I open the file in append mode. Before I apply each change to the in-memory 'state', I serialize it to the end of the file. 4. Periodically, I "pack" the YAML file, by saving the current state again. Right now my 'change' format is rather simple, but later on down the road, I was thinking that each 'change transaction' would be a mapping of YPATH expressions onto a replacement for that particular sub-tree. --- initial: document list: - this: is a sequence: of maps - this: is the second: map --- /list/0/sequence : of mappings /initial : starting document When this was 'packed', you get: --- initial: starting document list: - this: is a sequence: of mappings - this: is the second: map Anyway, would this be useful to you? If so, I could probably package it up... Best, Clark On Fri, May 30, 2003 at 10:07:25AM -0700, Rich Morin wrote: | The good news about YAML is that I can use it to encode arbitrary | data structures (in my case, from Perl). The bad news is that it | has to process the entire data structure for any save/restore. | | In contrast, although Perl's dbmopen() functionality allows me to | access a hash immediately, it doesn't handle anything BUT hashes. | I wonder if there might be a way to get the best of both worlds: | an instantly-available store for arbitrary persistent data. |