I think something that has emerged a lot in the last year is the scalability properties of key-value stores. You can get them up to gigantic sized databases fairly efficiently; definitely more so than a conventional DB. It would however be nice if we could get some kind of struct format for serialising/deserialising data and knowing how to decode it implicitly. (XML, JSON?)
Adam > -----Original Message----- > From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev- > boun...@lists.berlios.de] On Behalf Of Stefan Andersson > Sent: Monday, 21 September 2009 10:36 PM > To: opensim-dev@lists.berlios.de > Subject: Re: [Opensim-dev] Thoughts on adding a generic key-value > storage system to OpenSim? > > John, > > I'm not a big fan of tall/skinny untyped string/string storage, as I > believe > that approach always come back to bite you in the ass in the end. Adam > F did > propose the same thing a year ago, and I was against it then as well. > > Since then, my stance has softened somewhat, as there hasn't really > emerged > any other option than nhibernate (but still, wouldn't that be an > option?) > > If you can just turn string GetValue(string context, string key) into > > bool TryGetValue(string context, string key, out string value) > > embracing the Try pattern, I'm 0 on it. > > I'm presuming that you're going to implement a behind-the-scene > module-unique identifier also, so modules don't clash on context? I > would > suggest having an IGenericDataStore factory that produces handlers that > are > private to the modules. > > /Stefan > > > -----Original Message----- > > From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev- > > boun...@lists.berlios.de] On Behalf Of Hurliman, John > > Sent: den 21 september 2009 22:05 > > To: opensim-dev@lists.berlios.de > > Subject: Re: [Opensim-dev] Thoughts on adding a generic key-value > > storage system to OpenSim? > > > > Formatting got messed up, that should have looked like this: > > > > // returns true if the key was found and data was updated, otherwise > > false if a new key row was added > > bool AddOrUpdateKeyValue(string context, string key, string value); > > > > // returns true if the key was found and deleted > > bool DeleteKeyValue(string context, string key); > > > > // returns the string value if the key was found, otherwise null > > string GetValue(string context, string key); > > > > -----Original Message----- > > From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev- > > boun...@lists.berlios.de] On Behalf Of Hurliman, John > > Sent: Monday, September 21, 2009 12:54 PM > > To: opensim-dev@lists.berlios.de > > Subject: [Opensim-dev] Thoughts on adding a generic key-value storage > > system to OpenSim? > > > > A lot of the work going into OpenSim recently has been modularizing > the > > codebase and making it easy for third party developers to write > > plugins. One feature that I think would really complete the picture > > would be a (simple) generic data storage interface that leveraged the > > existing OpenSim storage framework. Most plugins I've seen (and > wrote) > > currently tack on their own database tables, use a simple text file > > with a custom format, or use some other means of data storage that > does > > not match up with the rest of OpenSim. Adding a new database table > that > > had three columns: [context, key, value] would allow plugins to store > > key/value mappings (string to string) without worrying about data > > collisions between plugins or having to implement a custom data store > > every time. > > > > // returns true if the key was found and data was updated, otherwise > > false if a new key row was added > > bool AddOrUpdateKeyValue(string context, string key, string value); > > // returns true if the key was found and deleted > > bool DeleteKeyValue(string context, string key); > > // returns the string value if the key was found, otherwise null > > string GetValue(string context, string key); > > > > Although I've been writing extensions for the OpenSim codebase for > > quite a while, I'm still fairly new to the guts of the system. Does > > this seem like the correct solution? If so, where would this > interface > > go? I'm happy to write the code to implement this, I just want > feedback > > from the dev community first to see if I'm on track. > > > > John > > _______________________________________________ > > Opensim-dev mailing list > > Opensim-dev@lists.berlios.de > > https://lists.berlios.de/mailman/listinfo/opensim-dev > > _______________________________________________ > > Opensim-dev mailing list > > Opensim-dev@lists.berlios.de > > https://lists.berlios.de/mailman/listinfo/opensim-dev > > _______________________________________________ > Opensim-dev mailing list > Opensim-dev@lists.berlios.de > https://lists.berlios.de/mailman/listinfo/opensim-dev _______________________________________________ Opensim-dev mailing list Opensim-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/opensim-dev