<div class="gmail_quote">On Wed, Mar 3, 2010 at 12:04 PM, Yossi Neiman <span dir="ltr">&lt;<a href="mailto:freeswitch@cartissolutions.com">freeswitch@cartissolutions.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
<br>
</div>Maybe it would be even more useful to provide general functionality that<br>
can be shared amongst multiple components of freeswitch.  That would<br>
make it all the more useful.  However, seeing that I&#39;m not a big fan of<br>
the NoSQL data engines, I don&#39;t know if this is possible.  In my<br>
opinion, most NoSQL is just key=&gt;value pairs, and is basically a<br>
reinvention of the wheel that RDBMS&#39;s had taken care of years ago...<br>
Not meaning to open up a discussion about the virtues of NoSQL (and<br>
certainly not a flamewar)...<br>
<font color="#888888"><br></font></blockquote><div><br></div><div>I created a mod_memcache already and I intend to do a mod_redis at some point.  I&#39;m not a huge fan of NoSQL but there are definite uses for it.  <br></div>
<div><br></div><div>General functionality:  I could be convinced to come up with a general api for distributed key/value store with mod_memcache and mod_redis providing implementation.  The problem is that the NoSQL stuff isn&#39;t very consistent so even though both support key/value their behavior can significantly differ.  eg: updating a value in memcached doesn&#39;t bump the expire time but does in redis.  Also, redis has support for a much more robust set of value types and operators.</div>
<div><br></div><div>Anyway, a generic distributed key/value api might look like:</div><div><br></div><div>dhash &lt;backend&gt; set key value [expire]</div><div>dhash &lt;backend&gt; setnx key value [expire]  # only set if it doesn&#39;t already exist</div>
<div>dhash &lt;backend&gt; get key [...] # support multiple keys</div><div>dhash &lt;backend&gt; &lt;increment|decrement&gt; key [step]</div><div>dhash &lt;backend&gt; del key</div><div><br></div><div>where backend would be memcache or redis or some other implementation.</div>
<div><br></div><div>Notice I didn&#39;t even touch things like hashing to support sharding, failover, etc.  </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888">
<br>
Yossi Neiman<br>
Cartis Solutions, Inc. - <a href="http://www.cartissolutions.com" target="_blank">http://www.cartissolutions.com</a><br>
</font><div><div></div><div class="h5"><br></div></div></blockquote></div><br>-- <br>-Rupa<br>