Well, I am working in gemfire right now(not by choice) but many parallels are the same except my key is not serialized to bytes and I have buckets instead of a sorted map L (very ick there) and I have no indexing library L L, but our multi-tenancy solution is working VERY VERY well and I thought I would share since I bumped into a post on the list from back in June.
Anyways, we basically use gson to serialize from/to entities and each entity annotates whether it is shared between all customers or is customer specific. We scan all those annotations and expose an api on top of hbase which guarantees the multi-tenancy through a CustomerThreadLocal.set/getCustomerId() which basically we set for developers in the top of where the code comes from to begin with. It works extremely well as none of the developers ever touch it. We have the choice of prefixing all keys with the customer thereby collocating customer data or making it a postfix so that load may be shared between customers...all depends on your need really there. Anyways, it seems to work quite well, any time a developer does a put on the api, we throw an exception if the threadlocal is not set saying "platform is missing customer id, contact developer lead". Later, Dean This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.
