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: [email protected] [mailto:opensim-dev-
> [email protected]] On Behalf Of Hurliman, John
> Sent: den 21 september 2009 22:05
> To: [email protected]
> 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: [email protected] [mailto:opensim-dev-
> [email protected]] On Behalf Of Hurliman, John
> Sent: Monday, September 21, 2009 12:54 PM
> To: [email protected]
> 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
> [email protected]
> https://lists.berlios.de/mailman/listinfo/opensim-dev
> _______________________________________________
> Opensim-dev mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/opensim-dev

_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev

Reply via email to