Subject: Equivalent of Row Level Security for HBase


Hi

I'm a Java developer, very new to HBase and could use some directions

I'm working on a project where we have a combination of sparse
data columns (1000's) with added headaches of multi-tenancy/row level
security. Initially the database will be small but in the near/medium
future will expand to millions. Hbase looks great for sparse nature of
the the back end and looks perfect for the expected data load but I
need to check that we can support the customer's
security requirements.

Shared Data
===========
Each record in the table must be secured but it could be multiple
tenants for a record.  Think 'shared' data.

So for example if you had 3 records

record1, some data columns
record2, some data columns, not all shared with record1
record3, some data columns, not all same as 1 and 2

We need
userGroup1 to be able to see record1 and record2
userGroup2 to be able to see record2 and record3

How would you handle this in HBase?  Off the top of my head We could:

1) use a Table per user group and do UNION queries, I have strong
reservations about performance here as a fundamental reason for the
system is to perform aggregations such as averages, standard deviations
etc across the data.  Think userGroups = bunches of
statisticians/scientists. Also the sparse data structure will make
unions problematic I think.

2) 'Row' level security. Can we customise the ACL system to allow the
equivalent of multiple tenants per record?

3) None of the above ?
Best Regards

Simon