我正在使用 apache Kudu 实现大数据系统。初步要求如下:
- 支持多租户
- 前端将使用 Apache Impala JDBC 驱动程序来访问数据。
- 客户将在 Kudu 上为分析用例编写 Spark 作业。
由于 Kudu 不支持多租户 OOB,所以我可以想到以下方式来支持多租户。
方法:
每个表都有tenantID 列,所有租户的所有数据都将存储在具有相应tenantID 的同一个表中。
将 Kudu 表映射为 Impala 中的外部表。为这些表创建视图,并为每个租户使用 where 子句,例如
CREATE VIEW IF NOT EXISTS cust1.table AS SELECT * FROM table WHERE tenantid = 'cust1';
Customer1 将访问表 cust1.table 以使用 impala JDBC 驱动程序或 Spark 访问 cust1 的数据。Customer2 将访问表 cust2.table 以访问 cust2 的数据等。
问题:
- 这是实现多租户的可接受方式还是有更好的方法(可能与其他外部服务一起使用)
- 如果以这种方式实现,我如何限制 customer2 访问 Kudu 中的 cust1.table,尤其是当客户出于分析目的编写自己的 spark 作业时。