Cross-client memcached compatibility

dormando dormando at rydia.net
Mon Feb 11 06:35:31 UTC 2008


Tomash Brechko wrote:
> On Sun, Feb 03, 2008 at 15:59:31 +0300, Tomash Brechko wrote:
>> I see your and Aaron's point, agree, with my proposal it's impossible
>> to use two different serialization methods.
> 
> Just realized that there's a simple proof why you don't need a
> separate "native" flag for this purpose.  I'm not sure how this math
> method is called in English, when in order to prove something is
> false, you first assume that the proposition is true, and come to a
> contradiction.
> 
> Here it is: assume we have a separate "native" flag.  When client is
> somehow signalled to use native serialization (instead of the user
> hook), it executes "native" serializer, and rises "native" flag.  Now
> what if the client gets the data from the memcached with "native" flag
> set?  May it call native deserialization routine?  It's obvious that
> it may not do that in general case, because the data could be produced
> by the client for _another_ language in its "native" mode.  While
> deserialization will likely to fail in this case, there's a tiny but
> scary chance that it will succeed.  So it follows that if the
> application is designed correctly, in "native" mode it reads only the
> keys that are known to be produced in the same environment (with the
> same "native" serializer, likely by the same client).  But if we know
> that a particular key is native to our environment, then there's no
> point to have a separate "native" flag, single "serialized" flag means
> would tell everything.  EOD.
> 
> 
> If the user would want to use several serialization formats, she would
> have to use some prefix to encode the info on the used format.  And it
> seems it can't be made compatible with prefix-unaware clients.

Just to note that I'm not ignoring this. I have no constructive input
past this point :) Have you tried implementing any of this yet?

-Dormando



More information about the memcached mailing list