I have a few questions regarding the properties of co-processors. I have an application with a workload in which clients may issue put requests of the form:
1. put an entire value (most common, basic put() op)
2. put a subset of a value (not common, attribute holds meta data)
3. multiple puts to a value (very rare, either of the form (1) or (2))
In the vast majority of cases clients interact with entire value blobs. Occasionally cases (2) and (3) are encountered, but are very difficult to handle client-side. So, co-processors seem to offer a building block for optimizing these uncommon cases.
To handle (2) it looks like a RegionServer can use a prePut trigger to do read-copy-update of the entire value, and for (3) as long as the operations are serialized, the type of data we are using are easily combined.
My main question is, what serialization properties exist with respect to triggers to the same row? Further optimizations would also be possible if any put operations to the same row could be handled concurrently be a single trigger instantiation, but I'd settle for serialized access.